/** -------------------------
  * 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;
 }