Beispiel #1
0
 public function formulairepersonnelAction()
 {
     if ($this->getRequest()->isXmlHttpRequest()) {
         /* Initialisation de variables */
         $statusForm = null;
         // Récupération du Service Manager
         $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();
         $utilisateur = new Container('utilisateur');
         /* Initialisation du client */
         $id = (int) $this->params()->fromRoute('id');
         $personnel = null;
         if (!empty($id)) {
             // Récupération du personnel
             $personnel = $em->getRepository('Personnel\\Entity\\Personnel')->find($id);
             if ($personnel == null) {
                 throw new \Exception($translator->translate('Cet utilisateur n\'existe pas'));
             }
             //Assignation de variables au layout
             $this->layout()->setVariables(array('headTitle' => $translator->translate('Profil utilisateur'), 'breadcrumbActive' => $personnel->getPrenom() . ' ' . $personnel->getNom(), 'route' => array(), 'action' => 'formulairepersonnel', 'module' => 'personnel', 'plugins' => array()));
         } else {
             // On crée un nouvel utilisateur
             $id = null;
             $personnel = new Personnel();
             //Assignation de variables au layout
             $this->layout()->setVariables(array('headTitle' => $translator->translate('Nouvel utilisateur'), 'breadcrumbActive' => $translator->translate('Nouvel utilisateur'), 'route' => array(), 'action' => 'formulairepersonnel', 'module' => 'personnel', 'plugins' => array()));
         }
         // Creation du formulaire du personnel
         $form = new PersonnelForm($translator, $personnel, $sm, $em, $request);
         if ($request->isPost()) {
             $form->setData($request->getPost());
             if ($form->isValid()) {
                 /* Hydratation de l'objet Personnel avec les données du formulaire */
                 $statusForm = true;
                 $personnel->exchangeArray($form->getData(), $em);
                 if ($id == null) {
                     $motDePasse = $this->genererMotDePasse();
                     $personnel->setMotDePasse(md5($motDePasse));
                 }
                 try {
                     $em->persist($personnel);
                     $em->flush();
                     if ($personnel->getAdministrateur()) {
                         $motDePasse = $utilisateur->offsetGet('mot_de_passe');
                         $em->refresh($personnel);
                         // Ceci permet de mettre à jour le personnel avec les données de la base de données (pour réccupérer l'ID par exemple)
                         $this->miseEnSessionUtilisateur($personnel, $motDePasse);
                         // Mise à jour du personnel en session s'il s'agit de la personne connectée
                     }
                     return new JsonModel(array('statut' => $statusForm, 'pwd' => $motDePasse));
                 } catch (\Exception $e) {
                     $erreurMessage = $translator->translate('Une erreur est survenue durant la sauvegarde de votre profil. Vérifiez que tous les champs sont valides.');
                     $messagesFlash = $this->flashArray;
                     $messagesFlash['errors'][] = $erreurMessage;
                     $utilisateur->offsetSet('messagesFlash', $messagesFlash);
                     /* Affichage du formulaire sans le layout (en modal) */
                     $viewModel = new ViewModel();
                     $viewModel->setVariables(array('personnel' => $personnel, 'form' => $form, 'id' => $id))->setTerminal(true);
                     return $viewModel;
                 }
                 return $this->redirect()->toRoute('personnel');
             } 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('personnel' => $personnel, 'form' => $form, 'id' => $id))->setTerminal(true);
         return $viewModel;
     }
     return $this->redirect()->toRoute('home');
 }
 /**
  * {@inheritDoc}
  */
 public function setMotDePasse($motDePasse)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'setMotDePasse', array($motDePasse));
     return parent::setMotDePasse($motDePasse);
 }