/** * Create repeating driving orders from the DTO, * if applicable set validation errors. * * @param DrivingOrderRegisterDTO $registerDTO * @param array $errors * @return array|ArrayCollection */ public function registerDTOtoRepeatedDrivingOrders(DrivingOrderRegisterDTO $registerDTO, &$errors) { $repeatedDrivingOrders = new ArrayCollection(); if (!empty($registerDTO->repeatedOrderTime->outwardTime)) { $outwardTime = $registerDTO->repeatedOrderTime->outwardTime; $repeatedDrivingOrders[] = RepeatedDrivingOrder::registerRepeatedDrivingOrder($registerDTO->weekday, $outwardTime, RepeatedDrivingOrder::OUTWARD_DIRECTION); } if (!empty($registerDTO->repeatedOrderTime->returnTime)) { $returnTime = $registerDTO->repeatedOrderTime->returnTime; $repeatedDrivingOrders[] = RepeatedDrivingOrder::registerRepeatedDrivingOrder($registerDTO->weekday, $returnTime, RepeatedDrivingOrder::RETURN_DIRECTION); } if (count($repeatedDrivingOrders) < 1) { $errors[] = 'drivingorder.form.error.empty'; } elseif (isset($outwardTime) and isset($returnTime)) { if ($outwardTime >= $returnTime) { $errors[] = 'drivingorder.form.error.ascending'; } } $now = new \DateTime(); $now->setTime(0, 0, 0); if ($registerDTO->anchorDate < $now) { $errors[] = 'drivingorder.form.error.anchorDate'; } if ($registerDTO->additionalTime < 0) { $errors[] = 'drivingorder.form.error.extraMinutes'; } if ($registerDTO->compagnion < 0) { $errors[] = 'drivingorder.form.error.companions'; } return $repeatedDrivingOrders; }