Пример #1
0
 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);
         }
     }
 }
Пример #2
0
 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()));
 }
Пример #3
0
 /**
  * @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");
         }
     }
 }