/** * @param RepeatedDrivingAssertionPlan $assertionPlan * @return RepeatedDrivingAssertionRegisterDTO */ public function toRepeatedRegisterDTO(RepeatedDrivingAssertionPlan $assertionPlan) { $assertionDTO = new RepeatedDrivingAssertionRegisterDTO(); $assertionDTO->id = $assertionPlan->getId(); $assertionDTO->subject = $assertionPlan->getSubject(); $assertionDTO->memo = $assertionPlan->getMemo(); $assertionDTO->anchorDate = $assertionPlan->getAnchorDate(); $assertionDTO->endDate = $assertionPlan->getEndingDate() != DateTimeService::getMaxDateTime() ? $assertionPlan->getEndingDate() : null; $assertionDTO->frequency = $assertionPlan->getFrequency(); $assertionDTO->withHolidays = $assertionPlan->getWithHolidays(); if ($assertionDTO->frequency === 'weekly') { /** @var RepeatedWeeklyDrivingAssertion $weeklyAssertion */ foreach ($assertionPlan->getRepeatedDrivingAssertions() as $weeklyAssertion) { $assertionDTO->weeklyDaysSelector[] = WeekdayService::$numericToWeekdayConverter[$weeklyAssertion->getWeekday()]; $assertionDTO->weeklyShiftSelections->add($this->createShiftSelectionDTO('day', WeekdayService::$numericToWeekdayConverter[$weeklyAssertion->getWeekday()], $weeklyAssertion->getShiftTypes()->toArray())); } } else { if ($assertionDTO->frequency === 'monthly') { /** @var RepeatedMonthlyDrivingAssertion $monthlyAssertion */ foreach ($assertionPlan->getRepeatedDrivingAssertions() as $monthlyAssertion) { if ($monthlyAssertion->getRelativeWeekAsText() === 'first') { $assertionDTO->monthlyFirstWeeklySelector[] = $monthlyAssertion->getWeekdayAsText(); } else { if ($monthlyAssertion->getRelativeWeekAsText() === 'second') { $assertionDTO->monthlySecondWeeklySelector[] = $monthlyAssertion->getWeekdayAsText(); } else { if ($monthlyAssertion->getRelativeWeekAsText() === 'third') { $assertionDTO->monthlyThirdWeeklySelector[] = $monthlyAssertion->getWeekdayAsText(); } else { if ($monthlyAssertion->getRelativeWeekAsText() === 'fourth') { $assertionDTO->monthlyFourthWeeklySelector[] = $monthlyAssertion->getWeekdayAsText(); } else { if ($monthlyAssertion->getRelativeWeekAsText() === 'last') { $assertionDTO->monthlyLastWeeklySelector[] = $monthlyAssertion->getWeekdayAsText(); } } } } } $assertionDTO->monthlyShiftSelections->add($this->createShiftSelectionDTO($monthlyAssertion->getRelativeWeekAsText(), $monthlyAssertion->getWeekdayAsText(), $monthlyAssertion->getShiftTypes()->toArray())); } } else { // todo frequency === 'unique' } } return $assertionDTO; }