/**
  * {@inheritDoc}
  */
 public function addAdresse(\Adresse\Entity\Adresse $adresse)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'addAdresse', array($adresse));
     return parent::addAdresse($adresse);
 }
Esempio n. 2
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));
 }