/**
  * {@inheritDoc}
  */
 public function exchangeArray($data = array(), $em = NULL)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'exchangeArray', array($data, $em));
     return parent::exchangeArray($data, $em);
 }
Exemplo n.º 2
0
 public function formulairesaisiehoraireAction()
 {
     if ($this->getRequest()->isXmlHttpRequest()) {
         /************************************** Initialisation de variables **************************************/
         $statusForm = null;
         // Récupération de l'EntityManager
         $em = $this->getEntityManager();
         // Récupération du Service Manager
         $sm = $this->getServiceLocator();
         // Récupération du traducteur
         $translator = $sm->get('Translator');
         // Récupération de la requete
         $request = $this->getRequest();
         $utilisateur = new Container('utilisateur');
         /*********************************** Initialisation de la saisie heure ***********************************/
         $saisieHoraire = null;
         // On recupère la date en timestamp
         $date = $this->params()->fromRoute('date');
         list($y, $m, $d) = explode('-', $date);
         // Split day, month and year in chaines
         $timestamp = mktime(4, 0, 0, (int) $m, (int) $d, (int) $y);
         // Retourne un timestamp
         // On reccupère l'utilisateur courant
         $idPersonnel = $utilisateur->offsetGet('id');
         $utilisateurCourant = $em->getRepository('Personnel\\Entity\\Personnel')->find($idPersonnel);
         if ($utilisateurCourant == null) {
             throw new \Exception($translator->translate('Une erreur est survenue au chargement des horaires.'));
         }
         // On recupère la saisie à partir de la date et du personnel
         $saisieHoraire = $em->getRepository('FicheHeure\\Entity\\SaisieHeureJournee')->findOneBy(array('date' => $timestamp, 'refPersonnel' => $idPersonnel));
         if ($saisieHoraire == null) {
             // On crée une nouvelle saisie d'horaires
             $saisieHoraire = new SaisieHeureJournee($utilisateurCourant, $date);
         }
         /******************************* Creation du formulaire de saisie d'heure *******************************/
         $form = new SaisieHeureJourneeForm($translator, $sm, $em, $request, $saisieHoraire);
         if ($request->isPost()) {
             $form->setData($request->getPost());
             if ($form->isValid()) {
                 $statusForm = true;
                 $saisieHoraire->exchangeArray($form->getData(), $em);
                 $saisieHeure = new SaisieHeureProjet();
                 $saisieHeure->exchangeArrayFromSaisieHoraire($form->getData(), $em);
                 $saisieHeure->setRefSaisieHoraire($saisieHoraire);
                 $em->persist($saisieHoraire);
                 $em->persist($saisieHeure);
                 $em->flush();
                 return new JsonModel(array('statut' => $statusForm));
             } 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('saisieHoraire' => $saisieHoraire, 'date' => $date, 'form' => $form))->setTerminal(true);
         return $viewModel;
     }
     return $this->redirect()->toRoute('home');
 }