|
|
@@ -4,18 +4,23 @@ declare(strict_types=1);
|
|
|
|
|
|
namespace App\Service\Organization;
|
|
|
|
|
|
+use App\Entity\Booking\Course;
|
|
|
use App\Entity\Education\EducationNotationConfig;
|
|
|
+use App\Entity\Organization\Organization;
|
|
|
use App\Entity\Organization\Parameters;
|
|
|
use App\Enum\Education\AdvancedEducationNotationTypeEnum;
|
|
|
-use App\Repository\Education\EducationNotationConfigRepository;
|
|
|
+use App\Repository\Booking\CourseRepository;
|
|
|
use App\Test\Service\Organization\OnParametersChangeTest;
|
|
|
+use App\Service\Organization\Utils as organizationUtils;
|
|
|
|
|
|
/**
|
|
|
* Classe OnParametersChange qui comporte toutes les opérations automatiquent se produisant lors de l'évolution des paramètres
|
|
|
*/
|
|
|
class OnParametersChange
|
|
|
{
|
|
|
- public function __construct(){ }
|
|
|
+ public function __construct(
|
|
|
+ private CourseRepository $courseRepository
|
|
|
+ ){ }
|
|
|
|
|
|
/**
|
|
|
* Si le le type de grilles d'évaluation évolue, il faut "nettoyer" les curriculums/teachers associés au type précédent
|
|
|
@@ -37,4 +42,36 @@ class OnParametersChange
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Permet de mettre à jour l'année de début des cours concernés suivant la date de l'activité musicale qui vient d'être changés
|
|
|
+ * @param Organization $organization
|
|
|
+ * @param \DateTimeInterface $previousMusicalDate
|
|
|
+ * @param \DateTimeInterface $newMusicalDate
|
|
|
+ * @throws \Exception
|
|
|
+ * @see OnParametersChangeTest::testOnMusicalDate()
|
|
|
+ */
|
|
|
+ public function onMusicalDate(Organization $organization, \DateTimeInterface $previousMusicalDate): void{
|
|
|
+ $currentMusicalDate = $organization->getParameters()->getMusicalDate();
|
|
|
+
|
|
|
+ if($previousMusicalDate > $currentMusicalDate){
|
|
|
+ $lowerDate = $currentMusicalDate;
|
|
|
+ $higherDate = $previousMusicalDate;
|
|
|
+ }else{
|
|
|
+ $lowerDate = $previousMusicalDate;
|
|
|
+ $higherDate = $currentMusicalDate;
|
|
|
+ }
|
|
|
+
|
|
|
+ $startDate = new \DateTime(date('Y') . '-' . $lowerDate->format('m-d'));
|
|
|
+ $endDate = new \DateTime(date('Y') . '-' . $higherDate->format('m-d'));
|
|
|
+
|
|
|
+ $coursesToUpdate = $this->courseRepository->getCoursesToFrom($organization, $startDate, $endDate);
|
|
|
+
|
|
|
+ /** @var Course $course */
|
|
|
+ foreach ($coursesToUpdate as $course){
|
|
|
+ $year = organizationUtils::getActivityYearSwitchDate($organization, $course->getDatetimeStart());
|
|
|
+ $course->setStartYear($year);
|
|
|
+ $course->setEndYear($year + 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|