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: ') . $ex->getMessage())); } } } $this->view->title = _('Create Caravan'); }