Ejemplo n.º 1
0
 /**
  * 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:&nbsp;') . $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:&nbsp;') . $ex->getMessage()));
         }
         if ($sentinela == 0) {
             $adapter->commit();
             return $this->_helper->redirector->goToRoute(array('controller' => 'participante', 'action' => 'sucesso'), 'default', true);
         }
     }
 }