diff --git a/src/EventListener/ProjectsListener.php b/src/EventListener/ProjectsListener.php new file mode 100644 index 0000000..e44b22c --- /dev/null +++ b/src/EventListener/ProjectsListener.php @@ -0,0 +1,37 @@ +hasChangedField('status')) { + return; + } + + if ($project->getStatus() === ProjectStatus::InCampaign) { + $calendar = $this->calendarService->makeCalendar($project); + + $project->setCalendar($calendar); + } + } +} diff --git a/src/Service/Project/CalendarService.php b/src/Service/Project/CalendarService.php new file mode 100644 index 0000000..b77b655 --- /dev/null +++ b/src/Service/Project/CalendarService.php @@ -0,0 +1,35 @@ +release = $release; + + switch ($project->getDeadline()) { + case ProjectDeadline::Minimum: + $calendar->minimum = $release->add($minimumTtl); + break; + case ProjectDeadline::Optimum: + $calendar->minimum = $release->add($minimumTtl); + $calendar->optimum = $calendar->minimum->add($optimumTtl); + break; + } + + return $calendar; + } +} diff --git a/src/State/Project/ProjectStateProcessor.php b/src/State/Project/ProjectStateProcessor.php index 764e2e2..54a4305 100644 --- a/src/State/Project/ProjectStateProcessor.php +++ b/src/State/Project/ProjectStateProcessor.php @@ -23,7 +23,7 @@ class ProjectStateProcessor implements ProcessorInterface /** * @param ProjectCreateDto|ProjectUpdateDto $data - * @param array{id: int} $uriVariables + * @param array{id: int} $uriVariables * * @return ProjectApiResource|null */