Пример #1
0
 public function indexAction()
 {
     /**
      * Agendamentos
      */
     $modelAgenda = new Model_DbTable_Agenda();
     // hoje
     $hoje = Zend_Date::now()->get("YYYY-MM-dd");
     $agendaHoje = $modelAgenda->getAgendaSalaoData($this->identity->salao_id, $hoje);
     $this->view->agendaHoje = $agendaHoje;
     // ultimos agendamentos
     $ultimos = $modelAgenda->getAgendaUltimosData($this->identity->salao_id, $hoje);
     $this->view->ultimos = $ultimos;
     /**
      * Profissionais da beleza
      */
     $modelProfissionalBeleza = new Model_DbTable_ProfissionalBeleza();
     $profissionais = $modelProfissionalBeleza->getProfissionaisBeleza($this->identity->salao_id);
     $this->view->profissionais = $profissionais;
     /**
      * financeiro
      */
     $modelCobrancaLancamento = new Model_DbTable_CobrancaLancamento();
     $extrato = $modelCobrancaLancamento->getExtratoSalao($this->identity->salao_id);
     $this->view->extrato = $extrato;
     $extratoLancamentos = $modelCobrancaLancamento->getLancamentosPendentes($this->identity->salao_id);
     //Zend_Debug::dump($extratoLancamentos); die();
     $this->view->extratoLancamentos = $extratoLancamentos;
     /**
      * Cobranca
      */
     $modelCobranca = new Model_DbTable_Cobranca();
     $cobranca = $modelCobranca->getCobranca($this->identity->salao_id);
     $this->view->cobranca = $cobranca;
     /**
      * form de agendamento manual
      */
     $formAgendaManual = new Form_Salao_AgendaManual();
     $formAgendaManual->submit->setLabel("Agendar");
     $this->view->formAgendaManual = $formAgendaManual;
 }
 /**
  * 
  * @param type $cupom_codigo
  * @param type $salao_id
  * @return int 
  * 
  * 0 - Error
  * 1 - Success
  * 2 - Ja usado
  */
 protected function validaCupom($cupom_codigo, $salao_id)
 {
     $modelCobrancaLancamento = new Model_DbTable_CobrancaLancamento();
     $modelConfig = new Model_DbTable_Config();
     $modelCupom = new Model_DbTable_Cupom();
     $modelCupomValidacao = new Model_DbTable_CupomValidacao();
     $modelSalao = new Model_DbTable_Salao();
     // busca o cupom na tabela
     $cupom = $modelCupom->getByField("cupom_codigo", $cupom_codigo);
     // dados do salao
     $salao = $modelSalao->getById($salao_id);
     /**
      * Verifica se ja foi validado
      */
     if ($modelCupomValidacao->jaUtilizado($cupom->cupom_id, $salao->salao_email)) {
         return 2;
     }
     // verifica o tipo de desconto
     if ($cupom->cupom_promo_key === "AGENDAMENTOS") {
         try {
             Zend_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();
             /**
              * Insere o credito
              */
             $valor = $cupom->cupom_promo_value * $modelConfig->getBySlug("valor_agendamento")->config_valor * -1;
             $insertLancamento = array('salao_id' => $salao_id, 'cobranca_lancamento_valor' => $valor, 'cobranca_lancamento_descricao' => "CRÉDITO DE AGENDAMENTOS CUPOM {$cupom_codigo}");
             $modelCobrancaLancamento->insert($insertLancamento);
             /**
              * seta como validado
              */
             $insertCupomValidacao = array('cupom_id' => $cupom->cupom_id, 'autenticacao_email' => $salao->salao_email, 'cupom_validacao_validado' => 1, 'cupom_validacao_data' => Zend_Date::now()->get("YYYY-MM-dd H:m:s"));
             $modelCupomValidacao->insert($insertCupomValidacao);
             Zend_Db_Table_Abstract::getDefaultAdapter()->commit();
             return 1;
         } catch (Exception $ex) {
             Zend_Db_Table_Abstract::getDefaultAdapter()->rollBack();
             return 0;
         }
     }
     Zend_Debug::dump($cupom);
     die;
 }
Пример #3
0
 protected function cobranca($agenda)
 {
     // verifica se tera cobranca e ja foi feita a cobranca
     $modelCobrancaLancamento = new Model_DbTable_CobrancaLancamento();
     $where = $modelCobrancaLancamento->getDefaultAdapter()->quoteInto("agenda_id = ?", $agenda->agenda_id);
     $cobranca = $modelCobrancaLancamento->fetchRow($where);
     if (!$agenda->salao_cobranca) {
         return;
     }
     if ($cobranca && $cobranca->cobranca_lancamento_ativo === 0) {
         // atualiza a cobranca
         $modelCobrancaLancamento->updateById(array("cobranca_lancamento_ativo" => 1), $cobranca->cobranca_lancamento_id);
     } else {
         // gera a lancamento da cobranca
         // valor do agendamento
         $modelConfig = new Model_DbTable_Config();
         $valorAgendamento = $modelConfig->getByField("config_slug", "valor_agendamento");
         // dados do lancamento
         $lancamento = array('salao_id' => $agenda->salao_id, 'agenda_id' => $agenda->agenda_id, 'cobranca_lancamento_valor' => (double) $valorAgendamento->config_valor, 'cobranca_lancamento_descricao' => $valorAgendamento->config_nome);
         $modelCobrancaLancamento->insert($lancamento);
     }
     return;
 }
Пример #4
0
 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/");
         }
     }
 }
Пример #5
0
 /**
  * Lança um desconto para o salao
  * Os descontos são oferecidos em quantidades de agendamentos multiplicados 
  * pelo o valor do agendamento vigente
  */
 public function creditoAction()
 {
     $salao_id = (int) $this->getRequest()->getParam("salao");
     /**
      * Form de credito
      */
     $formSalaoCredito = new Form_Admin_SalaoCredito();
     $formSalaoCredito->salao_id->setValue($salao_id);
     $this->view->formSalaoCredito = $formSalaoCredito;
     if ($this->getRequest()->isPost()) {
         $data = $this->getRequest()->getPost();
         if ($formSalaoCredito->isValid($data)) {
             $data = $formSalaoCredito->getValues();
             try {
                 Zend_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();
                 $modelCobrancaLancamento = new Model_DbTable_CobrancaLancamento();
                 $modelCobrancaLancamento->insert($data);
                 /**
                  * Gravar notificacao para o salao
                  */
                 /**
                  * Enviar email notificando o salao
                  */
                 $pluginMail = new Plugin_Mail();
                 $this->_helper->flashMessenger->addMessage(array('success' => 'Crédito lançado com sucesso'));
                 Zend_Db_Table_Abstract::getDefaultAdapter()->commit();
                 $this->_redirect("admin/salao/financeiro/salao/" . $salao_id);
             } catch (Exception $ex) {
                 $this->_helper->flashMessenger->addMessage(array('danger' => $ex->getMessage()));
                 Zend_Db_Table_Abstract::getDefaultAdapter()->rollBack();
                 $this->_redirect("admin/salao/credito/salao/" . $salao_id);
             }
         }
     }
 }