/** ------------------------- * Get one flat Driving Assertion Plan (one dimensional array) * * @param RepeatedDrivingAssertionPlan $assertionPlan * @param RepeatedDrivingAssertion[] $repeatedAssertions * @return DrivingAssertionManagementDTO[] * @throws \Exception */ protected function flatAssertionPlan($assertionPlan, $repeatedAssertions) { $asserts = array(); $frequency = $assertionPlan->getFrequency(); if ($frequency == 'weekly') { /** @var RepeatedWeeklyDrivingAssertion $weeklyAssertion */ foreach ($repeatedAssertions as $weeklyAssertion) { /** @var ShiftType $shiftType */ foreach ($weeklyAssertion->getShiftTypes() as $shiftType) { $dto = new DrivingAssertionManagementDTO(); $dto->planId = $assertionPlan->getId(); $dto->anchordate = $assertionPlan->getAnchorDate(); $dto->enddate = !is_null($assertionPlan->getEndingDate()) ? $assertionPlan->getEndingDate() : DateTimeService::getMaxDateTime(); $dto->weekdayAsText = WeekdayService::$numericToWeekdayConverter[$weeklyAssertion->getWeekday()]; $dto->shiftTypeName = $shiftType->getName(); $asserts[] = $dto; } } } elseif ($frequency == 'monthly') { /** @var RepeatedMonthlyDrivingAssertion $monthlyAssertion */ foreach ($repeatedAssertions as $monthlyAssertion) { /** @var ShiftType $shiftType */ foreach ($monthlyAssertion->getShiftTypes() as $shiftType) { $dto = new DrivingAssertionManagementDTO(); $dto->planId = $assertionPlan->getId(); $dto->anchordate = $assertionPlan->getAnchorDate(); $dto->enddate = !is_null($assertionPlan->getEndingDate()) ? $assertionPlan->getEndingDate() : DateTimeService::getMaxDateTime(); $dto->weekdayAsText = $monthlyAssertion->getWeekdayAsText(); $dto->shiftTypeName = $shiftType->getName(); $asserts[] = $dto; } } } else { throw new \Exception("Driving Assertion Plan error, " . "illegal frequency({$frequency}) encountered!"); } // exit return $asserts; }
/** * @param RepeatedDrivingAssertionPlan $assertionPlan * @return RepeatedDrivingAssertionEmbeddedListDTO */ protected function assertionPlanToEmbeddedListDTO(RepeatedDrivingAssertionPlan $assertionPlan) { $dto = new RepeatedDrivingAssertionEmbeddedListDTO(); $dto->id = $assertionPlan->getId(); $dto->subject = $assertionPlan->getSubject(); $dto->anchorDate = $assertionPlan->getAnchorDate()->format('d.m.Y'); $dto->endDate = $assertionPlan->getEndingDate() != DateTimeService::getMaxDateTime() ? $assertionPlan->getEndingDate()->format('d.m.Y') : 'repeateddrivingassertion.validtillrecalled'; $dto->frequency = $assertionPlan->getFrequency(); return $dto; }