/home/devscfvi/DevsQuantum/app/Http/Controllers/NewsletterController.php
<?php

namespace App\Http\Controllers;

use App\Models\Newsletter;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\NewslettersExport;
use Symfony\Component\HttpFoundation\StreamedResponse;

class NewsletterController extends Controller
{
    // Frontend form submission
    public function subscribe(Request $request)
    {
        $validated = $request->validate([
            'email' => 'required|email|unique:newsletters,email',
        ]);

        Newsletter::create(['email' => $validated['email']]);

        return back()->with('success', 'Thank you for subscribing!');
    }

    // Admin - List all subscribers
    public function index()
    {
        $subscribers = Newsletter::latest()->get();
        return view('newsletters.index', compact('subscribers'));
    }


public function destroy(Newsletter $newsletter)
{
    $newsletter->delete();

    return redirect()->route('admin.newsletters.index')->with('success', 'Subscriber deleted successfully.');
}



public function export()
{
    $fileName = 'newsletter_subscribers.csv';

    $headers = [
        "Content-type" => "text/csv",
        "Content-Disposition" => "attachment; filename=$fileName",
        "Pragma" => "no-cache",
        "Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
        "Expires" => "0"
    ];

    $subscribers = Newsletter::all(['email', 'created_at']);

    $callback = function () use ($subscribers) {
        $file = fopen('php://output', 'w');
        fputcsv($file, ['Email', 'Subscribed At']);

        foreach ($subscribers as $subscriber) {
            fputcsv($file, [$subscriber->email, $subscriber->created_at]);
        }

        fclose($file);
    };

    return response()->stream($callback, 200, $headers);
}

}