/** * Mapeada como * /participar */ public function criarAction() { $this->view->menu = ""; $form = new Application_Form_Pessoa(); $this->view->form = $form; $data = $this->getRequest()->getPost(); if ($this->getRequest()->isPost() && $form->isValid($data)) { $data = $form->getValues(); $pessoa = new Application_Model_Pessoa(); $participante = new Application_Model_Participante(); $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV); $idEncontro = $config->encontro->codigo; $data2 = array('id_encontro' => $idEncontro, 'id_municipio' => $data['id_municipio'], 'id_instituicao' => $data['id_instituicao']); unset($data['id_municipio']); unset($data['id_instituicao']); unset($data['captcha']); $adapter = $pessoa->getAdapter(); try { $adapter->beginTransaction(); $idPessoa = $pessoa->criar($data); $data2['id_pessoa'] = $idPessoa; $participante->insert($data2); // the commit occurs only after send email! } catch (Zend_Db_Exception $ex) { $adapter->rollBack(); $sentinela = 1; if ($ex->getCode() == 23505) { $this->_helper->flashMessenger->addMessage(array('warning' => _('E-mail already registered.'))); } else { $this->_helper->flashMessenger->addMessage(array('danger' => _('An unexpected error ocurred.<br/> Details: ') . $ex->getMessage())); } } // codigo responsavel por enviar email para confirmacao try { if (!empty($idPessoa) and $idPessoa > 0) { $rs = $participante->dadosTicketInscricao($idPessoa, $idEncontro); $pdf = new Sige_Pdf_Relatorio_TicketInscricao($rs); $binary = $pdf->obterPdf(); $mail = new Application_Model_EmailConfirmacao(); $mail->send($idPessoa, $idEncontro, Application_Model_EmailConfirmacao::MSG_CONFIRMACAO, $binary); $data = array('email_enviado' => 'true'); $where = $pessoa->getAdapter()->quoteInto('id_pessoa = ?', $idPessoa); $pessoa->update($data, $where); } } catch (Exception $ex) { $adapter->rollBack(); $sentinela = 1; $this->_helper->flashMessenger->addMessage(array('danger' => _('An unexpected error ocurred.<br/> Details: ') . $ex->getMessage())); } if ($sentinela == 0) { $adapter->commit(); return $this->_helper->redirector->goToRoute(array('controller' => 'participante', 'action' => 'sucesso'), 'default', true); } } }