public function create(Document $document, User $user, Dropzone $dropzone, ReturnReceiptType $returnReceiptType)
 {
     $returnReceipt = new ReturnReceipt();
     $returnReceipt->setDocument($document);
     $returnReceipt->setUser($user);
     $returnReceipt->setDropzone($dropzone);
     $returnReceipt->setReturnReceiptType($returnReceiptType);
     $this->em->persist($returnReceipt);
     return $returnReceipt;
 }
 /**
  * @Route(
  *      "/drop/reception",
  *      name="innova_collecticiel_return_receipt",
  *      options={"expose"=true}
  * )
  * @Template()
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function returnReceiptAction()
 {
     // Récupération de l'ID de l'accusé de réception choisi
     $returnReceiptId = $this->get('request')->query->get('returnReceiptId');
     $returnReceiptType = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:ReturnReceiptType')->find($returnReceiptId);
     // Récupération de l'ID du dropzone choisi
     $dropzoneId = $this->get('request')->query->get('dropzoneId');
     $dropzone = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:Dropzone')->find($dropzoneId);
     // Récupération des documents sélectionnés
     $arrayDocsId = $this->get('request')->query->get('arrayDocsId');
     $em = $this->getDoctrine()->getManager();
     // Récupération de l'utilisateur
     $user = $this->get('security.token_storage')->getToken()->getUser();
     // Parcours des documents sélectionnés et insertion en base de données
     foreach ($arrayDocsId as $documentId) {
         // Par le JS, le document est transmis sous la forme "document_id_XX"
         $docIdS = explode("_", $documentId);
         $docId = $docIdS[2];
         // Récupération de l'objet document
         $document = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:Document')->findBy(array('id' => $docId));
         // Nombre de demandes adressées/ Repo : Document
         $countHaveReturnReceiptOrNotForADocument = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:ReturnReceipt')->haveReturnReceiptOrNotForADocument($user, $dropzone, $document[0]);
         // S'il y a déjà un accusé de réception alors je le supprime avant de créer le nouveau
         if ($countHaveReturnReceiptOrNotForADocument != 0) {
             // Nombre de demandes adressées/ Repo : Document
             $reqDeleteReturnReceipt = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:ReturnReceipt')->deleteReturnReceipt($user, $dropzone, $document[0]);
         }
         // Création du nouvel accusé de réception
         $returnReceipt = new ReturnReceipt();
         $returnReceipt->setDocument($document[0]);
         $returnReceipt->setUser($user);
         $returnReceipt->setDropzone($dropzone);
         $returnReceipt->setReturnReceiptType($returnReceiptType);
         $em->persist($returnReceipt);
     }
     // Mise en base, enregistrement
     $em->flush();
     $dropzoneManager = $this->get('innova.manager.dropzone_manager');
     $dropzoneVoter = $this->get('innova.manager.dropzone_voter');
     $em = $this->getDoctrine()->getManager();
     $flashbag = $this->getRequest()->getSession()->getFlashBag();
     // on teste si l'utilisateur à le droit d'ouvrir le dropzone
     $dropzoneVoter->isAllowToOpen($dropzone);
     $canEdit = $dropzoneVoter->checkEditRight($dropzone);
     $activeRoute = $this->getRequest()->attributes->get('_route');
     $collecticielOpenOrNot = $dropzoneManager->collecticielOpenOrNot($dropzone);
     return $this->redirect($this->generateUrl('innova_collecticiel_drops_awaiting', array('resourceId' => $dropzone->getId())));
 }