/** * Get json routing information for feasibility, for example: * /service/ride/repeatedFeasible?fromDate=01.06.2014&toDate=01.07.2025 * &weekday=1&time=12:23&direction=1&duration=23&additionalTime=2 * * @Route("/ride/repeatedFeasible", name="tixiapp_service_ride_repeated_feasible") * @Method({"GET"}) * @param Request $request * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function getRepeatedFeasibilityAction(Request $request) { /**@var $rideManagement RideManagement */ $rideManagement = $this->container->get('tixi_app.ridemanagement'); $fromDateStr = $request->get('fromDate'); $toDateStr = $request->get('toDate'); $timeStr = $request->get('time'); $dayTime = \DateTime::createFromFormat('d.m.Y H:i', $fromDateStr . ' ' . $timeStr); if ($toDateStr !== '') { $toDate = \DateTime::createFromFormat('d.m.Y', $toDateStr); } else { $toDate = DateTimeService::getMaxDateTime(); } if (!$dayTime) { $response = new JsonResponse(); $response->setData(array('status' => '-1')); return $response; } $weekday = $request->get('weekday'); $direction = $request->get('direction'); $duration = $request->get('duration'); $additionalTime = $request->get('additionalTime'); try { $isFeasible = $rideManagement->checkRepeatedFeasibility($dayTime, $toDate, $weekday, $direction, $duration, $additionalTime); } catch (\Exception $e) { $response = new JsonResponse(); $response->setData(array('status' => '-1')); return $response; } $response = new JsonResponse(); $response->setData(array('status' => '0', 'isFeasible' => $isFeasible)); return $response; }
/** * @param string $subject * @param \DateTime $anchorDate * @param string $frequency * @param boolean $withHolidays * @param \DateTime $endingDate * @param string $memo * @return RepeatedDrivingAssertionPlan */ public static function registerRepeatedAssertionPlan($subject, \DateTime $anchorDate, $frequency, $withHolidays, \DateTime $endingDate = null, $memo = null) { $endingDate = null !== $endingDate ? $endingDate : DateTimeService::getMaxDateTime(); $assertion = new RepeatedDrivingAssertionPlan(); $assertion->setSubject($subject); $assertion->setMemo($memo); $assertion->setAnchorDate($anchorDate); $assertion->setEndingDate($endingDate); $assertion->setFrequency($frequency); $assertion->setWithHolidays($withHolidays); return $assertion; }
/** ------------------------- * 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; }
/** * @param RepeatedDrivingOrderPlan $orderPlan * @return RepeatedDrivingOrderEmbeddedListDTO */ public function orderPlanToEmbeddedListDTOs(RepeatedDrivingOrderPlan $orderPlan) { $dto = new RepeatedDrivingOrderEmbeddedListDTO(); $dto->id = $orderPlan->getId(); $dto->isDeleted = !$orderPlan->isActive(); $dto->anchorDate = $orderPlan->getAnchorDate()->format('d.m.Y'); $dto->endDate = $orderPlan->getEndingDate() != DateTimeService::getMaxDateTime() ? $orderPlan->getEndingDate()->format('d.m.Y') : 'repeateddrivingorder.validtillrecalled'; /** @var Passenger $passenger */ $passenger = $orderPlan->getPassenger(); $dto->passengerId = $passenger->getId(); $repeatedDrivingOrders = $orderPlan->getRepeatedDrivingOrders(); /** @var RepeatedDrivingOrder $repeatedDrivingOrder */ foreach ($repeatedDrivingOrders as $repeatedDrivingOrder) { if ($repeatedDrivingOrder->getDirection() == RepeatedDrivingOrder::OUTWARD_DIRECTION) { $dto->weekDay = $this->convertWeekDay($repeatedDrivingOrder->getWeekday()); $dto->outwardTime = $this->dateTimeService->convertToLocalTimeString($repeatedDrivingOrder->getPickUpTime()); } else { $dto->returnTime = $this->dateTimeService->convertToLocalTimeString($repeatedDrivingOrder->getPickUpTime()); } } return $dto; }
/** * @param \DateTime $anchorDate * @param null $withHolidays * @param null $companion * @param \DateTime $endingDate * @param null $memo * @param null $additionalTime * @return RepeatedDrivingOrderPlan */ public static function registerRepeatedDrivingOrderPlan(\DateTime $anchorDate, $withHolidays = null, $companion = null, \DateTime $endingDate = null, $memo = null, $additionalTime = null) { $correctedWithHolidays = null !== $withHolidays ? $withHolidays : false; $correctedCompanion = null !== $companion ? $companion : 0; $correctedAdditionalTime = null !== $additionalTime ? $additionalTime : 0; $correctedEndingDate = $endingDate !== null ? $endingDate : DateTimeService::getMaxDateTime(); $correctedMemo = $memo !== null ? $memo : ''; $rdPlan = new RepeatedDrivingOrderPlan(); $rdPlan->setAnchorDate($anchorDate); $rdPlan->setEndingDate($correctedEndingDate); $rdPlan->setWithHolidays($correctedWithHolidays); $rdPlan->setCompanion($correctedCompanion); $rdPlan->setMemo($correctedMemo); $rdPlan->setAdditionalTime($correctedAdditionalTime); return $rdPlan; }