/** * {@inheritDoc} */ public function exchangeArray($data = array(), $em = NULL) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'exchangeArray', array($data, $em)); return parent::exchangeArray($data, $em); }
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'); }