[i-Diario - resolvido] - Boletim do professor não é gerado

MENU:

Relatórios → Boletim do professor

DESCRIÇÃO:

Ao tentar gerar o relatório, o mesmo não é gerado e o sistema é redirecionado para a página de configuração da API

AMBIENTE:

  • Plataforma utilizada: instalação direta
  • Outros detalhes importantes: i-Diario 1.3.3

@robson esse boletim é emitido no i-Educar e exibido no i-Diário, por isso é direcionado para a página de configuração da API.

Não entendi @edersoares, não seria para exibir o boletim invés da página da API?

@robson este boletim é emitido no i-Educar, é um boletim do i-Educar. O i-Diário só “intermedia” a requisição. Por isso se a sincronização do i-Diário e i-Educar não estiver configurada corretamente, ele direciona pra página de configuração da API.

Entendi @edersoares , obrigado.

Oi @edersoares , aqui não funciona. A sincronização está ok.

1 curtida

o arquivo ieducar/modules/Api/Views/ReportController.php

referencia os arquivos Reports/Reports/BoletimReport.php e Reports/Report/BoletimProfessorReport.php

mas o ieducar não tem esses arquivos, tem os mesmo em inglês ReportCard.php e TeacherReportCardReport.php.

Substitui as referências mas dispara outros erros.

O arquivo BoletimReport tem no github mas não nos arquivos dos releases. O arquivo BoletimProfessorReport.php não encontrei.

Com o código abaixo funcionou

/ieducar/modules/Api/Views/ReportController.php

<?php

# TODO remove-require
#require_once 'Reports/Reports/BoletimReport.php';
require_once 'Reports/Reports/ReportCardReport.php';
#require_once 'Reports/Reports/BoletimProfessorReport.php';
require_once 'Reports/Reports/TeacherReportCardReport.php';

class ReportController extends ApiCoreController
{

    // validations
    protected function canGetBoletim()
    {
        return (
            $this->validatesId('escola') &&
            $this->validatesId('matricula')
        );
    }

    protected function canGetBoletimProfessor()
    {
        return (
            $this->validatesId('instituicao') &&
            $this->validatesPresenceOf('ano') &&
            $this->validatesId('escola') &&
            $this->validatesId('serie') &&
            $this->validatesId('turma') &&
            $this->validatesPresenceOf('componente_curricular_id')
        );
    }

    // load
    protected function loadDadosForMatricula($matriculaId)
    {
        $sql = '
            SELECT cod_matricula AS id,
                   ref_cod_aluno AS aluno_id,
                   matricula.ano,
                   escola.ref_cod_instituicao AS instituicao_id,
                   matricula.ref_ref_cod_escola AS escola_id,
                   matricula.ref_cod_curso AS curso_id,
                   matricula.ref_ref_cod_serie AS serie_id,
                   matricula_turma.ref_cod_turma AS turma_id
              FROM pmieducar.matricula_turma,
                   pmieducar.matricula,
                   pmieducar.escola
             WHERE escola.cod_escola = matricula.ref_ref_cod_escola
               AND ref_cod_matricula = cod_matricula
               AND ref_cod_matricula = $1
               AND matricula.ativo = 1
               AND (matricula_turma.ativo = 1 OR matricula_turma.transferido = TRUE)
          ORDER BY matricula_turma.sequencial
             LIMIT 1
        ';

        $dadosMatricula = $this->fetchPreparedQuery($sql, $matriculaId, false, 'first-row');

        $attrs = [
            'id',
            'aluno_id',
            'ano',
            'instituicao_id',
            'escola_id',
            'curso_id',
            'serie_id',
            'turma_id'
        ];

        return Portabilis_Array_Utils::filter($dadosMatricula, $attrs);
    }

    // api
    protected function getBoletim()
    {
        if ($this->canGetBoletim()) {
            $dadosMatricula = $this->loadDadosForMatricula($this->getRequest()->matricula_id);

            $boletimReport = new BoletimReport();

            $boletimReport->addArg('matricula', (int)$dadosMatricula['id']);
            $boletimReport->addArg('ano', (int)$dadosMatricula['ano']);
            $boletimReport->addArg('instituicao', (int)$dadosMatricula['instituicao_id']);
            $boletimReport->addArg('escola', (int)$dadosMatricula['escola_id']);
            $boletimReport->addArg('curso', (int)$dadosMatricula['curso_id']);
            $boletimReport->addArg('serie', (int)$dadosMatricula['serie_id']);
            $boletimReport->addArg('turma', (int)$dadosMatricula['turma_id']);
            $boletimReport->addArg('situacao_matricula', 10);
            $boletimReport->addArg('situacao', (int)$dadosMatricula['situacao'] ?? 0);
            $boletimReport->addArg('SUBREPORT_DIR', config('legacy.report.source_path'));

            if ($this->getRequest()->etapa) {
                $boletimReport->addArg('etapa', (int)$this->getRequest()->etapa);
            }

            $encoding = 'base64';
            $dumpsOptions = ['options' => ['encoding' => $encoding]];
            $encoded = $boletimReport->dumps($dumpsOptions);

            return [
                'matricula_id' => $this->getRequest()->matricula_id,
                'encoding' => $encoding,
                'encoded' => base64_encode($encoded)
            ];
        }
    }

    protected function getBoletimProfessor()
    {
        if ($this->canGetBoletimProfessor()) {
            $boletimProfessorReport = new TeacherReportCardReport();

            $boletimProfessorReport->addArg('ano', (int)$this->getRequest()->ano);
            $boletimProfessorReport->addArg('instituicao', (int)$this->getRequest()->instituicao_id);
            $boletimProfessorReport->addArg('escola', (int)$this->getRequest()->escola_id);
            $boletimProfessorReport->addArg('curso', (int)$this->getRequest()->curso_id);
            $boletimProfessorReport->addArg('serie', (int)$this->getRequest()->serie_id);
            $boletimProfessorReport->addArg('turma', (int)$this->getRequest()->turma_id);
            $boletimProfessorReport->addArg('professor', Portabilis_String_Utils::toLatin1($this->getRequest()->professor));
            $boletimProfessorReport->addArg('disciplina', (int)$this->getRequest()->componente_curricular_id);
            $boletimProfessorReport->addArg('orientacao', 2);
            $boletimProfessorReport->addArg('situacao', (int) $this->getRequest()->situacao ?? 0);

            $configuracoes = new clsPmieducarConfiguracoesGerais();
            $configuracoes = $configuracoes->detalhe();

            $modelo = $configuracoes['modelo_boletim_professor'];

            #$boletimProfessorReport->addArg('modelo', $modelo);
            $boletimProfessorReport->addArg('linha', 0);
            $boletimProfessorReport->addArg('SUBREPORT_DIR', config('legacy.report.source_path'));

            $encoding = 'base64';

            $dumpsOptions = [
                'options' => [
                    'encoding' => $encoding
                ]
            ];

            $encoded = $boletimProfessorReport->dumps($dumpsOptions);

            return [
                'encoding' => $encoding,
                'encoded' => base64_encode($encoded)
            ];
        }
    }

    public function Gerar()
    {
        if ($this->isRequestFor('get', 'boletim')) {
            $this->appendResponse($this->getBoletim());
        } elseif ($this->isRequestFor('get', 'boletim-professor')) {
            $this->appendResponse($this->getBoletimProfessor());
        } else {
            $this->notImplementedOperationError();
        }
    }
}

Faz um PR. Deve ter ficado para trás na hora de refatorar.

1 curtida

Quando eu tiver uma folga por aqui, faço.

1 curtida

Olá @robson, é isso mesmo.
Essas alterações precisam estar na classe ieducar/modules/Api/Views/ReportController.php

Isso de perdeu quando fizeram a separação dos relatórios do iEducar, gerando assim dois repositórios, o repositório do i-educar e o i-educar-reports-package

Quanto a sua afirmação sobre os arquivos não encontrados, você não vai acha-los no git do i-educar, você deve encontrar eles no repositório git do i-educar-reports-package com os nomes de TeacherReportCardReport.php e ReportCardReport.php

Lembrando que para funcionar 100%, deve ter instalado o pacote de relatórios como também a execução do comando: php artisan community:reports:link

Correto @tiago.camargo e @edersoares ?

ISSUES - 771

1 curtida

Está disponível na versão 2.6.2.

1 curtida

Top!!! Vamos comunidade, vamos colocar o i-Educar para :rocket:
Precisamos de mais interações dos membros, abertura de issue no github (Abertura de issue com informações detalhadas para reprodução dos erros), só assim, teremos um software cada dia mais maduro.

1 curtida