✏️ 正在编辑: HistoricoPendencia.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/application/models/HistoricoPendencia.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_HistoricoPendencia { /** @var string */ public const VIEW_NOTIFICACAO = 'proposta/notificacao-proposta-pendencia%s.phtml'; private $_id; private $_contratoId; private $_dataHistorico; private $_descricao; private $_digitador; private $_resolvida; public function getId() { return $this->_id; } public function setId($id) { $this->_id = $id; } public function getContratoId() { return $this->_contratoId; } public function setContratoId($contratoId) { $this->_contratoId = $contratoId; } public function getDataHistorico() { return $this->_dataHistorico; } public function setDataHistorico($dataHistorico) { $this->_dataHistorico = $dataHistorico; } public function getDescricao() { return $this->_descricao; } public function setDescricao($descricao) { $this->_descricao = $descricao; } public function getDigitador() { return $this->_digitador; } public function setDigitador($digitador) { $this->_digitador = $digitador; } public function _toArray() { $dbtable = new Model_DbTable_HistoricoPendencia(); $info = $dbtable->info(); $methods = get_class_methods($this); $data = array(); foreach ($info['cols'] as $key) { $col = $key; $explode = explode("_", $key); $methodName = ''; foreach ($explode as $v) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'get' . ucfirst($key); if (in_array($method, $methods)) { $data[$col] = $this->$method(); } } return $data; } /** * Insere ou altera o histórico passado por parâmetro * @param Model_HistoricoPendencias $historicoPendencias */ public function salvar(Model_HistoricoPendencia $historicoPendencias) { $dbtable = new Model_DbTable_HistoricoPendencia(); if ($historicoPendencias->getId() > 0) { $dbtable->update($historicoPendencias->_toArray(), "id = " . $historicoPendencias->getId()); return $historicoPendencias->getId(); } else { return $dbtable->insert($historicoPendencias->_toArray()); } } public function salvarHistorico($descricao, $digitador, $id) { $modelProposta = new Model_Proposta(); $proposta = $modelProposta->exibir($id); if( !$proposta ){ throw new Core_Exception("Proposta não identificada."); } $date = new Zend_Date(); $data = $date->get('YYYY-MM-dd HH:mm:ss'); $this->setDataHistorico($data); $this->setDigitador($digitador); $this->setDescricao(strip_tags($descricao)); $this->setContratoId($id); $result = $this->salvar($this); return $result; } public function notificarPendencia($descricao, $id, $controller, ?bool $resolvida = false) { $modelProposta = new Model_Proposta(); $proposta = $modelProposta->exibir($id); if (!$proposta) { $modelContrato = new Model_Contrato(); $proposta = $modelContrato->exibir($id); } if( !$proposta ){ throw new Core_Exception("Proposta não identificada."); } $corretor = $proposta->findParentRow('Model_DbTable_Corretor'); if( !$corretor ){ throw new Core_Exception("Erro ao notificar pendência: corretor não identificado."); } $modelEmpresa = new Model_Empresa(); $empresa = $modelEmpresa->exibir(Yuppie_Auth::getIdentity()->empresa_id); if( !$empresa ){ throw new Core_Exception("Erro ao notificar pendência: empresa não identificada."); } $controller->view->pendencia = $descricao; $controller->view->proposta = $proposta; $emailsAdicionais = []; $rota = $corretor->findParentRow('Model_DbTable_Rota'); if( !empty($rota) ){ $supervisor = $rota->findParentRow('Model_DbTable_GerenteRota'); if(!empty($supervisor)){ array_push($emailsAdicionais, [ 'nome' => $supervisor->nome, 'email' => $supervisor->email, 'receber_email' => $supervisor->receber_email_copia, ]); } } $cliente = $proposta->findParentRow('Model_DbTable_Cliente'); $viewEmail = sprintf(self::VIEW_NOTIFICACAO, $resolvida ? '-resolvida' : ''); $textoMensagem = $this->getCorpoNotificacao($descricao, $resolvida, $cliente); $email = new Core_Mail(); $result = $email->enviarMensagemHtml( $corretor->nome, $corretor->email, utf8_decode("Contrato com pendência - $empresa->nome"), $controller->view->render($viewEmail), $emailsAdicionais ); if ($whatsapp = Core_Whatsapp_Factory::load()) { $whatsapp->sendMessage(String_Refatorar::formatarTelefone($corretor->celular), $textoMensagem); } return $result; } /** * Retorna uma lista do histórico de pendencias * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($fields, $order = "id ASC") { $params = array(); $where = null; if (isset($fields['contrato_id']) && !empty($fields['contrato_id'])) { $params[] = "contrato_id = " . $fields['contrato_id']; } if (count($params) > 0) $where = implode(" AND ", $params); $dbtable = new Model_DbTable_HistoricoPendencia(); return $dbtable->fetchAll($where, $order); } /** * Exclui a descrição do histórico passada por parâmetro * @param int $id * @return int The number of rows deleted */ public function excluir($id) { if ($id > 0) { $dbtable = new Model_DbTable_HistoricoPendencia(); return $dbtable->delete("id = " . $id); } return null; } public function resolverPendencia($id) { if ($id > 0) { $dbtable = new Model_DbTable_HistoricoPendencia(); return $dbtable->update(array('resolvida' => 1, 'resolvida_por' => Yuppie_Auth::getIdentity()->nome, 'resolvida_em' => Zend_Date::now()->get('YYYY-MM-dd HH:mm:ss')), "id = " . $id); } return null; } public function notificarTipo($tipo, $id, $controller) { switch ( $tipo ) { case "efetivada": $subject = "Contrato efetivado"; $view = "proposta/notificacao-proposta-digitada.phtml"; $model = new Model_Contrato(); break; case "digitada": $subject = "Contrato digitado"; $view = "proposta/notificacao-proposta-digitada.phtml"; $model = new Model_Proposta(); break; case "pendencia": $subject = "Contrato com pendência"; $view = "proposta/notificacao-proposta-pendencia.phtml"; $model = new Model_Proposta(); break; } $this->notificarEmail($subject, $model->exibir($id), $controller, $view); } protected function notificarEmail($subject, $proposta, $controller, $view) { if( !$proposta ){ throw new Core_Exception("Proposta não identificada"); } if( !Yuppie_Auth::getIdentity()->email ){ throw new Core_Exception("O sistema não pode enviar sua notificação pois você não tem e-mail cadastrado."); } $corretor = $proposta->findParentRow('Model_DbTable_Corretor'); if( !$corretor ){ throw new Core_Exception("Corretor não identificado."); } $modelEmpresa = new Model_Empresa(); $dadosEmpresa = $modelEmpresa->exibir(Yuppie_Auth::getIdentity()->empresa_id); try { $mail = new Core_Mail(); $assunto = utf8_decode("$subject - $dadosEmpresa->nome"); $controller->view->proposta = $proposta; $mail->enviarMensagemHtml($corretor->nome, $corretor->email, utf8_decode($assunto), $controller->view->render($view)); } catch ( Zend_Mail_Exception $e ) { $this->_helper->flashMessenger(array( 'alert' => "Uma falha pode ter ocorrido. Sua mensagem não foi enviada. Por favor, tente novamente!" . "($corretor->nome - $corretor->email) {$e->getMessage()}" )); } } public function gravarPendenciaContrato($params) { try { $date = new Zend_Date(); $data = $date->get('YYYY-MM-dd HH:mm:ss'); $this->setDataHistorico($data); $this->setDigitador($params['digitador']); $this->setDescricao(strip_tags($params['descricao'])); $this->setContratoId($params['contrato_id']); return $this->salvar($this); } catch (DomainException $domainException) { throw new DomainException('Atenção! Nenhuma descrição foi adicionada'); } } /** * @param $descricao * @param bool|null $resolvida * @param Zend_Db_Table_Row_Abstract $cliente * @return string */ public function getCorpoNotificacao($descricao, ?bool $resolvida, Zend_Db_Table_Row_Abstract $cliente): string { $textoMensagem = $this->getTextoPendenciaDigitacao($descricao, $cliente); if ($resolvida) { $textoMensagem = $this->getTextoPendenciaResolvida($descricao, $cliente); } return $textoMensagem; } /** * @param $descricao * @param Zend_Db_Table_Row_Abstract $cliente * @return string */ public function getTextoPendenciaDigitacao($descricao, Zend_Db_Table_Row_Abstract $cliente): string { $textoMensagem = "*Notificação de Pendência na Digitação!*\n\n" . "Prezado(a) parceiro(a),\n\n" . "a proposta do cliente {$cliente->nome}, " . "enviada por sua promotora encontra-se com pendências.\n\n" . "*Pendência:* \n{$descricao}" . "\n\n\n _Esta é uma mensagem enviada, automaticamente, pelo Sistema Yuppie_"; return $textoMensagem; } /** * @param $descricao * @param Zend_Db_Table_Row_Abstract $cliente * @return string */ public function getTextoPendenciaResolvida($descricao, Zend_Db_Table_Row_Abstract $cliente): string { $textoMensagem = "*Notificação de Pendência Resolvida!*\n\n" . "Prezado(a) parceiro(a),\n\n" . "a pendência '{$descricao}' da proposta do cliente {$cliente->nome}, " . "enviada por sua promotora foi resolvida.\n\n" . "\n\n\n _Esta é uma mensagem enviada, automaticamente, pelo Sistema Yuppie_"; return $textoMensagem; } }
💾 保存文件
← 返回文件管理器