public function manualEditarAction()
 {
     $agenda_id = $this->getRequest()->getParam('id');
     if (!$agenda_id) {
         $this->_helper->flashMessenger->addMessage(array('danger' => 'Agenda não encontrada!'));
         $this->_redirect('salao/');
     }
     /**
      * busca a agenda
      */
     $modelAgenda = new Model_DbTable_Agenda();
     $agenda = $modelAgenda->getById($agenda_id);
     // verifica se e agendamento do salao
     if ($agenda->salao_id !== Zend_Auth::getInstance()->getIdentity()->salao_id) {
         $this->_helper->flashMessenger->addMessage(array('danger' => 'Acesso não permitido!'));
         $this->_redirect('salao/');
     }
     // formatando alguns dados
     $populate = $agenda->toArray();
     $populate['agenda_data'] = App_Helper_Date::getDateView($agenda->agenda_data);
     $populate['agenda_horario'] = App_Helper_Date::getTime($agenda->agenda_data);
     /**
      * Form agenda manual
      */
     $formAgendaManual = new Form_Salao_AgendaManual();
     $formAgendaManual->submit->setLabel("Agendar");
     $formAgendaManual->populate($populate);
     $this->view->formAgendaManual = $formAgendaManual;
     if ($this->getRequest()->isPost()) {
         $data = $this->getRequest()->getPost();
         if ($formAgendaManual->isValid($data)) {
             $data = $formAgendaManual->getValues();
             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"));
                 $modelAgenda = new Model_DbTable_Agenda();
                 $modelAgenda->updateById($dataAgenda, $agenda_id);
                 $dataAgendaManual = array('agenda_id' => $agenda_id, 'agenda_manual_nome' => $formAgendaManual->getValue("agenda_manual_nome"), 'agenda_manual_email' => $formAgendaManual->getValue("agenda_manual_email"), 'agenda_manual_telefone' => $formAgendaManual->getValue("agenda_manual_telefone"));
                 $modelAgendaManual = new Model_DbTable_AgendaManual();
                 $modelAgendaManual->updateById($dataAgendaManual, $agenda_id);
                 Zend_Db_Table_Abstract::getDefaultAdapter()->commit();
                 $this->_helper->flashMessenger->addMessage(array('success' => 'Agendamento alterado com sucesso!'));
             } catch (Exception $ex) {
                 Zend_Db_Table_Abstract::getDefaultAdapter()->rollBack();
                 $this->_helper->flashMessenger->addMessage(array('danger' => 'Houve um problema ao editar o agendamento!'));
             }
             $this->_redirect('salao/agenda/completo');
         }
     }
 }
 public function alterarAction()
 {
     $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;
     /**
      * populate values
      */
     $populate = $agenda->toArray();
     $populate['agenda_data'] = App_Helper_Date::getDateView($agenda->agenda_data);
     $populate['agenda_horario'] = App_Helper_Date::getTime($agenda->agenda_data);
     /**
      * form de agendamento
      */
     $formAgendar = new Form_Site_Agendar();
     $formAgendar->populate($populate);
     $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;
             }
             $data['agenda_confirmado'] = 0;
             try {
                 Zend_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();
                 $modelCobrancaLancamento = new Model_DbTable_CobrancaLancamento();
                 $cobranca = $modelCobrancaLancamento->getByField("agenda_id", $agenda_id);
                 //Zend_Debug::dump($cobranca); die();
                 if ($cobranca) {
                     $modelCobrancaLancamento->updateById(array("cobranca_lancamento_ativo" => 0), $cobranca->cobranca_lancamento_id);
                 }
                 // update
                 $modelAgenda->updateById($data, $agenda_id);
                 /**
                  * Busca os dados completo do agendamento para enviar o email
                  */
                 $agenda = $modelAgenda->getById($agenda_id);
                 /**
                  * envia o email de confirmacao (cliente)
                  */
                 $pluginMail = new Plugin_Mail();
                 $pluginMail->setDataMail('agenda', $agenda);
                 $pluginMail->send('cliente-agendamento-alterar.phtml', 'Agendamento Alterdo', Zend_Auth::getInstance()->getIdentity()->usuario_email);
                 /**
                  * envia o email de confirmacao (salao)
                  */
                 $pluginMail2 = new Plugin_Mail();
                 $pluginMail2->setDataMail('agenda', $agenda);
                 $pluginMail2->send('salao-agendamento-alterar.phtml', 'Agendamento Alterado', $agenda->salao_email);
                 $this->_helper->flashMessenger->addMessage(array('success' => 'Agendamento alterado com sucesso!'));
                 // retira a cobranca do salao
                 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/");
         }
     }
 }
 public function horariosAction()
 {
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setNoRender();
     $salao_id = $this->getRequest()->getParam('salao_id');
     $especialidade_id = $this->getRequest()->getParam('especialidade_id');
     $profissional_beleza_id = $this->getRequest()->getParam('profissional_beleza_id', null);
     $agenda_data = App_Helper_Date::getDateDb($this->getRequest()->getParam('agenda_data'));
     try {
         /**
          * Busca os horarios agendados
          */
         $string_horarios = null;
         $modelAgenda = new Model_DbTable_Agenda();
         $horarios = $modelAgenda->getHorariosAgenda($salao_id, $especialidade_id, $agenda_data, $profissional_beleza_id);
         if ($horarios->count() > 0) {
             $array_horarios = array();
             foreach ($horarios as $horario) {
                 $array_horarios[] = "'" . App_Helper_Date::getTime($horario->agenda_data) . "'";
             }
             $string_horarios = implode(', ', $array_horarios);
         }
         /**
          * Busca os horarios do salao para a data
          */
         $zendDate = new Zend_Date($agenda_data);
         $dia_semana = $zendDate->get(Zend_Date::WEEKDAY_DIGIT);
         $modelSalaoHorario = new Model_DbTable_SalaoHorario();
         $horariosLivre = $modelSalaoHorario->getHorariosLivreSalao($salao_id, $dia_semana, $string_horarios);
         if ($horariosLivre->count() > 0) {
             $livres = array();
             foreach ($horariosLivre as $livre) {
                 $livres[] = substr($livre->salao_horario, 0, -3);
             }
             echo Zend_Json::encode($livres);
         } else {
             echo Zend_Json::encode(array('count' => 0));
         }
     } catch (Exception $ex) {
         echo Zend_Json::encode(array('error' => 'Houve um problema - ' . $ex->getMessage()));
     }
 }