<?php

namespace App\Services;

use App\Models\Professional;
use App\Repositories\Eloquent\ApplicationManagementRepository;

class ApplicationManagementService
{
    public function __construct(
        private ApplicationManagementRepository $repository,
        private ApplicationStatusEmailService $emailService,
    ) {}

    public function index(array $filters = []): array
    {
        return ['applications' => $this->repository->paginate($filters), 'stats' => $this->repository->stats()];
    }

    public function find(int $id): Professional
    {
        return $this->repository->find($id);
    }

    public function updateStatus(Professional $professional, string $status): Professional
    {
        $changed = $professional->status !== $status;
        $professional = $this->repository->updateStatus($professional, $status);

        if ($changed) {
            $this->emailService->send($professional, $status);
        }

        return $professional;
    }
}
