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()))); }