✏️ 正在编辑: Gerador.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/services/Relatorio/Gerador.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php use Carbon\Carbon; use Modules\Core\Enum\DiasEnum; use Modules\Core\Service\HashGen; use Modules\Relatorio\Service\RelatorioSemanalService; class Service_Relatorio_Gerador { /** @var string */ public const CSS = '/styles/global.min.css', PATH_DIARIO = '/relatorio-diario/', EMAIL_YUPPIE = 'no-reply@yuppietech.com.br' ; /** @var string */ public const PHTML_PDF_LAYOUT = 'relatorio/relatorio-pdf-layout.phtml', PHTML_RANKING_VENDAS = 'relatorio/ranking-diario-corretor.phtml', PHTML_LANCAMENTOS_DESPESAS = 'relatorio/lancamentos-despesas-diario.phtml', PHTML_COMISSOES_PAGAS = 'relatorio/comissoes-pagas-diario.phtml', PHTML_SUPERVISORES = 'relatorio/produtividade-supervisores.phtml', PHTML_EMAIL_BODY = 'email/body.phtml', PHTML_BOAS_VINDAS = 'corretor/notificacao-cadastro.phtml' ; /** @var string */ public const TITULO_RANKING_VENDAS = 'Ranking Vendas', TITULO_LANCAMENTO_DESPESAS = 'Lançamento De Despesas', TITULO_RELATORIO_DIARIO = 'Relatório Diário', TITULO_COMISSOES_PAGAS = 'Comissões Pagas', TITULO_SUPERVISORES = 'Desempenho Comercial Semanal', TITULO_BOAS_VINDAS = 'Cadastro efetuado com sucesso' ; /** @var Model_DbTable_RelatorioDiario */ private $table; /** @var Model_EmailConfiguracao */ private $emailConfigModel; /** @var Service_View */ private $viewService; /** @var RelatorioSemanalService */ private $relSemanalService; public function __construct() { $this->table = table('relatorio-diario'); $this->emailConfigModel = model('email-configuracao'); $this->viewService = service('view'); $this->relSemanalService = new RelatorioSemanalService(); } /** * @param string $html * @param null $orientacao * @return string * @throws \Mpdf\MpdfException */ public function gerarAqruivoRelatorioDiario(string $html, ?string $orientacao = null): string { /** @var Service_Upload $upload */ $upload = service('upload'); $path = UPLOAD_PATH . self::PATH_DIARIO; $file = $path . uniqid() . '.pdf'; $upload->dirResolveCreate($path); Core_PDF::outputPdfHtml($file, $html, $orientacao, true); return $file; } /** * @param Core_View_Params $params * @param Zend_View_Interface $view * @return Core_View_Params */ public function addParamsRankingCorretorView( Core_View_Params &$params, Zend_View_Interface &$view ): Core_View_Params { $viewCorretor = $view; $paramsCorretor = $params; $paramsCorretor->addParam('corretoresVendas', $this->table->rankingVendasDiario()); $renderCorretor = $this->viewService->render($viewCorretor, self::PHTML_RANKING_VENDAS, $paramsCorretor); $data = Carbon::now(); $referenteData = table('relatorio-diario')->yesterday(); $params->addParam('relatorio', self::TITULO_RANKING_VENDAS); $params->addParam('referenteData', $referenteData->format('d/m/Y'), false); $params->addParam('dataGeracao', $data->format('d/m/Y'), false); $params->addParam('content', $renderCorretor); return $params; } /** * @param Zend_View_Interface $view * @throws Zend_Mail_Exception * @throws \Mpdf\MpdfException */ public function sendRelatorioDiario(Zend_View_Interface $view) { $mail = new Core_Mail(); $params = new Core_View_Params(); $params->addParam('style', file_get_contents(publicPath(self::CSS)), false); $mail->setDestinatarios(model('email-configuracao')->getEmailsRelatorio()); $this->rankingDiarioToMail($view, $params, $mail); $this->lancamentoDespesasToMail($view, $params, $mail); $this->comissoesPagasToMail($view, $params, $mail); $mail->newSend(self::TITULO_RELATORIO_DIARIO, $view->render(self::PHTML_EMAIL_BODY), self::EMAIL_YUPPIE); } /** * @param Zend_View_Interface $view * @param Core_View_Params $params * @param Core_Mail $mail * @throws \Mpdf\MpdfException */ public function rankingDiarioToMail( Zend_View_Interface &$view, Core_View_Params &$params, Core_Mail &$mail ): void { $params = $this->addParamsRankingCorretorView($params, $view); $rankingDiario = $this->viewService->render($view, self::PHTML_PDF_LAYOUT, $params); $file = $this->gerarAqruivoRelatorioDiario($rankingDiario, 'L'); $mail->addFile($file, self::TITULO_RANKING_VENDAS . ".pdf"); unlink($file); } /** * @param Core_View_Params $params * @param Zend_View_Interface $view * @return Core_View_Params */ public function addParamsLancamentosDespesasView( Core_View_Params &$params, Zend_View_Interface &$view ): Core_View_Params { $viewDespesas = $view; $paramsDespesas = $params; $paramsDespesas->addParam('lancamentoDespesas', $this->table->lancamentoDespesasPagas()); $paramsDespesas->addParam('referenteData', date('d/m/Y'), false); $renderDespesas = $this->viewService->render($viewDespesas, self::PHTML_LANCAMENTOS_DESPESAS, $paramsDespesas); $params->addParam('relatorio', self::TITULO_LANCAMENTO_DESPESAS); $params->addParam('content', $renderDespesas); return $params; } /** * @param Zend_View_Interface $view * @param Core_View_Params $params * @param Core_Mail $mail * @throws \Mpdf\MpdfException */ public function lancamentoDespesasToMail( Zend_View_Interface &$view, Core_View_Params &$params, Core_Mail &$mail ): void { $params = $this->addParamsLancamentosDespesasView($params, $view); $lancamentosDespesas = $this->viewService->render($view, self::PHTML_PDF_LAYOUT, $params); $file = $this->gerarAqruivoRelatorioDiario($lancamentosDespesas, 'L'); $mail->addFile($file, self::TITULO_LANCAMENTO_DESPESAS . ".pdf"); unlink($file); } /** * @param Core_View_Params $params * @param Zend_View_Interface $view * @return Core_View_Params */ public function addParamsComissoesPagasView( Core_View_Params &$params, Zend_View_Interface &$view ): Core_View_Params { $viewComissoes = $view; $paramsComissoes = $params; $paramsComissoes->addParam('comissoesPagas', $this->table->comissoesPagas()); $paramsComissoes->addParam('referenteData', date('d/m/Y'), false); $renderComissoes = $this->viewService->render($viewComissoes, self::PHTML_COMISSOES_PAGAS, $paramsComissoes); $params->addParam('relatorio', self::TITULO_COMISSOES_PAGAS); $params->addParam('content', $renderComissoes); return $params; } /** * @param Zend_View_Interface $view * @param Core_View_Params $params * @param Core_Mail $mail * @throws \Mpdf\MpdfException */ public function comissoesPagasToMail( Zend_View_Interface &$view, Core_View_Params &$params, Core_Mail &$mail ): void { $params = $this->addParamsComissoesPagasView($params, $view); $comissoesPagas = $this->viewService->render($view, self::PHTML_PDF_LAYOUT, $params); $file = $this->gerarAqruivoRelatorioDiario($comissoesPagas); $mail->addFile($file, self::TITULO_COMISSOES_PAGAS . ".pdf"); unlink($file); } /** * @param Zend_View_Interface $view * @throws \Mpdf\MpdfException */ public function sendProdutividadeSupervisor(Zend_View_Interface $view): void { $mail = new Core_Mail(); $params = new Core_View_Params(); $params->addParam('style', file_get_contents(publicPath(self::CSS)), false); $mail->setDestinatarios(model('email-configuracao')->getEmailsRelatorio()); $this->produtividadeSupervisorToMail($view, $params, $mail); $mail->newSend(self::TITULO_SUPERVISORES, $view->render(self::PHTML_EMAIL_BODY), self::EMAIL_YUPPIE); } /** * @param Zend_View_Interface $view * @param Core_View_Params $params * @param Core_Mail $mail * @throws \Mpdf\MpdfException */ public function produtividadeSupervisorToMail( Zend_View_Interface &$view, Core_View_Params &$params, Core_Mail &$mail ): void { $params = $this->addParamsProdutividadeSupervisor($params, $view); $produtividade = $this->viewService->render($view, self::PHTML_PDF_LAYOUT, $params); $file = $this->gerarAqruivoRelatorioDiario($produtividade, 'L'); $mail->addFile($file, self::TITULO_SUPERVISORES . ".pdf"); unlink($file); } /** * @param Core_View_Params $params * @param Zend_View_Interface $view * @return Core_View_Params */ public function addParamsProdutividadeSupervisor( Core_View_Params &$params, Zend_View_Interface &$view ): Core_View_Params { $data = Carbon::now(); $viewSupervisores = $view; $paramsSupervisores = $params; $produtividadeSup = $this->relSemanalService->produtividadeSupervisorSemanal(); $produtividadeSup = $this->relSemanalService->sortByProjecao($produtividadeSup); $params->addParam('supervisores', $produtividadeSup); $params->addParam('dia', DiasEnum::DIAS[$data->weekDay()]); $render = $this->viewService->render($viewSupervisores, self::PHTML_SUPERVISORES, $paramsSupervisores); $params->addParam('relatorio', self::TITULO_SUPERVISORES); $params->addParam('referenteData', $data->format('d/m/Y')); $params->addParam('dataGeracao', $data->format('d/m/Y')); $params->addParam('content', $render); return $params; } /** * @param int $corretorId */ public static function emailBoasVindas(int $corretorId): void { $senha = HashGen::password(10); $corretor = (new Model_Corretor())->exibir($corretorId); $corretor->login = $corretor->cpf; $corretor->senha = $senha; $corretor->mudar_senha = 1; $corretor->save(); $mail = new Core_Mail(); $view = new \Zend_View; $corretor->senha = $senha; $view->corretor = $corretor; $view->senhaGen = $senha; $view->setScriptPath(APPLICATION_PATH . '/views/scripts'); $mail->addDestinaraio($corretor->email); $mail->newSend(self::TITULO_BOAS_VINDAS, $view->render(self::PHTML_BOAS_VINDAS), self::EMAIL_YUPPIE); } }
💾 保存文件
← 返回文件管理器