/**
  * @ApiDoc(
  *  resource=true,
  *  description="Met à jour une alerte partiellement",
  *  statusCodes = {
  *     204 = "Retourné lorsque bien modifié",
  *     400 = "Retourné lorsque probleme de paramètre invalide",
  *     404 = "Retourné quand l'alerte n'est pas trouvé"
  *   }
  * )
  * @RequestParam(name="positionLong", requirements="[-+]?(\d*[.])?\d+", description="longitude like 45.187637")
  * @RequestParam(name="positionLat", requirements="[-+]?(\d*[.])?\d+", description="latitude like -5.773306")
  * @RequestParam(name="category", description="category name 'vol','help' ")
  * @RequestParam(name="description", description="description")
  * @RequestParam(name="finished",requirements="[0-1]", description="is the alert finished? ")
  * @Route("/alerts/{id}", name="alert_patch")
  * @Method("PATCH")
  */
 public function patchAlertAction($id, ParamFetcherInterface $paramFetcher)
 {
     $errors = [];
     try {
         $alert = $this->get("doctrine.orm.default_entity_manager")->getRepository("AppBundle:Alert")->getAlertById($id);
     } catch (NoResultException $e) {
         throw $this->createNotFoundException("Alerte d'id {$id} n'existe pas");
     }
     $positionLat = $paramFetcher->get("positionLat", false);
     $positionLong = $paramFetcher->get("positionLong", false);
     $category = $paramFetcher->get("category", false);
     $description = $paramFetcher->get("description", false);
     $finished = $paramFetcher->get("finished", false);
     if ($positionLong != "" && $positionLat == "" || $positionLong == "" && $positionLat != "") {
         $errors[] = "La lattitude et la longitude doivent être renseigné";
     } elseif ($positionLong != "") {
         $alert->setPositionLat($positionLat);
         $alert->setPositionLong($positionLong);
     }
     if ($category != "") {
         $alert->setCategory($category);
     }
     if ($description != "") {
         $alert->setDescription($description);
     }
     if ($finished != "") {
         if ($finished) {
             $alert->setFinishedAt(new \DateTime());
         } else {
             $alert->setFinishedAt(null);
         }
     }
     //beurk dégeulasse mais probleme pour valider le formulaire
     if ($positionLat == "" && $category == "" && $finished == "" && $description == "" && $positionLong == "") {
         $errors[] = "aucun parametre";
     }
     if (count($errors) == 0) {
         $this->get('service.alert')->updateAlert($alert);
         $response = new Response();
         $response->setStatusCode(204);
         $infos = Geocoder::getLocation($alert->getPositionLat(), $alert->getPositionLong());
         return $response;
     } else {
         return View::create($errors, 400);
     }
 }
 /**
  * @param Alert $alert
  *
  * @return AlertDTO
  */
 public function updateAlert(Alert $alert)
 {
     $infos = Geocoder::getLocation($alert->getPositionLat(), $alert->getPositionLong());
     $city = Geocoder::getCityFromAddress($infos);
     $department = Geocoder::getDepartmentFromAddress($infos);
     $country = Geocoder::getCountryFromAddress($infos);
     $alert->setPositionCity($city);
     $alert->setPositionDep($department);
     $alert->setPositionCountry($country);
     $this->em->persist($alert);
     $this->em->flush();
     return new AlertDTO($alert);
 }
 /**
  * @param User $user
  *
  * @return UserDTO
  */
 public function updateUser(User $user)
 {
     $infos = Geocoder::getLocation($user->getPositionLat(), $user->getPositionLong());
     $city = Geocoder::getCityFromAddress($infos);
     $department = Geocoder::getDepartmentFromAddress($infos);
     $country = Geocoder::getCountryFromAddress($infos);
     $user->setPositionCity($city);
     $user->setPositionDep($department);
     $user->setPositionCountry($country);
     $this->em->persist($user);
     $this->em->flush();
     return new UserDTO($user);
 }