View difference between Paste ID: J87DggA8 and aN0q7UcV
SHOW: | | - or go back to the newest paste.
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
    }