/** * 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/'); } } }