/** ------------------------- * Create driving assertions for a working day * Called for a new repeated driving assertion plan or new working day * * @param RepeatedDrivingAssertionPlan$repeatedDrivingAssertionPlan * @param WorkingDay $workingDay * @param array $errors */ protected function handleRepeatedDrivingAssertionsForWorkingDay($repeatedDrivingAssertionPlan, $workingDay, &$errors) { /** @var DrivingAssertionRepository $drivingAssertionRepository */ $drivingAssertionRepository = $this->container->get('drivingassertion_repository'); $driver = $repeatedDrivingAssertionPlan->getDriver(); $shifts = $workingDay->getShifts(); /** @var Shift $shift */ foreach ($shifts as $shift) { if ($this->matching($shift, $repeatedDrivingAssertionPlan)) { if (!$driver->hasDrivingAssertionForShift($shift)) { $drivingAssertion = DrivingAssertion::registerDrivingAssertion($driver, $shift); $drivingAssertion->assignedRepeatedDrivingAssertionPlan($repeatedDrivingAssertionPlan); $repeatedDrivingAssertionPlan->assignDrivingAssertion($drivingAssertion); $drivingAssertionRepository->store($drivingAssertion); } else { $daPlanId = $this->getPlanIdFor($driver, $shift); if (is_null($repeatedDrivingAssertionPlan->getId()) or $daPlanId != $repeatedDrivingAssertionPlan->getId()) { $errors[] = $this->translate('repeateddrivingassertion.error.occupied') . " " . $workingDay->getDate()->format('d.m.Y') . " " . $this->translate($workingDay->getWeekDayAsString()) . " " . $shift->getShiftType()->getName(); } } } } }
/** * @param WorkingDay $workingDay * @param $workingMonthId * @return MonthlyPlanEditDTO */ public function workingDayToEditDTO(WorkingDay $workingDay, $workingMonthId) { $dto = new MonthlyPlanEditDTO(); $dto->workingMonthId = $workingMonthId; $dto->workingDayId = $workingDay->getId(); $dto->workingMonthDateString = $workingDay->getWorkingMonth()->getDateString(); $dto->workingDayWeekdayString = $workingDay->getWeekDayAsString(); $dto->workingDayDateString = $workingDay->getDateString(); $dto->workingDayDate = $workingDay->getDate(); $today = new \DateTime(); $today->setTime(0, 0, 0); $dto->editMode = $workingDay->getDate() < $today ? 'show' : 'edit'; $vehicleRepo = $this->container->get('vehicle_repository'); $vehicles = $vehicleRepo->findAllNotDeleted(); $dto->allVehicles = $this->workingDayToEditVehiclesDTO($vehicles, $workingDay->getDate()); $shifts = $workingDay->getShiftsOrderedByStartTime(); /** @var Shift $shift */ foreach ($shifts as $shift) { $shiftDTO = new MonthlyPlanEditShiftDTO(); $shiftDTO->shiftId = $shift->getId(); $shiftDTO->shiftDisplayName = $shift->getShiftType()->getName(); $shiftDTO->shiftTitle = $this->getShiftTitle($shift->getStatusString(), $shift->getManuallyEdited()); $shiftDTO->iconColor = $this->getMonthlyPlanGetShiftDTO($shift)->iconColor; $pools = $shift->getDrivingPoolsAsArray(); foreach ($pools as $pool) { $shiftDTO->assignedPools[] = $this->getAssignedPools($pool, $dto->allVehicles); } $shiftDTO->spareVehicles = $this->getSpareVehicles($shift, $dto->allVehicles); $shiftDTO->spareDrivers = $this->getSpareDrivers($shift); $dto->shifts[] = $shiftDTO; } return $dto; }