<?php
declare(strict_types=1);

namespace App\Message\Handler\Parameters;

use App\Message\Command\Parameters\AverageChange;
use App\Repository\Education\EducationNotationRepository;
use App\Repository\Organization\ParametersRepository;
use App\Service\Elasticsearch\EducationNotationUpdater;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;

/**
 * Classe AverageChangeHandler qui traite les messages AverageChange
 */
#[AsMessageHandler(priority: 1)]
class AverageChangeHandler
{
    public function __construct(
        private EducationNotationUpdater $educationNotationUpdater,
        private EducationNotationRepository $educationNotationRepository,
        private ParametersRepository $parametersRepository
    ) {}

    /**
     * Fonction permettant de remettre à jour les notes dans elasticsearch par rapport à la note maximale changée
     * @param AverageChange $averageChange
     */
    public function __invoke(AverageChange $averageChange): void
    {
        $parameter = $this->parametersRepository->find($averageChange->getParametersId());
        if($parameter){
            $educationNotations = $this->educationNotationRepository->findAllEducationNotation($parameter->getOrganization());
            $this->educationNotationUpdater->update($educationNotations);
        }
    }
}
