public ServicoAula(IRepositorioAula repositorioAula,
                    IServicoEOL servicoEOL,
                    IRepositorioTipoCalendario repositorioTipoCalendario,
                    IServicoDiaLetivo servicoDiaLetivo,
                    IConsultasGrade consultasGrade,
                    IConsultasPeriodoEscolar consultasPeriodoEscolar,
                    IConsultasFrequencia consultasFrequencia,
                    IConsultasPlanoAula consultasPlanoAula,
                    IServicoLog servicoLog,
                    IServicoNotificacao servicoNotificacao,
                    IComandosWorkflowAprovacao comandosWorkflowAprovacao,
                    IComandosPlanoAula comandosPlanoAula,
                    IComandosNotificacaoAula comandosNotificacaoAula,
                    IServicoFrequencia servicoFrequencia,
                    IConfiguration configuration,
                    IRepositorioAtividadeAvaliativa repositorioAtividadeAvaliativa,
                    IRepositorioAtribuicaoCJ repositorioAtribuicaoCJ,
                    IRepositorioTurma repositorioTurma,
                    IServicoWorkflowAprovacao servicoWorkflowAprovacao,
                    IServicoUsuario servicoUsuario,
                    IUnitOfWork unitOfWork)
 {
     this.repositorioAula                = repositorioAula ?? throw new System.ArgumentNullException(nameof(repositorioAula));
     this.servicoEOL                     = servicoEOL ?? throw new System.ArgumentNullException(nameof(servicoEOL));
     this.repositorioTipoCalendario      = repositorioTipoCalendario ?? throw new System.ArgumentNullException(nameof(repositorioTipoCalendario));
     this.servicoDiaLetivo               = servicoDiaLetivo ?? throw new System.ArgumentNullException(nameof(servicoDiaLetivo));
     this.consultasGrade                 = consultasGrade ?? throw new System.ArgumentNullException(nameof(consultasGrade));
     this.consultasPeriodoEscolar        = consultasPeriodoEscolar ?? throw new ArgumentNullException(nameof(consultasPeriodoEscolar));
     this.consultasFrequencia            = consultasFrequencia ?? throw new ArgumentNullException(nameof(consultasFrequencia));
     this.consultasPlanoAula             = consultasPlanoAula ?? throw new ArgumentNullException(nameof(consultasPlanoAula));
     this.servicoLog                     = servicoLog ?? throw new ArgumentNullException(nameof(servicoLog));
     this.comandosWorkflowAprovacao      = comandosWorkflowAprovacao ?? throw new ArgumentNullException(nameof(comandosWorkflowAprovacao));
     this.configuration                  = configuration ?? throw new ArgumentNullException(nameof(configuration));
     this.servicoNotificacao             = servicoNotificacao ?? throw new ArgumentNullException(nameof(servicoNotificacao));
     this.comandosPlanoAula              = comandosPlanoAula ?? throw new ArgumentNullException(nameof(comandosPlanoAula));
     this.servicoFrequencia              = servicoFrequencia ?? throw new ArgumentNullException(nameof(servicoFrequencia));
     this.repositorioAtividadeAvaliativa = repositorioAtividadeAvaliativa ?? throw new ArgumentNullException(nameof(repositorioAtividadeAvaliativa));
     this.repositorioAtribuicaoCJ        = repositorioAtribuicaoCJ ?? throw new ArgumentNullException(nameof(repositorioAtribuicaoCJ));
     this.repositorioTurma               = repositorioTurma ?? throw new ArgumentNullException(nameof(repositorioTurma));
     this.servicoWorkflowAprovacao       = servicoWorkflowAprovacao ?? throw new ArgumentNullException(nameof(servicoWorkflowAprovacao));
     this.servicoUsuario                 = servicoUsuario ?? throw new ArgumentNullException(nameof(servicoUsuario));
     this.comandosNotificacaoAula        = comandosNotificacaoAula ?? throw new ArgumentNullException(nameof(comandosNotificacaoAula));
     this.unitOfWork                     = unitOfWork ?? throw new ArgumentNullException(nameof(unitOfWork));
 }
        public async Task <IActionResult> ObterGradeAulasTurma([FromQuery] DateTime data, string codigoTurma, long codigoDisciplina, [FromServices] IConsultasGrade consultasGrade, [FromQuery] bool ehRegencia = false)
        {
            var horasGrade = await consultasGrade.ObterGradeAulasTurmaProfessor(codigoTurma, codigoDisciplina, UtilData.ObterSemanaDoAno(data), data, ehRegencia : ehRegencia);

            if (horasGrade == null)
            {
                return(NoContent());
            }

            return(Ok(horasGrade));
        }