public function remove(Base $base) { $file = $base->getPath(); if (!$file) { throw new \InvalidArgumentException('There is no file to delete!'); } if (file_exists($this->directory)) { if ($file = $this->directory) { unlink($file); } } }
public function updateAction(Base $base, Request $request) { if (!$base) { throw $this->createNotFoundException('No Base found'); } $oldFile = $base->getPath(); $user = $this->container->get('security.context')->getToken()->getUser(); if ($base->getUser() !== $user) { throw new AccessDeniedException(); } // Creation du formulaire $form = $this->createForm(new BaseType(), $base); $form->handleRequest($request); // Si le formulaire est submit et la validation correct if ($form->isValid()) { // Recupération de l'entity manager $em = $this->getDoctrine()->getManager(); // Recuperation du path du fichier soumis $filePath = $form->get('file')->getData()->getPathName(); // On supprime les anciennes base details $this->removeBaseDetail($base); $uploadPathFile = $this->get('public_user.upload_base')->update($base, $oldFile); // On persist la base et on la flush pour créer son id $em->persist($base); $em->flush(); // On récupère le service qui va envoyer le match $sendMatching = $this->container->get('populate_exchange_sender'); $response = $sendMatching->send($uploadPathFile, $base->getId()); // Si le service n'a pas rempli la base de donnée des Bases Details if (null !== $response) { // Sinon on ajout en bd le nombre de ligne du fichier et l'User associé $base->setRowCount($response); $base->setUser($user); // Et on envoi les données $em->persist($base); $em->flush(); if (!$this->get('security.context')->isGranted('ROLE_ADMIN')) { $this->removePreviousMatching($base); $this->sendMatching($base); } $this->setFlash('sonata_user_success', 'upload.flash.success'); return $this->redirect($this->generateUrl('base_list')); } else { $this->setFlash('sonata_user_error', 'upload.flash.error'); return $this->redirect($this->generateUrl('base_upload')); } } return $this->render('base/base_upload.html.twig', array('form' => $form->createView())); }
/** * @param boolean $updateAction * @param Base $base */ protected function populateBaseDetail($base) { $file = $base->getPath(); $em = $this->getConfigurationPool()->getContainer()->get('doctrine')->getEntityManager(); // Si un fichier à été soumis durant le formulaire if (null !== $file) { // On récupère le service qui va envoyer le populate $sendMatching = $this->getConfigurationPool()->getContainer()->get('populate_exchange_sender'); $responsePopulate = $sendMatching->send($file, $base->getId()); // Si le service renvoi une valeur null if (null !== $responsePopulate) { // Sinon on incremente le nombre de ligne par le nombre de ligne du fichier $base->setRowCount($responsePopulate); // Et on envoi les données $em->flush(); } else { $em->remove($base); $em->flush(); $this->setFlash('sonata_user_error', 'upload.flash.error'); //throw new AdminException("Problème dans l'import du fichier CSV: $file, veuillez enregistrer un fichier valide"); } } }