/**
  * @Route("", name="tixiapi_export_month")
  * @Method({"GET","POST"})
  * @param Request $request
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getMonthPlanAction(Request $request)
 {
     $form = $this->createForm(new MonthPlanType($this->menuId));
     $form->handleRequest($request);
     $content = $this->get('request')->request->all();
     $tr = $this->get('translator');
     if ($content != array()) {
         /* OK: received data from user */
         if ($form->isValid()) {
             $formdata = reset($content);
             $workingMonthId = $formdata['ctrlWorkingMonthId'];
             if ($workingMonthId != '') {
                 /** @var DocumentManagement $docManagement */
                 $docManagement = $this->get('tixi_app.documentmanagement');
                 $result = $docManagement->createMonthPlanDocument($workingMonthId);
                 if (array_key_exists('path', $result)) {
                     /* OK: redirect to download page */
                     return $this->redirect($this->generateUrl('tixiapi_export_download', array('filename' => urlencode($result['path']))));
                 } else {
                     $form->addError(new FormError($result['error']));
                 }
             } else {
                 $form->addError(new FormError($tr->trans('monthplan.error.pleaseChoose')));
             }
         } else {
             $form->addError(new FormError($tr->trans('drivingconfig.message.software')));
         }
     } else {
         /* OK: no user data present yet */
     }
     $rootPanel = new RootPanel($this->menuId, 'export.month.panel.fullname');
     $rootPanel->add(new ExportFormTile($form, true));
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/edit", name="tixiapi_user_profile_get")
  * @Method({"GET","POST"})
  * @param Request $request
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  * @internal param bool $embeddedState
  * @return Response
  */
 public function editUserProfileAction(Request $request)
 {
     $user = $this->get('security.context')->getToken()->getUser();
     if (null === $user) {
         throw $this->createNotFoundException('This user does not exist');
     }
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $userAssembler = $this->get('tixi_api.assembleruser');
     $userDTO = $userAssembler->userToUserProfileDTO($user);
     $form = $this->getForm($userDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $userDTO = $form->getData();
         $this->get('tixi_api.assembleruser')->registerProfileDTOtoUser($userDTO, $user);
         $this->get('entity_manager')->flush();
         return $this->redirect($this->generateUrl('tixi_logout'));
     }
     $rootPanel = new RootPanel($this->menuId, 'user.profile.panel.name', $user->getUserName());
     $rootPanel->add(new FormTile($form, true));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/{servicePlanId}/edit", name="tixiapi_serviceplan_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{vehicleId}", route={"name"="tixiapi_vehicle_get", "parameters"={"vehicleId"}})
  * @Breadcrumb("serviceplan.panel.edit")
  * @param Request $request
  * @param $vehicleId
  * @param $servicePlanId
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  */
 public function editServiceplanAction(Request $request, $vehicleId, $servicePlanId)
 {
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $servicePlanAssembler = $this->get('tixi_api.assemblerserviceplan');
     $servicePlan = $this->getServicePlan($servicePlanId);
     $vehicle = $this->getVehicle($vehicleId);
     $servicePlanDTO = $servicePlanAssembler->toServicePlanRegisterDTO($servicePlan);
     $form = $this->getForm($servicePlanDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $servicePlanDTO = $form->getData();
         $this->registerOrUpdateServicePlanToVehicle($servicePlanDTO, $vehicle);
         $this->get('entity_manager')->flush();
         return $this->redirect($this->generateUrl('tixiapi_vehicle_get', array('vehicleId' => $vehicleId)));
     }
     $rootPanel = new RootPanel('tixiapi_vehicles_get', 'serviceplan.panel.edit');
     $rootPanel->add(new FormTile($form, true));
     $rootPanel->add(new PanelDeleteFooterTile($this->generateUrl('tixiapi_serviceplan_delete', array('vehicleId' => $vehicleId, 'servicePlanId' => $servicePlanId)), 'serviceplan.button.delete'));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("",name="tixiapi_export_download")
  * @Method({"GET","POST"})
  * @param string $filename
  * @param Request $request
  * @param bool $embeddedState
  * @throws AccessDeniedException
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getDownloadAction($filename, Request $request, $embeddedState = false)
 {
     /**
      * download the file to user workstation
      */
     $form = $this->createForm(new DownloadType($this->menuId));
     $form->handleRequest($request);
     $content = $this->get('request')->request->all();
     $tr = $this->get('translator');
     $this->errorMessage = '';
     $filenameDecoded = urldecode($filename);
     if ($content != array()) {
         /* OK: received data from user (at least submit action) */
         if (file_exists($filenameDecoded)) {
             /* safe to download the file */
             return $this->downloadFile($filenameDecoded);
         } else {
             $this->errorMessage = $tr->trans('export.message.software') . '(' . $filenameDecoded . ')';
         }
     } else {
         /* OK: no user data present yet */
     }
     $rootPanel = new RootPanel($this->menuId, 'download.panel.name');
     $rootPanel->add(new ExportFormTile($form, true));
     $rootPanel->add(new DownloadTile($this->errorMessage, '', basename($filenameDecoded)));
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/{personCategoryId}/delete",name="tixiapi_management_personcategory_delete")
  * @Method({"GET","POST"})
  * @param Request $request
  * @param $personCategoryId
  * @throws AccessDeniedException
  * @return \Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function deletePersonCategoryAction(Request $request, $personCategoryId)
 {
     if (false === $this->get('security.context')->isGranted('ROLE_MANAGER')) {
         throw new AccessDeniedException();
     }
     $personCategory = $this->getPersonCategory($personCategoryId);
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $personRepository = $this->get('person_repository');
     $usageAmount = $personRepository->getAmountByPersonCategory($personCategory);
     if ($usageAmount > 0) {
         $rootPanel = new RootPanel($this->menuId, 'error.refintegrity.header.name');
         $rootPanel->add(new ReferentialConstraintErrorTile($usageAmount));
         return new Response($tileRenderer->render($rootPanel));
     } else {
         $personCategory->deleteLogically();
         $this->get('entity_manager')->flush();
         return $this->redirect($this->generateUrl('tixiapi_management_personcategories_get'));
     }
 }
 /** Part 2, display one day (basic editing screen) -------------------------
  * @Route("/edit/{swissDate}", name="tixiapi_dispo_dailyplan_edit_swissdate")
  * @Route("/edit", name="tixiapi_dispo_dailyplan_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{swissDate}", route={"name"="tixiapi_dispo_dailyplan_get", "parameters"={"swissDate"}})
  * @param Request $request
  * @param mixed $swissDate
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getDailyPlanEditAction(Request $request, $swissDate)
 {
     $date = $this->swissDateToDate($swissDate);
     $date->setTime(0, 0, 0);
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $errorMessage = urldecode($request->query->get('errorMessage'));
     /** @var DailyPlanAssembler $assembler */
     $assembler = $this->get('tixi_api.assemblerDailyPlan');
     $assembler->setConcurrentUser($swissDate);
     $getDTO = $assembler->getDailyPlanEditDTO($date, $errorMessage);
     $yesterday = new \DateTime('yesterday');
     $header = $date <= $yesterday ? 'dailyplan.panel.show' : 'dailyplan.panel.edit';
     $helper = null;
     $tr = $this->get('translator');
     if ($date == new \DateTime('today')) {
         $helper = $tr->trans('dailyplan.field.helper.today') . " ";
     } elseif ($date == new \DateTime('tomorrow')) {
         $helper = $tr->trans('dailyplan.field.helper.tomorrow') . " ";
     }
     $rootPanel = new RootPanel(MenuService::$menuDispositionDailyPlanId, $header, $helper . $this->dateToLocalWeekday($date) . ' ' . $swissDate);
     $rootPanel->add(new DailyPlanEditTile($getDTO, $errorMessage));
     return new Response($tileRenderer->render($rootPanel));
 }
 /** -------------------------
  * Controller for a new driving order
  *
  * @Route("/new", name="tixiapi_passenger_drivingorder_new")
  * @Method({"GET","POST"})
  * @param Request $request
  * @param $passengerId
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Tixi\ApiBundle\Controller\Dispo\Response
  */
 public function newDrivingOrderAction(Request $request, $passengerId)
 {
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     /** @var Passenger $passenger */
     $passenger = $this->getPassenger($passengerId);
     $drivingOrderRegisterDTO = new DrivingOrderRegisterDTO();
     $drivingOrderRegisterDTO->isRepeated = false;
     $drivingOrderRegisterDTO->notice = $this->constructNotice($passenger);
     $form = $this->createForm(new DrivingOrderCreateType($this->menuId), $drivingOrderRegisterDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $registerDto = $form->getData();
         try {
             $validationErrors = $this->registerDrivingOrder($registerDto, $passenger);
             if (count($validationErrors) < 1) {
                 $this->get('entity_manager')->flush();
                 return $this->redirect($this->generateUrl('tixiapi_passenger_get', array('passengerId' => $passengerId)));
             } else {
                 $this->setErrorsInForm($validationErrors, $form);
                 $this->get('entity_manager')->close();
             }
         } catch (Exception $e) {
             $this->get('entity_manager')->rollback();
             $validationErrors[] = 'drivingorder.form.error.store';
             $this->setErrorsInForm($validationErrors, $form);
             $form->addError(new FormError('Exception Message: ' . $e->getMessage()));
         }
     }
     $rootPanel = new RootPanel($this->menuId, 'drivingorder.panel.new', $passenger->getNameString());
     $rootPanel->add(new DrivingOrderCreateTile($form, $passengerId, $this->constructServiceUrls()));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/{bankHolidayId}/edit", name="tixiapi_management_bankholiday_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{bankHolidayId}", route={"name"="tixiapi_management_bankholiday_edit", "parameters"={"bankHolidayId"}})
  * @param Request $request
  * @param $bankHolidayId
  * @throws AccessDeniedException
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  */
 public function editBankHolidayAction(Request $request, $bankHolidayId)
 {
     if (false === $this->get('security.context')->isGranted('ROLE_MANAGER')) {
         throw new AccessDeniedException();
     }
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $bankHolidayAssembler = $this->get('tixi_api.assemblerBankHoliday');
     $bankHoliday = $this->get('bankholiday_repository')->find($bankHolidayId);
     if (null === $bankHoliday) {
         throw $this->createNotFoundException('This bankHoliday does not exist');
     }
     $bankHolidayDTO = $bankHolidayAssembler->bankHolidayToBankHolidayRegisterDTO($bankHoliday);
     $form = $this->getForm($bankHolidayDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $bankHolidayDTO = $form->getData();
         $this->registerOrUpdateBankHoliday($bankHolidayDTO);
         $this->get('entity_manager')->flush();
         return $this->redirect($this->generateUrl('tixiapi_management_bankholidays_get', array('bankHolidayId' => $bankHolidayId)));
     }
     $rootPanel = new RootPanel($this->menuId, 'bankholiday.panel.edit');
     $rootPanel->add(new FormTile($form, true));
     $rootPanel->add(new PanelDeleteFooterTile($this->generateUrl('tixiapi_management_bankholiday_delete', array('bankHolidayId' => $bankHolidayId)), 'bankholiday.button.delete'));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/{vehicleCategoryId}/edit", name="tixiapi_management_vehiclecategory_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{vehicleCategoryId}", route={"name"="tixiapi_management_vehiclecategory_edit", "parameters"={"vehicleCategoryId"}})
  * @param Request $request
  * @param $vehicleCategoryId
  * @throws \Symfony\Component\Security\Core\Exception\AccessDeniedException
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  */
 public function editVehicleCategoryAction(Request $request, $vehicleCategoryId)
 {
     if (false === $this->get('security.context')->isGranted('ROLE_MANAGER')) {
         throw new AccessDeniedException();
     }
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     /** @var VehicleCategoryAssembler $assembler */
     $assembler = $this->get('tixi_api.assemblervehiclecategory');
     $vehicleCategory = $this->getVehicleCategory($vehicleCategoryId);
     $vehicleCategoryDTO = $assembler->toVehicleCategoryRegisterDTO($vehicleCategory);
     $form = $this->getForm($vehicleCategoryDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $vehicleCategoryDTO = $form->getData();
         if ($this->nameAlreadyExist($vehicleCategoryDTO->name) && $vehicleCategory->getName() != $vehicleCategoryDTO->name) {
             $errorMsg = $this->get('translator')->trans('form.error.valid.unique');
             $error = new FormError($errorMsg);
             $form->addError($error);
             $form->get('name')->addError($error);
         } else {
             $this->registerOrUpdateVehicleCategory($vehicleCategoryDTO);
             $this->get('entity_manager')->flush();
         }
         //if no errors/invalids in form
         if (count($form->getErrors()) < 1) {
             return $this->redirect($this->generateUrl('tixiapi_management_vehiclecategories_get'));
         }
     }
     $rootPanel = new RootPanel($this->menuId, 'vehiclecategory.panel.edit');
     $rootPanel->add(new FormTile($form, true));
     $rootPanel->add(new PanelDeleteFooterTile($this->generateUrl('tixiapi_management_vehiclecategory_delete', array('vehicleCategoryId' => $vehicleCategoryId)), 'vehiclecategory.button.delete'));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * Controller for editing a persisted repeated driving assertion plan
  *
  * @Route("/{assertionPlanId}/edit", name="tixiapi_driver_repeatedassertionplan_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{driverId}", route={"name"="tixiapi_driver_get", "parameters"={"driverId"}})
  * @Breadcrumb("repeateddrivingassertion.panel.edit")
  * @param Request $request
  * @param $driverId
  * @param $assertionPlanId
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  */
 public function editRepeatedAssertionPlanAction(Request $request, $driverId, $assertionPlanId)
 {
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $driver = $this->getDriver($driverId);
     /** @var RepeatedDrivingAssertionAssembler $assembler*/
     $assembler = $this->get('tixi_api.repeateddrivingassertionplanassembler');
     /** @var RepeatedDrivingAssertionPlan $assertionPlan */
     $assertionPlan = $this->getAssertionPlan($assertionPlanId);
     $assertionDTO = $assembler->toRepeatedRegisterDTO($assertionPlan);
     $form = $this->createForm(new RepeatedDrivingAssertionType($this->menuId), $assertionDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $tr = $this->get('translator');
         $assertionDTO = $form->getData();
         $validationErrors = $this->registerOrUpdateAssertionPlan($assertionDTO, $driver);
         if (count($validationErrors) == 0) {
             $this->get('entity_manager')->flush();
             return $this->redirect($this->generateUrl('tixiapi_driver_get', array('driverId' => $driverId)));
         } else {
             /* failed: display errors in GUI */
             $this->get('entity_manager')->close();
             $form->addError(new FormError($tr->trans('repeateddrivingassertion.error.notsaved')));
             foreach ($validationErrors as $error) {
                 $form->addError(new FormError($error));
             }
         }
     }
     $rootPanel = new RootPanel($this->menuId, 'repeateddrivingassertion.panel.edit', '(' . $driver->getFirstname() . ' ' . $driver->getLastname() . ')');
     $rootPanel->add(new RepeatedAssertionTile($form, $assertionPlan->getFrequency()));
     $rootPanel->add(new PanelDeleteFooterTile($this->generateUrl('tixiapi_driver_repeatedassertionplan_delete', array('driverId' => $driverId, 'assertionPlanId' => $assertionPlanId)), 'repeateddrivingassertion.button.delete'));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/{shiftTypeId}/edit", name="tixiapi_management_shifttype_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{shiftTypeId}", route={"name"="tixiapi_management_shifttype_edit", "parameters"={"shiftTypeId"}})
  * @param Request $request
  * @param $shiftTypeId
  * @throws \Symfony\Component\Security\Core\Exception\AccessDeniedException
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  */
 public function editShiftTypeAction(Request $request, $shiftTypeId)
 {
     if (false === $this->get('security.context')->isGranted('ROLE_ADMIN')) {
         throw new AccessDeniedException();
     }
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $shiftTypeAssembler = $this->get('tixi_api.assemblerShiftType');
     $shiftType = $this->get('shifttype_repository')->find($shiftTypeId);
     if (null === $shiftType) {
         throw $this->createNotFoundException('This shiftType does not exist');
     }
     $shiftTypeDTO = $shiftTypeAssembler->shiftTypeToShiftTypeRegisterDTO($shiftType);
     $form = $this->getForm($shiftTypeDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $shiftTypeDTO = $form->getData();
         if ($this->nameAlreadyExist($shiftTypeDTO->name) && $shiftType->getName() != $shiftTypeDTO->name) {
             $errorMsg = $this->get('translator')->trans('form.error.valid.unique');
             $error = new FormError($errorMsg);
             $form->addError($error);
             $form->get('name')->addError($error);
         } else {
             $this->registerOrUpdateShiftType($shiftTypeDTO);
             $this->get('entity_manager')->flush();
         }
         //if no errors/invalids in form
         if (count($form->getErrors()) < 1) {
             return $this->redirect($this->generateUrl('tixiapi_management_shifttypes_get', array('shiftTypeId' => $shiftTypeId)));
         }
     }
     $rootPanel = new RootPanel($this->menuId, 'shifttype.panel.edit');
     $rootPanel->add(new FormTile($form, true));
     return new Response($tileRenderer->render($rootPanel));
 }
 /** Part 3, edit the selected day of the month -----------------------------
  * Note: Swap requests (see part 4) are redirected to this controller,
  * if applicable an error message is also passed.
  *
  * @Route("/month/{workingMonthId}/day/{workingDayId}/edit", name="tixiapi_dispo_monthlyplan_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{workingMonthId}", route={"name"="tixiapi_dispo_monthlyplan_workingdays_get", "parameters"={"workingMonthId"}})
  * @Breadcrumb("monthlyplan.workingday.list.name", route={"name"="tixiapi_dispo_monthlyplan_edit", "parameters"={"workingMonthId","workingDayId"}})
  * @param Request $request
  * @param $workingMonthId
  * @param $workingDayId
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function editMonthlyPlanAction(Request $request, $workingMonthId, $workingDayId)
 {
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     /** @var MonthlyPlanAssembler $assembler */
     $assembler = $this->get('tixi_api.assemblermonthlyplan');
     /** @var WorkingDay $workingDay */
     $workingDay = $this->getWorkingDayById($workingDayId);
     $editDTO = $assembler->workingDayToEditDTO($workingDay, $workingMonthId);
     $tr = $this->get('translator');
     $today = new \DateTime();
     $today->setTime(0, 0, 0);
     $errorMessage = urldecode($request->query->get('errorMessage'));
     /* build monthly view edit page ----- */
     $rootPanel = new RootPanel(MenuService::$menuDispositionMonthlyPlanDaysId . $workingMonthId, $workingDay->getDate() >= $today ? 'monthlyplan.panel.edit' : 'monthlyplan.panel.show', $tr->trans($editDTO->workingDayWeekdayString) . ' ' . $editDTO->workingDayDateString);
     $editDTO->closeUrl = $this->generateUrl('tixiapi_dispo_monthlyplan_workingdays_get', array('workingMonthId' => $workingMonthId), true);
     $editDTO->swapUrl = $this->generateUrl('tixiapi_dispo_monthlyplan_edit_swap', array('workingMonthId' => $workingMonthId, 'workingDayId' => $workingDayId, 'swapParams' => 'swap'), true);
     $rootPanel->add(new MonthlyPlanEditTile($editDTO, $errorMessage));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/{zonePlanId}/edit", name="tixiapi_management_zoneplan_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{zonePlanId}", route={"name"="tixiapi_management_zoneplan_edit", "parameters"={"zonePlanId"}})
  * @param Request $request
  * @param $zonePlanId
  * @throws AccessDeniedException
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  */
 public function editZonePlanAction(Request $request, $zonePlanId)
 {
     if (false === $this->get('security.context')->isGranted('ROLE_MANAGER')) {
         throw new AccessDeniedException();
     }
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     /** @var ZonePlanAssembler $assembler */
     $assembler = $this->get('tixi_api.assemblerzoneplan');
     $zonePlan = $this->getZonePlan($zonePlanId);
     $zonePlanDTO = $assembler->toZonePlanRegisterDTO($zonePlan);
     $form = $this->getForm($zonePlanDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $zonePlanDTO = $form->getData();
         if ($this->cityAlreadyExist($zonePlanDTO->city) && $zonePlan->getCity() != $zonePlanDTO->city) {
             $errorMsg = $this->get('translator')->trans('form.error.valid.unique');
             $error = new FormError($errorMsg);
             $form->addError($error);
             $form->get('name')->addError($error);
         } else {
             $this->registerOrUpdateZonePlan($zonePlanDTO);
             $this->get('entity_manager')->flush();
         }
         //if no errors/invalids in form
         if (count($form->getErrors()) < 1) {
             return $this->redirect($this->generateUrl('tixiapi_management_zoneplans_get'));
         }
     }
     $rootPanel = new RootPanel($this->menuId, 'zoneplan.panel.edit');
     $rootPanel->add(new FormTile($form, true));
     $rootPanel->add(new PanelDeleteFooterTile($this->generateUrl('tixiapi_management_zoneplan_delete', array('zonePlanId' => $zonePlanId)), 'zoneplan.button.delete'));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/{custodianId}/delete",name="tixiapi_management_custodian_delete")
  * @Method({"GET","POST"})
  * @param Request $request
  * @param $custodianId
  * @throws AccessDeniedException
  * @return \Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function deleteCustodianAction(Request $request, $custodianId)
 {
     if (false === $this->get('security.context')->isGranted('ROLE_MANAGER')) {
         throw new AccessDeniedException();
     }
     $custodian = $this->getCustodian($custodianId);
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $passengers = $custodian->getPassengers();
     if (count($passengers) > 0) {
         $rootPanel = new RootPanel($this->menuId, 'error.refintegrity.header.name');
         $passengerList = '';
         foreach ($passengers as $passenger) {
             $passengerList .= $passenger->getNameStringWithID() . '<br>';
         }
         $rootPanel->add(new ReferentialConstraintErrorTile(count($passengers), '<i>' . $passengerList . '</i>'));
         return new Response($tileRenderer->render($rootPanel));
     } else {
         $custodian->deleteLogically();
         $this->get('entity_manager')->flush();
         return $this->redirect($this->generateUrl('tixiapi_management_custodians_get'));
     }
 }
 /**
  * @Route("",name="tixiapi_export_drivingconfigs")
  * @Method({"GET","POST"})
  * @param Request $request
  * @param bool $embeddedState
  * @throws AccessDeniedException
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getDrivingConfigAction(Request $request, $embeddedState = false)
 {
     $recordcount = 0;
     $form = $this->createForm(new DrivingConfigType($this->menuId));
     $form->handleRequest($request);
     $content = $this->get('request')->request->all();
     $tr = $this->get('translator');
     if ($content != array()) {
         /* received data from user */
         if ($form->isValid()) {
             if ($this->setConfig($content) == '') {
                 /* Now do your thing, go for it baby, yeah! */
                 $recordcount = $this->buildConfig();
                 if ($recordcount == 0) {
                     $this->message = $tr->trans('drivingconfig.message.empty');
                 } else {
                     $this->message = '';
                 }
             }
         } else {
             /* received invalid data from user */
             $this->message = $tr->trans('export.message.error');
         }
     } else {
         /* no user data present yet */
         $this->message = '';
     }
     $rootPanel = new RootPanel($this->menuId, 'drivingconfig.panel.name');
     $rootPanel->add(new ExportFormTile($form, true));
     if ($this->message != '') {
         /* print error message */
         $detailsPanel = $rootPanel->add(new PanelTile('drivingconfig.panel.details'));
         $detailsPanel->add(new DrivingConfigTile(array(), $this->message));
     } else {
         /* print reports */
         if ($this->printerDTO->getNumberOfReports() > 0) {
             /* print one report per vehicle/driver with missions */
             $reports = $this->printerDTO->getForminfos();
             foreach ($reports as $report) {
                 $detailsPanel = $rootPanel->add(new PanelTile('drivingconfig.panel.details'));
                 $detailsPanel->add(new DrivingConfigTile($report, ''));
             }
         }
         if ($this->printerDTO->hasErrorMessages()) {
             $fms = $this->get('tixi_app.flashmessageservice');
             $fms->handleMessages($this->printerDTO->getErrorMessages());
         }
     }
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     return new Response($tileRenderer->render($rootPanel));
 }
Example #16
0
 /**
  * @Route("/{driverId}/edit", name="tixiapi_driver_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{driverId}", route={"name"="tixiapi_driver_edit", "parameters"={"driverId"}})
  * @param Request $request
  * @param $driverId
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  */
 public function editDriverAction(Request $request, $driverId)
 {
     /* [updates]
      * 31.07.2014, martin jonasse,  [issue#63] removed contents in PanelSplitterTile (right)
      * 05.08.2014, martin jonasse, [issue#85] harmonize inconsistent views ...
      */
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $driverAssembler = $this->get('tixi_api.assemblerdriver');
     /**@var $driver \Tixi\CoreDomain\Driver */
     $driver = $this->getDriver($driverId);
     $driverDTO = $driverAssembler->driverToDriverRegisterDTO($driver);
     $form = $this->getForm($driverDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $driverDTO = $form->getData();
         $this->registerOrUpdateDriver($driverDTO);
         $this->get('entity_manager')->flush();
         return $this->redirect($this->generateUrl('tixiapi_driver_get', array('driverId' => $driverId)));
     }
     $rootPanel = new RootPanel($this->menuId, 'driver.panel.edit');
     $rootPanel->add(new FormTile($form, true));
     $rootPanel->add(new PanelDeleteFooterTile($this->generateUrl('tixiapi_driver_delete', array('driverId' => $driverId)), 'driver.button.delete'));
     return new Response($tileRenderer->render($rootPanel));
 }
Example #17
0
 /**
  * @Route("",name="tixiapi_export_billing")
  * @Method({"GET","POST"})
  * @param Request $request
  * @param bool $embeddedState
  * @throws AccessDeniedException
  * @return \Symfony\Component\HttpFoundation\RedirectResponse | Response
  */
 public function getBillingAction(Request $request, $embeddedState = false)
 {
     /**
      * select the billing information to download
      * create an Excel file with billing information
      */
     $form = $this->createForm(new BillingType($this->menuId));
     $form->handleRequest($request);
     $content = $this->get('request')->request->all();
     $tr = $this->get('translator');
     if ($content != array()) {
         /* OK: received data from user */
         if ($form->isValid()) {
             $formdata = reset($content);
             if ($formdata['ctrlWorkingMonthId'] != '') {
                 /* OK: create fully qualified filename */
                 $subFolder = 'download';
                 $tenant = $this->container->getParameter('tixi_parameter_client');
                 $tenant = ucwords(strtolower($tenant));
                 $filename = $tr->trans('billing.panel.name');
                 $extension = $formdata['ctrlFileType'];
                 $path = $this->getPath($subFolder);
                 $path .= '/' . $tenant . '.' . $filename . $this->getPostfix() . '.' . $extension;
                 /* OK: create download file */
                 $download = new BillingWrapperDTO();
                 $download->setContainer($this->container);
                 $download->setProperties($formdata);
                 $download->createFile($path);
                 /* OK: redirect to download page */
                 return $this->redirect($this->generateUrl('tixiapi_export_download', array('filename' => urlencode($path))));
             } else {
                 $form->addError(new FormError($tr->trans('billing.error.pleaseChoose')));
             }
         } else {
             $form->addError(new FormError($tr->trans('drivingconfig.message.software')));
         }
     } else {
         /* OK: no user data present yet */
     }
     $rootPanel = new RootPanel($this->menuId, 'billing.panel.fullname');
     $rootPanel->add(new ExportFormTile($form, true));
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     return new Response($tileRenderer->render($rootPanel));
 }
Example #18
0
 /**
  * @Route("/{vehicleId}/edit",name="tixiapi_vehicle_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{vehicleId}", route={"name"="tixiapi_vehicle_edit", "parameters"={"vehicleId"}})
  * @param Request $request
  * @param $vehicleId
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  */
 public function editVehicleAction(Request $request, $vehicleId)
 {
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     /** @var VehicleAssembler $assembler */
     $assembler = $this->get('tixi_api.assemblervehicle');
     $vehicle = $this->getVehicle($vehicleId);
     $vehicleDTO = $assembler->toVehicleRegisterDTO($vehicle);
     $form = $this->getForm($vehicleDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $vehicleDTO = $form->getData();
         $this->registerOrUpdateVehicle($vehicleDTO);
         $this->get('entity_manager')->flush();
         return $this->redirect($this->generateUrl('tixiapi_vehicle_get', array('vehicleId' => $vehicleId)));
     }
     $rootPanel = new RootPanel($this->menuId, 'vehicle.panel.edit');
     $rootPanel->add(new FormTile($form, true));
     $rootPanel->add(new PanelDeleteFooterTile($this->generateUrl('tixiapi_vehicle_delete', array('vehicleId' => $vehicleId)), 'vehicle.button.delete'));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/{absentId}/edit", name="tixiapi_driver_absent_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb(" {driverId}", route={"name"="tixiapi_driver_get", "parameters"={"driverId"}})
  * @Breadcrumb("absent.panel.edit")
  * @param Request $request
  * @param $driverId
  * @param $absentId
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  */
 public function editAbsentAction(Request $request, $driverId, $absentId)
 {
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $absentAssembler = $this->get('tixi_api.assemblerabsent');
     /**@var $driver \Tixi\CoreDomain\Absent */
     $absent = $this->getAbsent($absentId);
     $driver = $this->getDriver($driverId);
     $absentDTO = $absentAssembler->absentToAbsentRegisterDTO($absent);
     $form = $this->getForm($absentDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $absentDTO = $form->getData();
         $this->registerOrUpdateAbsentToDriver($absentDTO, $driver);
         $this->get('entity_manager')->flush();
         return $this->redirect($this->generateUrl('tixiapi_driver_get', array('driverId' => $driverId)));
     }
     $rootPanel = new RootPanel($this->menuId, 'absent.panel.edit');
     $rootPanel->add(new FormTile($form, true));
     $rootPanel->add(new PanelDeleteFooterTile($this->generateUrl('tixiapi_driver_absent_delete', array('driverId' => $driverId, 'absentId' => $absentId)), 'absent.button.delete'));
     return new Response($tileRenderer->render($rootPanel));
 }
Example #20
0
 /**
  * @Route("/{poiId}/edit", name="tixiapi_poi_edit")
  * @Method({"GET","POST"})
  * @Breadcrumb("{poiId}", route={"name"="tixiapi_poi_edit", "parameters"={"poiId"}})
  * @param Request $request
  * @param $poiId
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  */
 public function editPOIAction(Request $request, $poiId)
 {
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     $assembler = $this->get('tixi_api.assemblerpoi');
     $poi = $this->getPoi($poiId);
     $poiDTO = $assembler->poiToPOIRegisterDTO($poi);
     $form = $this->getForm($poiDTO);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $poiDTO = $form->getData();
         $this->registerOrUpdatePOI($poiDTO);
         $this->get('entity_manager')->flush();
         return $this->redirect($this->generateUrl('tixiapi_poi_get', array('poiId' => $poiId)));
     }
     $rootPanel = new RootPanel($this->menuId, 'poi.panel.edit');
     $rootPanel->add(new FormTile($form, true));
     $rootPanel->add(new PanelDeleteFooterTile($this->generateUrl('tixiapi_poi_delete', array('poiId' => $poiId)), 'poi.button.delete'));
     return new Response($tileRenderer->render($rootPanel));
 }
 /**
  * @Route("/{assertionId}/edit", name="tixiapi_driver_drivingassertion_edit")
  * @param Request $request
  * @param $driverId
  * @param $assertionId
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  */
 public function editDrivingAssertionAction(Request $request, $driverId, $assertionId)
 {
     $drivingAssertion = $this->getDrivingAssertionById($assertionId);
     $editDto = $this->getDrivingAssertionDTO($drivingAssertion);
     $form = $this->createForm(new DrivingAssertionEditType($this->menuId), $editDto);
     $form->handleRequest($request);
     if ($form->isValid()) {
         // do not save any data, the form is read-only
         return $this->redirect($this->generateUrl('tixiapi_driver_get', array('driverId' => $driverId)));
     }
     $rootpanel = new RootPanel($this->menuId, 'drivingassertion.panel.edit');
     /** @var PanelSplitterTile $panelSplitter */
     $panelSplitter = $rootpanel->add(new PanelSplitterTile('1:1'));
     /** @var PanelTile $formPanel */
     $formPanel = $panelSplitter->addLeft(new PanelTile('drivingassertion.panel.edit', PanelTile::$primaryType));
     $formPanel->add(new FormTile($form));
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     return new Response($tileRenderer->render($rootpanel));
 }
 /**
  * Create a new production plan for one month: step 4
  *
  * @Route("/new/end/{planId}", name="tixiapi_dispo_productionplan_new_end")
  * @Method({"GET","POST"})
  * @param Request $request
  * @param string $planId
  * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  * @throws \Exception
  */
 public function newProductionPlanActionEnd(Request $request, $planId)
 {
     if (false === $this->get('security.context')->isGranted('ROLE_MANAGER')) {
         throw new AccessDeniedException();
     }
     $tileRenderer = $this->get('tixi_api.tilerenderer');
     /** @var \DateTime $scope */
     $scope = $this->convertToDateTime($planId);
     $scopeSwiss = $planId;
     /** @var QueueService $queueService */
     $queueService = $this->get('tixi_app.queueservice');
     /* build form */
     $form = $this->createForm(new ProductionPlanCreateType($this->menuId));
     $form->get('state')->setData(self::END);
     $memos = $queueService->allValues($this->getQueueTag($scope));
     $form->get('memo')->setData($memos);
     /* manage request ------------------------- */
     $form->handleRequest($request);
     if ($form->isValid()) {
         return $this->redirect($this->generateUrl('tixiapi_dispo_productionplans_get'));
     }
     $rootPanel = new RootPanel($this->menuId, 'productionplan.panel.new', $scopeSwiss . ' - ' . $scope->format('t.m.Y'));
     $rootPanel->add(new ProductionPlanCreateTile($form, true));
     return new Response($tileRenderer->render($rootPanel));
 }