public function cancelarAction() { $agenda_id = $this->getRequest()->getParam('id'); $agenda_id = $this->getRequest()->getParam('id'); if (!$agenda_id) { $this->_helper->flashMessenger->addMessage(array('danger' => "Agendamento não encontrado!")); $this->_redirect("cliente/"); } /** * busca dados do agendamento */ $modelAgenda = new Model_DbTable_Agenda(); $agenda = $modelAgenda->getById($agenda_id); /** * Verifica se o agendamento e do usuario logado */ if ($agenda->usuario_id !== Zend_Auth::getInstance()->getIdentity()->usuario_id) { $this->_helper->flashMessenger->addMessage(array('danger' => "<strong>Acesso negado!</strong> Você não pode alterar este agendamento!")); $this->_redirect("cliente/"); } /** * verifica se pode alterar a data */ $modelConfig = new Model_DbTable_Config(); $prazoCancelamento = $modelConfig->getBySlug('prazo_alterar_agendamento'); $zendDateNow = new Zend_Date(); $zendDateAgenda = new Zend_Date($agenda->agenda_data); if (!$zendDateNow->isEarlier($zendDateAgenda->subHour($prazoCancelamento->config_valor))) { $this->_helper->flashMessenger->addMessage(array('warning' => "<strong>Atenção!</strong> O prazo para alterar este agendamento já expirou!")); $this->_redirect("cliente/"); } $this->view->agenda = $agenda; /** * form de motivo */ $formMotivo = new Form_Salao_AgendaManualCancelamento(); $formMotivo->submit->setLabel("Cancelar Agendamento"); $this->view->formMotivo = $formMotivo; if ($this->getRequest()->isPost()) { $data = $this->getRequest()->getPost(); if ($formMotivo->isValid($data)) { $agenda_cancelado_motivo = $formMotivo->getValue('agenda_cancelado_motivo'); try { Zend_Db_Table_Abstract::getDefaultAdapter()->beginTransaction(); $update = array('agenda_cancelado' => 1, 'agenda_cancelado_autor' => 'Cliente', 'agenda_cancelado_usuario' => 1, 'agenda_cancelado_motivo' => $agenda_cancelado_motivo, 'agenda_cancelado_data' => Zend_Date::now()->get('YYYY-MM-dd H:m')); $modelAgenda->updateById($update, $agenda_id); /** * envia o email de confirmacao (cliente) */ $pluginMail = new Plugin_Mail(); $pluginMail->setDataMail('agenda', $agenda); $pluginMail->setDataMail('agenda_cancelado_motivo', $agenda_cancelado_motivo); $pluginMail->send('cliente-agendamento-cancelar.phtml', 'Agendamento Cancelado', Zend_Auth::getInstance()->getIdentity()->usuario_email); /** * envia o email de confirmacao (salao) */ $pluginMail2 = new Plugin_Mail(); $pluginMail2->setDataMail('agenda', $agenda); $pluginMail2->setDataMail('agenda_cancelado_motivo', $agenda_cancelado_motivo); $pluginMail2->send('salao-agendamento-cancelar.phtml', 'Agendamento Cancelado', $agenda->salao_email); Zend_Db_Table_Abstract::getDefaultAdapter()->commit(); // retira a cobranca do salao $pluginCobranca = new Plugin_Cobranca($agenda); $pluginCobranca->retirar(); $this->_helper->flashMessenger->addMessage(array('success' => 'Agendamento cancelado com sucesso.')); $this->_redirect("cliente/"); } catch (Zend_Mail_Exception $ex) { Zend_Db_Table_Abstract::getDefaultAdapter()->commit(); $this->_helper->flashMessenger->addMessage(array('success' => 'Agendamento cancelado com sucesso.')); $this->_helper->flashMessenger->addMessage(array('warning' => 'Não foi possível enviar o e-mail de confirmação.')); $this->_redirect("cliente/"); } catch (Exception $ex) { Zend_Db_Table_Abstract::getDefaultAdapter()->rollBack(); $this->_helper->flashMessenger->addMessage(array('danger' => 'Não foi possível cancelar o agendamento. Tente novamente mais tarde. - ' . $ex->getMessage())); $this->_redirect("cliente/"); } } } }
public function noshowAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $agenda_id = $this->getRequest()->getParam("agenda"); // busca dados do agendamento $modelAgenda = new Model_DbTable_Agenda(); $agenda = $modelAgenda->getById($agenda_id); //Zend_Debug::dump($agenda); die(); // verifica se pode dar no show if (!$agenda || $agenda->salao_id !== Zend_Auth::getInstance()->getIdentity()->salao_id) { $this->_helper->flashMessenger->addMessage(array("danger" => "Ação não permitida!")); $this->_redirect("salao/"); } //caso ja tenha sido dado no-show if ($agenda->agenda_noshow) { $this->_helper->flashMessenger->addMessage(array("warning" => "No-show já efetuado para este agendamento!")); $this->_redirect("salao/"); } try { Zend_Db_Table_Abstract::getDefaultAdapter()->beginTransaction(); // atualizar a tabela $modelAgenda->updateById(array("agenda_noshow" => 1), $agenda_id); // enviar email para cliente $PluginMail = new Plugin_Mail(); $PluginMail->setDataMail("agenda", $agenda); $PluginMail->send("cliente-noshow.phtml", "No-show", $agenda->usuario_email); // gravar notificacao $insertNotificacao = array("autenticacao_email" => $agenda->usuario_email, "notificacao_mensagem" => "No-show para um agendamento", "notificacao_link" => "#"); $pluginNotificacao = new Plugin_Notificacao(); $pluginNotificacao->gravar($insertNotificacao); $this->_helper->flashMessenger->addMessage(array("success" => "No-show realizado!")); Zend_Db_Table_Abstract::getDefaultAdapter()->commit(); } catch (Exception $ex) { $this->_helper->flashMessenger->addMessage(array("danger" => "Houve um problema - " . $ex->getMessage())); Zend_Db_Table_Abstract::getDefaultAdapter()->rollBack(); } $this->_redirect("salao/"); }