<?php

namespace App\Services;

use App\Models\AdminNotification;
use App\Models\AdminUser;
use App\Models\Professional;

class AdminNotificationService
{
    public function professionalApplicationSubmitted(Professional $professional): void
    {
        $professional->loadMissing(['user.profile', 'profession']);

        $applicant = $professional->user?->profile?->full_name
            ?: $professional->user?->email
            ?: 'A professional';
        $profession = $professional->profession?->name ?: 'a profession';

        AdminUser::query()
            ->where('status', 'active')
            ->pluck('id')
            ->each(fn ($adminId) => AdminNotification::create([
                'admin_user_id' => $adminId,
                'title' => 'New professional application',
                'body' => "{$applicant} submitted an application for {$profession}.",
                'data' => [
                    'type' => 'professional_application_submitted',
                    'professional_id' => $professional->id,
                    'applicant_user_id' => $professional->user_id,
                ],
            ]));
    }
}
