public function removeAdresse(Adresse $adresse) { $this->adresses->removeElement($adresse); $adresse->setRefClient(null); //Mais si on supprime l'adresse cela se répercute en base de données /!\ }
/** * 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)); }
public function creationSpanAdresse(Adresse $adresse, $uniqId) { // Récupération du traducteur $translator = $this->getServiceLocator()->get('Translator'); $spanAdresse = '<span class="entite adresse">'; if ($adresse->getAdressePrincipale() == true) { $spanAdresse .= '<small class="label label-info">' . $translator->translate('Principale') . '</small> '; } if ($adresse->getAdresseFacturation() == true) { $spanAdresse .= '<small class="label label-danger">' . $translator->translate('Facturation') . '</small> '; } if ($adresse->getAdresseLivraison() == true) { $spanAdresse .= '<small class="label label-primary">' . $translator->translate('Livraison') . '</small> '; } if ($adresse->getAdressePostale() == true) { $spanAdresse .= '<small class="label label-default">' . $translator->translate('Postale') . '</small> '; } $spanAdresse .= $adresse->getRue1() . ' ' . $adresse->getRue2() . ' ' . $adresse->getRue3() . ' ' . $adresse->getCodePostal() . ' ' . $adresse->getVille() . ' ' . $adresse->getPays() . '<input type="hidden" value="' . $uniqId . '"/> <i class="fa fa-times pull-right" title="' . $translator->translate('Supprimer') . '"></i> </span>'; return $spanAdresse; }
/** * 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)); }