leonam-carlos

onGenerate

Dec 28th, 2023
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function onGenerate()
  2.     {
  3.         try {
  4.             $object = $this->form->getData();
  5.  
  6.             $htmlTodos = NULL;
  7.  
  8.             TTransaction::open('permission');
  9.             $school = new SystemUnit(TSession::getValue('userunitid'));
  10.             TTransaction::close();
  11.  
  12.             $replaces = [
  13.                 'photo_path_empresa' => 'https://redemunicipal.sistematoth.com.br/siga/' . $school->logo,
  14.                 'nomeEscola' => $school->name,
  15.                 'enderecoEscola1' => strtoupper($school->logradouro) . ", {$school->numero} - " . strtoupper($school->bairro),
  16.                 'contatoEscola' => $school->telefone,
  17.                 'endereco_escola_cidade' => strtoupper($school->cidade),
  18.                 'endereco_escola_uf' => strtoupper($school->estado),
  19.                 'endereco_escola_pais' => strtoupper($school->pais),
  20.             ];
  21.  
  22.             $htmlTodos = NULL;
  23.  
  24.             TTransaction::open(TSession::getValue('userunitid'));
  25.             $grade = GradeCurricular::select('id', 'curso_id', 'serie_id')
  26.                 ->where('periodo_id', '=', $object->periodo_id)
  27.                 ->where('serie_id', '=', $object->serie_id)
  28.                 ->first();
  29.  
  30.             if (!$grade) {
  31.                 // Handle the case where $grade is not found.
  32.                 // You might want to return an error message or take appropriate action.
  33.             }
  34.  
  35.             $grade_disciplinas = GradeCurricularDisciplina::select('disciplina_id')
  36.                 ->where('grade_curricular_id', '=', $grade->id)
  37.                 ->load();
  38.  
  39.             $curso_id = $object->curso_id;
  40.             $serie_id = $object->serie_id;
  41.             $turma_id = $object->turma_id;
  42.  
  43.             foreach ($grade_disciplinas as $grade_disciplina) {
  44.                 $turma = new Turma($object->turma_id);
  45.  
  46.                 $replaces['turma'] = $grade->curso->nome . ' / ' . $grade->serie->nome . ' / ' . $turma->nome . ' / ' . $turma->turno->nome;
  47.                 $replaces['disciplina'] = $grade_disciplina->disciplina->nome;
  48.  
  49.                 $table_disciplinas = '<table cellspacing=0 class="borda" style="width:100%;">';
  50.                 $table_disciplinas .= "<th style='padding left borda' class='center borda negrito'>Nº</td>";
  51.                 $table_disciplinas .= "<th style='padding left borda' class='center borda negrito'>Matrícula</td>";
  52.                 $table_disciplinas .= "<th style='padding left borda' class='center borda negrito'>Nome do aluno(a)</td>";
  53.  
  54.                 $frequencia_datas = [];
  55.  
  56.                 switch ($curso_id) {
  57.                     case 3:
  58.                         $frequencia_datas = AlunoFrequencia::select('data_frequencia')
  59.                             ->where('turma_id', '=', $object->turma_id)
  60.                             ->where('disciplina_id', '=', $grade_disciplina->disciplina_id)
  61.                             ->where('data_frequencia', '>=', $object->dt_ini)
  62.                             ->where('data_frequencia', '<=', $object->dt_fim)
  63.                             ->groupBy('data_frequencia')
  64.                             ->orderBy('data_frequencia')
  65.                             ->load();
  66.                         break;
  67.                     case 2:
  68.                         $frequencia_datas = AlunoFrequenciaEFI::select('data_frequencia')
  69.                             ->where('turma_id', '=', $object->turma_id)
  70.                             ->where('data_frequencia', '>=', $object->dt_ini)
  71.                             ->where('data_frequencia', '<=', $object->dt_fim)
  72.                             ->groupBy('data_frequencia')
  73.                             ->orderBy('data_frequencia')
  74.                             ->load();
  75.                         break;
  76.                     case 1:
  77.                         $frequencia_datas = AlunoFrequenciaEI::select('data_frequencia')
  78.                             ->where('turma_id', '=', $object->turma_id)
  79.                             ->where('data_frequencia', '>=', $object->dt_ini)
  80.                             ->where('data_frequencia', '<=', $object->dt_fim)
  81.                             ->groupBy('data_frequencia')
  82.                             ->orderBy('data_frequencia')
  83.                             ->load();
  84.                         break;
  85.                     case 4:
  86.                         if ($serie_id >= 224 && $serie_id <= 227) {
  87.                             $frequencia_datas = AlunoFrequenciaEJAEFI::select('data_frequencia')
  88.                                 ->where('turma_id', '=', $object->turma_id)
  89.                                 ->where('data_frequencia', '>=', $object->dt_ini)
  90.                                 ->where('data_frequencia', '<=', $object->dt_fim)
  91.                                 ->groupBy('data_frequencia')
  92.                                 ->orderBy('data_frequencia')
  93.                                 ->load();
  94.                         } elseif ($serie_id >= 228 && $serie_id <= 231) {
  95.                             $frequencia_datas = AlunoFrequenciaEJAEFII::select('data_frequencia')
  96.                                 ->where('turma_id', '=', $object->turma_id)
  97.                                 ->where('disciplina_id', '=', $grade_disciplina->disciplina_id)
  98.                                 ->where('data_frequencia', '>=', $object->dt_ini)
  99.                                 ->where('data_frequencia', '<=', $object->dt_fim)
  100.                                 ->groupBy('data_frequencia')
  101.                                 ->orderBy('data_frequencia')
  102.                                 ->load();
  103.                         }
  104.                         break;
  105.                     case 5:
  106.                         if ($serie_id == 24 || $serie_id == 25) {
  107.                             $frequencia_datas = AlunoFrequenciaEJACAMPO::select('data_frequencia')
  108.                                 ->where('turma_id', '=', $object->turma_id)
  109.                                 ->where('disciplina_id', '=', $grade_disciplina->disciplina_id)
  110.                                 ->where('data_frequencia', '>=', $object->dt_ini)
  111.                                 ->where('data_frequencia', '<=', $object->dt_fim)
  112.                                 ->groupBy('data_frequencia')
  113.                                 ->orderBy('data_frequencia')
  114.                                 ->load();
  115.                         }
  116.                         break;
  117.                 }
  118.  
  119.                 foreach ($frequencia_datas as $frequencia_data) {
  120.                     $data = explode('-', $frequencia_data->data_frequencia);
  121.                     $table_disciplinas .= "<th style='padding: 1px; text-align: center; border: 1px solid black; font-weight: bold; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; width: 10px;'>{$data[2]}/{$data[1]}</th>";
  122.                 }
  123.  
  124.                 $table_disciplinas .= "</tr>";
  125.  
  126.                 /* $repository = new TRepository('AlunoTurma');
  127.                 $criteria = new TCriteria;
  128.                 $criteria->add(new TFilter('turma_id', '=', $turma_id));
  129.                 $criteria->add(new TFilter('situacao_id', '=', 1));
  130.                 $alunos_turma = $repository->load($criteria); */
  131.  
  132.                 $alunos_turma = AlunoTurma::select('aluno_id')
  133.                                 ->where('turma_id', '=', $object->turma_id)
  134.                                 ->where('situacao_id', '=', 1)
  135.                                 ->load();
  136.  
  137.                 /* if (is_array($alunos_turma)) {
  138.                     $filteredObjects = array_filter($alunos_turma, static function ($object) {
  139.                         return $object instanceof AlunoTurma;
  140.                     });
  141.  
  142.                     usort($filteredObjects, static function ($a, $b) {
  143.                         return strnatcasecmp($a->Aluno->name, $b->Aluno->name);
  144.                     });
  145.  
  146.                     $alunos_turma = $filteredObjects;
  147.                 } */
  148.  
  149.                 foreach ($alunos_turma as $aluno_turma) {
  150.  
  151.                     if ($alt == true) {
  152.                         $table_disciplinas .= '<tr>';
  153.                         $alt = false;
  154.                     } else {
  155.                         $table_disciplinas .= '<tr class="gray">';
  156.                         $alt = true;
  157.                     }
  158.  
  159.                     $cont++;
  160.  
  161.                     $matricula = $aluno_turma->Aluno->matricula;
  162.                     $nome_aluno = mb_strtoupper($aluno_turma->Aluno->name, 'UTF-8');
  163.  
  164.                     $table_disciplinas .= "<tr><td class='padding center borda'>{$cont}</td>";
  165.                     $table_disciplinas .= "<td class='padding center borda'>{$matricula}</td>";
  166.                     $table_disciplinas .= "<td class='padding left borda'>{$nome_aluno}</td>";
  167.  
  168.                     foreach ($frequencia_datas as $frequencia_data) {
  169.                         $frequencia_aluno = null;
  170.  
  171.                         switch ($curso_id) {
  172.                             case 3:
  173.                                 $frequencia_aluno = AlunoFrequencia::select('frequencia_check')
  174.                                     ->where('data_frequencia', '=', $frequencia_data->data_frequencia)
  175.                                     ->where('disciplina_id', '=', $grade_disciplina->disciplina_id)
  176.                                     ->where('aluno_id', '=', $aluno_turma->aluno_id)
  177.                                     ->orderBy('data_frequencia')
  178.                                     ->first();
  179.                                 break;
  180.                             case 2:
  181.                                 $frequencia_aluno = AlunoFrequenciaEFI::select('frequencia_check')
  182.                                     ->where('data_frequencia', '=', $frequencia_data->data_frequencia)
  183.                                     ->where('aluno_id', '=', $aluno_turma->aluno_id)
  184.                                     ->orderBy('data_frequencia')
  185.                                     ->first();
  186.                                 break;
  187.                             case 1:
  188.                                 $frequencia_aluno = AlunoFrequenciaEI::select('frequencia_check')
  189.                                     ->where('data_frequencia', '=', $frequencia_data->data_frequencia)
  190.                                     ->where('aluno_id', '=', $aluno_turma->aluno_id)
  191.                                     ->orderBy('data_frequencia')
  192.                                     ->first();
  193.                                 break;
  194.                             case 4:
  195.                                 if ($serie_id >= 224 && $serie_id <= 227) {
  196.                                     $frequencia_aluno = AlunoFrequenciaEJAEFI::select('frequencia_check')
  197.                                         ->where('data_frequencia', '=', $frequencia_data->data_frequencia)
  198.                                         ->where('aluno_id', '=', $aluno_turma->aluno_id)
  199.                                         ->orderBy('data_frequencia')
  200.                                         ->first();
  201.                                 } elseif ($serie_id >= 228 && $serie_id <= 231) {
  202.                                     $frequencia_aluno = AlunoFrequenciaEJAEFII::select('frequencia_check')
  203.                                         ->where('data_frequencia', '=', $frequencia_data->data_frequencia)
  204.                                         ->where('disciplina_id', '=', $grade_disciplina->disciplina_id)
  205.                                         ->where('aluno_id', '=', $aluno_turma->aluno_id)
  206.                                         ->orderBy('data_frequencia')
  207.                                         ->first();
  208.                                 }
  209.                                 break;
  210.                             case 5:
  211.                                 if ($serie_id == 24 || $serie_id == 25) {
  212.                                     $frequencia_aluno = AlunoFrequenciaEJACAMPO::select('frequencia_check')
  213.                                         ->where('data_frequencia', '=', $frequencia_data->data_frequencia)
  214.                                         ->where('aluno_id', '=', $aluno_turma->aluno_id)
  215.                                         ->orderBy('data_frequencia')
  216.                                         ->first();
  217.                                 }
  218.                                 break;
  219.                         }
  220.  
  221.                         if ($frequencia_aluno && $frequencia_aluno->frequencia_check == 1) {
  222.                             $table_disciplinas .= "<td style='padding center borda' class='center borda'>*</td>";
  223.                         } elseif ($frequencia_aluno && $frequencia_aluno->frequencia_check == 0) {
  224.                             $table_disciplinas .= "<td style='padding center borda' class='center borda'>F</td>";
  225.                         } else {
  226.                             $table_disciplinas .= "<td style='padding center borda' class='center borda'> </td>";
  227.                         }
  228.                     }
  229.                     $table_disciplinas .= "</tr>";
  230.                 }
  231.  
  232.                 $table_disciplinas .= '</table>';
  233.  
  234.                 $dt_ini = date('d/m/Y', strtotime($object->dt_ini));
  235.                 $dt_fim = date('d/m/Y', strtotime($object->dt_fim));
  236.  
  237.                 $replaces['table_disciplinas'] = $table_disciplinas;
  238.                 $replaces['tipo'] = 'FREQUÊNCIA MENSAL';
  239.                 $replaces['etapa'] = 'Referente ao período de ' . $dt_ini . ' até ' . $dt_fim;
  240.                 $replaces['break'] = '<div class="break"></div>';
  241.  
  242.                 $html = new THtmlRenderer('app/reports/diario_relatorio.html');
  243.                 $html->enableSection('main', $replaces);
  244.                 $html->disableHtmlConversion();
  245.  
  246.                 $contents = $html->getContents();
  247.  
  248.                 $htmlTodos = $htmlTodos . $contents;
  249.             }
  250.  
  251.             $document = 'tmp/' . uniqid() . '.html';
  252.             file_put_contents($document, $htmlTodos);
  253.             parent::openFile($document);
  254.  
  255.             TTransaction::close();
  256.  
  257.             new TMessage('info', ('Relatório gerado com sucesso!'));
  258.             TApplication::loadPage('Relatorio');
  259.         } catch (Exception $e) {
  260.             new TMessage('alert', $e->getMessage());
  261.         }
  262.     }
Add Comment
Please, Sign In to add comment