Esempio n. 1
0
 /**
  * Permet la creation ou la modificaton d'un fournisseur
  */
 public function formulairefournisseurAction()
 {
     /* Initialisation de variables */
     // Récupération du traducteur
     $translator = $this->getServiceLocator()->get('Translator');
     // Récupération de l'EntityManager
     $em = $this->getEntityManager();
     // Récupération de la requete
     $request = $this->getRequest();
     // Récupération de la session du fournisseur
     $session = new Container('societeSession');
     $utilisateur = new Container('utilisateur');
     /* Initialisation du fournisseur */
     $fournisseur = null;
     $id = (int) $this->params()->fromRoute('id');
     if (!empty($id)) {
         // Récupération du fournisseur
         $fournisseur = $em->getRepository('Fournisseur\\Entity\\Fournisseur')->find($id);
         if ($fournisseur == null) {
             throw new \Exception($translator->translate('Ce fournisseur n\'existe pas'));
         }
         //Assignation de variables au layout
         $this->layout()->setVariables(array('headTitle' => $translator->translate('Modifier un fournisseur'), 'breadcrumbActive' => $fournisseur->getRaisonSociale(), 'route' => array('Fournisseurs', 'Modification'), 'action' => 'formulairefournisseur', 'module' => 'fournisseur', 'plugins' => array('jquery-ui', 'mask')));
     } else {
         // On crée un nouveau fournisseur
         $id = null;
         $fournisseur = new Fournisseur();
         //Assignation de variables au layout
         $this->layout()->setVariables(array('headTitle' => $translator->translate('Nouveau fournisseur'), 'breadcrumbActive' => $translator->translate('Nouveau fournisseur'), 'route' => array('Fournisseurs'), 'action' => 'formulairefournisseur', 'module' => 'fournisseur', 'plugins' => array('jquery-ui', 'mask')));
     }
     // Mise en session des adresses du fournisseur
     $array1 = array();
     if (!$request->isPost()) {
         $adresses = $fournisseur->getAdresses();
         foreach ($adresses as $a) {
             $uniqid = uniqid('', true);
             $array1[$uniqid] = $a->getArrayCopy();
         }
     } else {
         $array1 = $session->offsetGet('adresses', array());
     }
     $session->offsetSet('adresses', $array1);
     // Mise en session des interlocuteurs du fournisseur
     $array2 = array();
     if (!$request->isPost()) {
         $interlocuteurs = $fournisseur->getInterlocuteurs();
         foreach ($interlocuteurs as $i) {
             $uniqid = uniqid('', true);
             $array2[$uniqid] = $i->getArrayCopy();
         }
     } else {
         $array2 = $session->offsetGet('interlocuteurs', array());
     }
     $session->offsetSet('interlocuteurs', $array2);
     // Creation du formulaire du fournisseur
     $form = new FournisseurForm($translator, $em, $request, $fournisseur);
     if ($request->isPost()) {
         //$adresse=new \Application\Entity\Adresse;
         $form->setData($request->getPost());
         if ($form->isValid()) {
             /* Hydratation de l'objet fournisseur avec les données du formulaire */
             $fournisseur->exchangeArray($form->getData(), $em);
             /* Remplacement des adresses du fournisseur par celles en Session */
             $adresses = $session->offsetGet('adresses', array());
             foreach ($fournisseur->getAdresses() as $a1) {
                 $fournisseur->removeAdresse($a1);
             }
             foreach ($adresses as $a2) {
                 $nouvelleAdresse = new Adresse();
                 $nouvelleAdresse->exchangeArray($a2, $em);
                 $fournisseur->addAdresse($nouvelleAdresse);
             }
             /* Remplacement des interlocuteurs du fournisseur par ceux en Session */
             $interlocuteurs = $session->offsetGet('interlocuteurs', array());
             foreach ($fournisseur->getInterlocuteurs() as $i1) {
                 $fournisseur->removeInterlocuteur($i1);
             }
             foreach ($interlocuteurs as $i2) {
                 $nouvelInterlocuteur = new InterlocuteurFournisseur();
                 $nouvelInterlocuteur->exchangeArray($i2, $em);
                 $fournisseur->addInterlocuteur($nouvelInterlocuteur);
             }
             try {
                 $em->persist($fournisseur);
                 // Persiste les adresses et les interlocuteurs en cascade avec le fournisseur
                 $em->flush();
             } catch (\Exception $e) {
                 $erreurMessage = $translator->translate('Une erreur est survenue durant la sauvegarde du fournisseur. Vérifiez que tous les champs sont valides (Informations générales, interlocuteurs, adresses..).');
                 $messagesFlash = $this->flashArray;
                 $messagesFlash['errors'][] = $erreurMessage;
                 $utilisateur->offsetSet('messagesFlash', $messagesFlash);
                 return new ViewModel(array('fournisseur' => $fournisseur, 'form' => $form, 'id' => $id));
             }
             return $this->redirect()->toRoute('fournisseur/consulter_fournisseur', array('id' => $fournisseur->getId()));
         }
     }
     return new ViewModel(array('fournisseur' => $fournisseur, 'form' => $form, 'id' => $id));
 }
Esempio n. 2
0
 public function formulaireadressesessionAction()
 {
     if ($this->getRequest()->isXmlHttpRequest()) {
         /* Initialisation de variables */
         $statusForm = null;
         // Récupération du traducteur
         $translator = $this->getServiceLocator()->get('Translator');
         // Récupération de l'EntityManager
         $em = $this->getEntityManager();
         // Récupération de la requete
         $request = $this->getRequest();
         $session = new Container('societeSession');
         $adresses = $session->offsetGet('adresses', array());
         /* Initialisation de l'adresse */
         $adresse = new Adresse();
         $uniqid = $this->params()->fromRoute('id');
         if (!empty($uniqid)) {
             // Récupération de l'adresse depuis la base de données
             //$adresse=$em->getRepository('Adresse\Entity\Adresse')->find($id);
             // Récupération de l'adresse depuis la session
             $a = $adresses[$uniqid];
             if ($a == null) {
                 throw new \Exception($translator->translate('Cette adresse  n\'existe pas'));
             }
             $adresse->exchangeArray($a, $em);
         } else {
             $uniqid = null;
             /* // Ajout d'une reférence vers le client ou le fournisseur pour la nouvelle adresse
                if(isset($_GET['from']) && isset($_GET['refFrom']))
                {
                    $refFrom=(int)$_GET['refFrom'];
                    switch($_GET['from'])
                    {
                        case 'client':
                            $client=$em->getRepository('Client\Entity\Client')->find($refFrom);
                            $adresse->setRefClient($client);
                        break;
                        case 'fournisseur':
                            $fournisseur = $em->getRepository('Fournisseur\Entity\Fournisseur')->find($refFrom);
                            $adresse->setRefFournisseur($fournisseur);
                        break;
                    }
                }*/
         }
         /* Creation du formulaire d'adresse */
         $form = new AdresseForm($translator, $em, $adresse, $request);
         if ($request->isPost()) {
             $form->setData($request->getPost());
             if ($form->isValid()) {
                 $statusForm = true;
                 $adresse->exchangeArray($form->getData(), $em);
                 if (is_null($uniqid)) {
                     $uniqid = uniqid('', true);
                 }
                 $adresses[$uniqid] = $adresse->getArrayCopy();
                 $session->offsetSet('adresses', $adresses);
                 $spanAdresse = $this->creationSpanAdresse($adresse, $uniqid);
                 return new JsonModel(array('statut' => $statusForm, 'uniqid' => $uniqid, 'reponse' => $spanAdresse));
             } else {
                 $statusForm = false;
                 $errors = $form->getMessages();
                 return new JsonModel(array('statut' => $statusForm, 'reponse' => $errors));
             }
         }
         /* Affichage du formulaire sans le layout (en modal) */
         $viewModel = new ViewModel();
         $viewModel->setVariables(array('adresse' => $adresse, 'form' => $form, 'id' => $uniqid))->setTerminal(true);
         return $viewModel;
     }
     return $this->redirect()->toRoute('home');
     // Ou on redirige l'utilisateur vers une autre page
 }
Esempio n. 3
0
 /**
  * Permet la creation ou la modificaton d'un client
  */
 public function formulaireclientAction()
 {
     /* Initialisation de variables */
     $sm = $this->getServiceLocator();
     // Récupération du traducteur
     $translator = $sm->get('Translator');
     // Récupération de l'EntityManager
     $em = $this->getEntityManager();
     // Récupération de la requete
     $request = $this->getRequest();
     // Récupération de la session du client
     $session = new Container('societeSession');
     $utilisateur = new Container('utilisateur');
     /* Initialisation du client */
     $client = null;
     $id = (int) $this->params()->fromRoute('id');
     if (!empty($id)) {
         // Récupération du client
         $client = $em->getRepository('Client\\Entity\\Client')->find($id);
         if ($client == null) {
             throw new \Exception($translator->translate('Ce client n\'existe pas'));
         }
         //Assignation de variables au layout
         $this->layout()->setVariables(array('headTitle' => $translator->translate('Modifier un client'), 'breadcrumbActive' => $client->getRaisonSociale(), 'route' => array('Clients', 'Modification'), 'action' => 'formulaireclient', 'module' => 'client', 'plugins' => array('jquery-ui', 'mask', 'chosen')));
     } else {
         // On crée un nouveau client
         $id = null;
         $client = new Client();
         //Assignation de variables au layout
         $this->layout()->setVariables(array('headTitle' => $translator->translate('Nouveau client'), 'breadcrumbActive' => $translator->translate('Nouveau client'), 'route' => array('Clients'), 'action' => 'formulaireclient', 'module' => 'client', 'plugins' => array('jquery-ui', 'mask', 'chosen')));
     }
     // Creation du formulaire du client
     $form = new ClientForm($translator, $sm, $em, $request, $client);
     //$form->get('segments')->setData($client->getSegmentsId());
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             /* Hydratation de l'objet Client avec les données du formulaire */
             // var_dump($form->getData());die();
             $client->exchangeArray($form->getData(), $em);
             //$em->refresh($client); // Ceci permet de mettre à jour le client avec les données de la base de données (pour réccupérer l'ID par exemple)
             /* Remplacement des adresses du client par celles en Session */
             $segments = $form->getData()['segments'];
             $produits = $form->getData()['produits_finis'];
             // var_dump($segments);
             // var_dump($produits);
             // die();
             if (is_array($segments) && count($segments) > 0) {
                 $client->getSegments()->clear();
                 foreach ($segments as $segment) {
                     if ($segment != "") {
                         $client->addSegment($em->getRepository('Client\\Entity\\Segment')->findOneBy(array('id' => $segment)));
                     }
                 }
             }
             if (is_array($produits) && count($produits) > 0) {
                 $client->getProduitsFinis()->clear();
                 foreach ($produits as $produit) {
                     if ($produit != "") {
                         $client->addProduitFini($em->getRepository('Client\\Entity\\ProduitFini')->findOneById($produit));
                     }
                 }
             }
             $adresses = $session->offsetGet('adresses', array());
             foreach ($client->getAdresses() as $a1) {
                 $client->removeAdresse($a1);
             }
             // $client->getAdresses()->clear(); // Ceci ne supprime ^pas la référence de l'adresse vers le client, donc pas sûr que la persistence soit respectée des deux cotés
             foreach ($adresses as $a2) {
                 $nouvelleAdresse = new Adresse();
                 $nouvelleAdresse->exchangeArray($a2, $em);
                 $client->addAdresse($nouvelleAdresse);
             }
             /* Remplacement des interlocuteurs du client par ceux en Session */
             $interlocuteurs = $session->offsetGet('interlocuteurs', array());
             foreach ($client->getInterlocuteurs() as $i1) {
                 $client->removeInterlocuteur($i1);
             }
             // $client->getInterlocuteurs()->clear();
             foreach ($interlocuteurs as $i2) {
                 $nouvelInterlocuteur = new InterlocuteurClient();
                 $nouvelInterlocuteur->exchangeArray($i2, $em);
                 $client->addInterlocuteur($nouvelInterlocuteur);
             }
             try {
                 $em->persist($client);
                 // Persiste les adresses et les interlocuteurs en cascade avec le client
                 $em->flush();
             } catch (\Exception $e) {
                 $erreurMessage = $translator->translate('Une erreur est survenue durant la sauvegarde du client. Vérifiez que tous les champs sont valides (Informations générales, interlocuteurs, adresses..).') . $e->getMessage();
                 $messagesFlash = $this->flashArray;
                 $messagesFlash['errors'][] = $erreurMessage;
                 $utilisateur->offsetSet('messagesFlash', $messagesFlash);
                 return new ViewModel(array('client' => $client, 'form' => $form, 'id' => $id));
             }
             return $this->redirect()->toRoute('client/consulter_client', array('id' => $client->getId()));
         }
     }
     // Mise en session des interlocuteurs et adresses du client
     $array1 = $array2 = array();
     $adresses = $client->getAdresses();
     $interlocuteurs = $client->getInterlocuteurs();
     foreach ($adresses as $a) {
         $uniqid = uniqid('', true);
         $array1[$uniqid] = $a->getArrayCopy();
     }
     foreach ($interlocuteurs as $i) {
         $uniqid = uniqid('', true);
         $array2[$uniqid] = $i->getArrayCopy();
     }
     $session->offsetSet('adresses', $array1);
     $session->offsetSet('interlocuteurs', $array2);
     return new ViewModel(array('client' => $client, 'form' => $form, 'id' => $id));
 }