Example #1
0
 public function criarAction()
 {
     $this->autenticacao();
     $data = $this->getRequest()->getPost();
     if (isset($data['cancelar'])) {
         return $this->_helper->redirector->goToRoute(array('controller' => 'caravana', 'action' => 'index'), null, true);
     }
     $this->_helper->viewRenderer->setRender('salvar');
     $sessao = Zend_Auth::getInstance()->getIdentity();
     $cache = Zend_Registry::get('cache_common');
     $ps = $cache->load('prefsis');
     $idEncontro = (int) $ps->encontro["id_encontro"];
     $idPessoa = $sessao["idPessoa"];
     $caravana = new Application_Model_Caravana();
     if ($caravana->verificaCaravana($idPessoa, $idEncontro)) {
         // previne que o mesmo usuário crie 2 caravanas
         return $this->_helper->redirector->goToRoute(array('controller' => 'caravana', 'action' => 'editar'), null, true);
     }
     $form = new Application_Form_Caravana();
     $form->setAction($this->view->url(array('controller' => 'caravana', 'action' => 'criar')));
     $this->view->form = $form;
     $data = $this->getRequest()->getPost();
     if ($this->getRequest()->isPost() && $form->isValid($data)) {
         $caravana = new Application_Model_Caravana();
         $caravana_encontro = new Application_Model_CaravanaEncontro();
         $data = $form->getValues();
         $adapter = $caravana->getAdapter();
         try {
             $adapter->beginTransaction();
             $m_encontro = new Application_Model_Encontro();
             $data['criador'] = $idPessoa;
             $cache = Zend_Registry::get('cache_common');
             $ps = $cache->load('prefsis');
             $idEncontro = (int) $ps->encontro["id_encontro"];
             $data2['id_encontro'] = $idEncontro;
             $data2['responsavel'] = $idPessoa;
             $data2['id_caravana'] = $caravana->insert($data);
             $caravana_encontro->insert($data2);
             $adapter->commit();
             return $this->_helper->redirector->goToRoute(array('controller' => 'caravana', 'action' => 'index'), null, true);
         } catch (Zend_Db_Exception $ex) {
             $adapter->rollBack();
             // 23505 UNIQUE VIOLATION
             if ($ex->getCode() == 23505) {
                 $this->_helper->flashMessenger->addMessage(array('danger' => _('A caravan with this description already exists.')));
             } else {
                 $this->_helper->flashMessenger->addMessage(array('danger' => _('An unexpected error ocurred.<br/> Details:&nbsp;') . $ex->getMessage()));
             }
         }
     }
     $this->view->title = _('Create Caravan');
 }