<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use App\Notifications\AdminNotification;
use App\Events\NewNotification;
use Illuminate\Support\Facades\Notification;

class NotificationController extends Controller
{
    /**
     * Send a notification to all admins (broadcast, database, mail).
     *
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function sendAdminNotification(Request $request)
    {
        $request->validate([
            'title' => 'required|string|max:255',
            'body' => 'required|string',
            'url' => 'nullable|url',
        ]);

        $admins = User::role('admin')->get();
        foreach ($admins as $admin) {
            $admin->notify(new AdminNotification($request->title, $request->body, $request->url));
            $notification = $admin->notifications()->latest()->first();
            event(new NewNotification($notification, $admin->id));
        }
        return response()->json(['message' => 'Notification sent to admins.']);
    }
}