/** * @param $weekday * @param \DateTime $pickUpTime * @param null $direction * @return RepeatedDrivingOrder */ public static function registerRepeatedDrivingOrder($weekday, \DateTime $pickUpTime, $direction = null) { $correctedDirection = null !== $direction ? $direction : self::OUTWARD_DIRECTION; $rdOrder = new RepeatedDrivingOrder(); $rdOrder->setWeekday($weekday); $rdOrder->setPickUpTime($pickUpTime); $rdOrder->setDirection($correctedDirection); return $rdOrder; }
/** * 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; }
/** ------------------------- * Build one driving order for one working day. * * @param RepeatedDrivingOrderPlan $drivingOrderPlan * @param RepeatedDrivingOrder $repeatedDrivingOrder * @param \DateTime $day * @param mixed $status * @return DrivingOrder */ protected function handleNewDrivingOrderForDate(RepeatedDrivingOrderPlan &$drivingOrderPlan, $repeatedDrivingOrder, \DateTime $day, $status) { $drivingOrder = DrivingOrder::registerDrivingOrder($drivingOrderPlan->getPassenger(), $day, $repeatedDrivingOrder->getPickUpTime(), $drivingOrderPlan->getCompanion(), $drivingOrderPlan->getMemo(), $status, false, $drivingOrderPlan->getAdditionalTime()); $drivingOrder->assignZone($drivingOrderPlan->getZone()); $drivingOrder->assignRepeatedDrivingOrderPlan($drivingOrderPlan); $drivingOrder->assignRepeatedDrivingOrder($repeatedDrivingOrder); $drivingOrderPlan->assignDrivingOrder($drivingOrder); return $drivingOrder; }