/**
  * Creates a new ShiftTechnician entity.
  *
  * @Template()
  * @Secure(roles="ROLE_USER")
  */
 public function createAction(Request $request)
 {
     $entity = new ShiftTechnician();
     $entity->setCreation(new \DateTime());
     $form = $this->createForm(new RecuperationEquipmentType(), $entity);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $em = $this->getDoctrine()->getManager();
         $em->persist($entity->getShifting()->setCreation(new \DateTime()));
         $em->persist($entity);
         $em->flush();
         if ($this->getRequest()->isXmlHttpRequest()) {
             return new JsonResponse(array());
         }
         return $this->redirect($request->headers->get('referer'));
     }
     return array('entity' => $entity, 'form' => $form->createView(), 'previous' => $request->headers->get('referer'));
 }
 /**
  * Delete an existing ShiftTechnician entity.
  *
  * @Template()
  * @Secure(roles="ROLE_USER")
  */
 public function deleteAction(ShiftTechnician $entity)
 {
     $intervId = $entity->getShifting()->getId();
     $em = $this->getDoctrine()->getManager();
     $em->remove($entity);
     $em->flush();
     return $this->redirect($this->generateUrl('intervention_redirect', array('id' => $intervId, 'act' => 'show')));
 }
 /**
  * Cherche les entretiens les plus proche d'une adresse
  *
  * @Template()
  */
 public function neighborAction(Door $door)
 {
     $em = $this->getDoctrine()->getManager();
     // Choper les entretiens à faire
     $repo = $em->getRepository('JLMDailyBundle:Maintenance');
     $maints = $repo->getOpened();
     $repo = $em->getRepository('JLMDailyBundle:Ride');
     $baseUrl = 'http://maps.googleapis.com/maps/api/distancematrix/json?sensor=false&language=fr-FR&origins=' . $door->getCoordinates() . '&destinations=';
     foreach ($maints as $maint) {
         $dest = $maint->getDoor();
         if (!$repo->hasRide($door, $dest)) {
             $url = $baseUrl . $dest->getCoordinates();
             $string = file_get_contents($url);
             $json = json_decode($string);
             if ($json->status == 'OK' && isset($json->rows[0]->elements[0]->duration->value) && isset($json->rows[0]->elements[0]->duration->value)) {
                 $ride = new Ride();
                 $ride->setDeparture($door);
                 $ride->setDestination($dest);
                 $ride->setDuration($json->rows[0]->elements[0]->duration->value);
                 $ride->setDistance($json->rows[0]->elements[0]->distance->value);
                 $em->persist($ride);
             }
         }
     }
     $em->flush();
     $entities = $repo->getMaintenanceNeighbor($door, 30);
     $forms = array();
     foreach ($entities as $entity) {
         $shift = new ShiftTechnician();
         $shift->setBegin(new \DateTime());
         $forms[] = $this->get('form.factory')->createNamed('shiftTechNew' . $entity->getDestination()->getNextMaintenance()->getId(), new AddTechnicianType(), $shift)->createView();
     }
     return array('door' => $door, 'entities' => $entities, 'forms_addTech' => $forms);
 }
Exemplo n.º 4
0
 private function _show(ShiftTechnician $entity)
 {
     $shifting = $entity->getShifting();
     $types = array('fixing' => 'Dépannage', 'maintenance' => 'Entretien', 'work' => 'Travaux');
     $dayTrans = array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi');
     $datas[0] = $dayTrans[$entity->getBegin()->format('w')] . chr(10) . $entity->getBegin()->format('d/m/Y');
     $datas[1] = 'le ' . $shifting->getCreation()->format('d/m/Y H:i') . chr(10) . $shifting->getContactName() . chr(10) . $shifting->getContactPhones();
     $datas[2] = $types[$shifting->getType()];
     $datas[3] = $shifting->getContract() == 'Hors contrat' ? 'HC' : $shifting->getContract();
     $datas[4] = $shifting->getReason();
     if ($shifting instanceof JLM\DailyBundle\Entity\Work) {
         if ($shifting->getQuote() !== null) {
             $datas[4] = 'Travaux selon devis n°' . $shifting->getQuote()->getNumber() . chr(10) . $datas[4];
         }
     }
     $datas[5] = '';
     if ($entity->getComment()) {
         $datas[5] = 'Technicien :' . chr(10) . $entity->getComment() . chr(10) . chr(10);
     } else {
         $interv = $entity->getShifting();
         if ($interv instanceof JLM\DailyBundle\Entity\Fixing) {
             $datas[5] = 'Constat :' . chr(10) . $interv->getObservation() . chr(10) . chr(10);
         }
         $datas[5] .= 'Action menée :' . chr(10) . $interv->getReport();
         if ($interv->getRest()) {
             $datas[5] .= chr(10) . chr(10) . 'Reste à faire :' . chr(10) . $interv->getRest();
         }
     }
     $datas[6] = $entity->getTechnician() . '';
     if ($entity->getEnd()) {
         $datas[6] .= chr(10) . $entity->getBegin()->format('H\\hi') . ' - ' . $entity->getEnd()->format('H\\hi') . chr(10) . $entity->getTime()->format('%h:%I');
     }
     $this->row($datas, 5, 1, false);
 }