/**
  * Agendamento manual
  */
 public function manualAction()
 {
     $formAgendaManual = new Form_Salao_AgendaManual();
     $formAgendaManual->submit->setLabel("Agendar");
     if ($this->getRequest()->isPost()) {
         $data = $this->getRequest()->getPost();
         if ($formAgendaManual->isValid($data)) {
             try {
                 Zend_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();
                 $dataAgenda = array('salao_id' => Zend_Auth::getInstance()->getIdentity()->salao_id, 'agenda_data' => App_Helper_Date::getDateDb($formAgendaManual->getValue("agenda_data")) . ' ' . $formAgendaManual->getValue('agenda_horario'), 'especialidade_id' => $formAgendaManual->getValue("especialidade_id"), 'profissional_beleza_id' => $formAgendaManual->getValue("profissional_beleza_id"), 'agenda_manual' => 1, 'agenda_confirmado' => 1);
                 $modelAgenda = new Model_DbTable_Agenda();
                 $agenda_id = $modelAgenda->insert($dataAgenda);
                 $dataAgendaManual = array('agenda_id' => $agenda_id, 'agenda_manual_nome' => $formAgendaManual->getValue("agenda_manual_nome"), 'agenda_manual_email' => $formAgendaManual->getValue("agenda_manual_email") ? $formAgendaManual->getValue("agenda_manual_email") : null, 'agenda_manual_telefone' => $formAgendaManual->getValue("agenda_manual_telefone"));
                 $modelAgendaManual = new Model_DbTable_AgendaManual();
                 $modelAgendaManual->insert($dataAgendaManual);
                 // gera a lancamento da cobranca
                 // valor do agendamento
                 $modelConfig = new Model_DbTable_Config();
                 $valorAgendamento = $modelConfig->getByField("config_slug", "valor_agendamento_manual");
                 if ((double) $valorAgendamento->config_valor > 0) {
                     // dados do lancamento
                     $lancamento = array('salao_id' => Zend_Auth::getInstance()->getIdentity()->salao_id, 'agenda_id' => $agenda_id, 'cobranca_lancamento_valor' => (double) $valorAgendamento->config_valor, 'cobranca_lancamento_descricao' => $valorAgendamento->config_nome);
                     $modelCobrancaLancamento = new Model_DbTable_CobrancaLancamento();
                     $modelCobrancaLancamento->insert($lancamento);
                 }
                 $agenda = $modelAgenda->getById($agenda_id);
                 /**
                  * envia o email para o cliente caso tenha sido informado
                  */
                 if (!empty($data['agenda_manual_email'])) {
                     $pluginMail = new Plugin_Mail();
                     $pluginMail->setDataMail('agenda', $agenda);
                     $pluginMail->send('cliente-agendamento-manual.phtml', 'Agendamento Realizado', $data['agenda_manual_email']);
                 }
                 $this->_helper->flashMessenger->addMessage(array('success' => 'Agendamento realizado com sucesso'));
                 Zend_Db_Table_Abstract::getDefaultAdapter()->commit();
             } catch (Zend_Mail_Exception $ex) {
                 $this->_helper->flashMessenger->addMessage(array('success' => 'Agendamento realizado com sucesso'));
                 $this->_helper->flashMessenger->addMessage(array('warning' => 'Não foi possível enviar o e-mail de confirmação!'));
                 Zend_Db_Table_Abstract::getDefaultAdapter()->commit();
             } catch (Exception $ex) {
                 Zend_Db_Table_Abstract::getDefaultAdapter()->rollBack();
                 $this->_helper->flashMessenger->addMessage(array('danger' => 'Houve um problema durante o agendamento' . $ex->getMessage()));
             }
             $this->_redirect("salao/agenda/completa");
         }
     }
     $this->view->formAgendaManual = $formAgendaManual;
 }
 public function agendarAction()
 {
     $especialidade_id = $this->getRequest()->getParam('especialidade');
     $this->view->especialidade_id = $especialidade_id;
     $salao_id = $this->getRequest()->getParam('salao');
     /**
      * Verifica se o usuario esta logado
      */
     if (!Zend_Auth::getInstance()->hasIdentity() || !isset(Zend_Auth::getInstance()->getIdentity()->usuario_id)) {
         $this->_helper->flashMessenger->addMessage(array('info' => 'Por favor faça o login para agendar seu horário.'));
         $this->_redirect("autenticacao/login/salao/{$salao_id}/especialidade/{$especialidade_id}");
     }
     /**
      * Busca dados do salao
      */
     $modelSalao = new Model_DbTable_Salao();
     $salao = $modelSalao->getById($salao_id);
     $this->view->salao = $salao;
     /**
      * Busca dados das especialidades
      */
     $modelEspecialidade = new Model_DbTable_Especialidade();
     $especialidade = $modelEspecialidade->getById($especialidade_id);
     $this->view->especialidade = $especialidade;
     /**
      * Busca o preco da especialidade
      */
     $modelEspecialidadePreco = new Model_DbTable_EspecialidadePreco();
     $precoEspecialidade = $modelEspecialidadePreco->getPrecoEspecialidadeSalao($especialidade_id, $salao_id);
     $this->view->precoEspecialidade = $precoEspecialidade;
     /**
      * form agendamento
      */
     $formAgendar = new Form_Site_Agendar();
     $this->view->formAgendar = $formAgendar;
     if ($this->getRequest()->isPost()) {
         $data = $this->getRequest()->getPost();
         if ($formAgendar->isValid($data)) {
             $data = $formAgendar->getValues();
             $data['agenda_data'] = App_Helper_Date::getDateDb($data['agenda_data']) . " " . $data['agenda_hora'];
             unset($data['agenda_hora']);
             if (empty($data['profissional_beleza_id'])) {
                 $data['profissional_beleza_id'] = null;
             }
             //Zend_Debug::dump($data); die();
             try {
                 Zend_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();
                 $modelAgenda = new Model_DbTable_Agenda();
                 $agenda_id = $modelAgenda->insert($data);
                 /**
                  * Busca os dados completo do agendamento para enviar o email
                  */
                 $agenda = $modelAgenda->getById($agenda_id);
                 /**
                  * Grava uma notificacao para o salao
                  */
                 $insertNotificacao = array('autenticacao_email' => $salao->salao_email, 'notificacao_mensagem' => 'Novo Agendamento pendente de confirmação', 'notificacao_link' => Zend_Registry::get('config')->url->site . "salao/agenda/confirmar/");
                 $pluginNotificacao = new Plugin_Notificacao();
                 $pluginNotificacao->gravar($insertNotificacao);
                 /**
                  * envia o email de confirmacao (cliente)
                  */
                 $pluginMail = new Plugin_Mail();
                 $pluginMail->setDataMail('agenda', $agenda);
                 $pluginMail->send('cliente-agendamento.phtml', 'Agendamento Realizado', Zend_Auth::getInstance()->getIdentity()->usuario_email);
                 /**
                  * envia o email de confirmacao (salao)
                  */
                 $url_login = Zend_Registry::get('config')->url->login;
                 $pluginMail2 = new Plugin_Mail();
                 $pluginMail2->setDataMail('url_login', $url_login);
                 $pluginMail2->setDataMail('agenda', $agenda);
                 $pluginMail2->send('salao-agendamento.phtml', 'Novo Agendamento Realizado', $agenda->salao_email);
                 $this->_helper->flashMessenger->addMessage(array('success' => 'Agendamento realizado com sucesso!'));
                 $this->_helper->flashMessenger->addMessage(array('warning' => 'Aguarde a confirmação do seu agendamento pelo estabelecimento!'));
                 Zend_Db_Table_Abstract::getDefaultAdapter()->commit();
             } catch (Zend_Mail_Exception $ex) {
                 $this->_helper->flashMessenger->addMessage(array('success' => 'Agendamento realizado com sucesso!'));
                 $this->_helper->flashMessenger->addMessage(array('success' => 'Aguarde a confirmação do seu agendamento pelo estabelecimento!'));
                 Zend_Db_Table_Abstract::getDefaultAdapter()->commit();
             } catch (Exception $ex) {
                 $this->_helper->flashMessenger->addMessage(array('danger' => 'Houve um erro ao agendar o horário - ' . $ex->getMessage()));
                 Zend_Db_Table_Abstract::getDefaultAdapter()->rollBack();
             }
             $this->_redirect('cliente/');
         }
     }
 }