示例#1
0
        public async Task <IEnumerable <TipoCiclo> > Handle(ObterCiclosAnosPorModalidadeQuery request, CancellationToken cancellationToken)
        {
            var ciclos = await cicloRepository.ObterCiclosPorAnosModalidade(request.Anos, request.Modalidade);

            if (ciclos == null && ciclos.Any())
            {
                throw new NegocioException("Não foi possível encontrar os ciclos dos anos e na modalidade.");
            }

            return(ciclos);
        }
        private async Task <IDictionary <string, string> > ObterNotasTipo(IEnumerable <Turma> turmas, Modalidade modalidade, DateTime dataReferencia)
        {
            var anos = turmas.Select(t => t.Ano.ToString()).Distinct();

            var tipoCiclos = await cicloRepository.ObterCiclosPorAnosModalidade(anos.ToArray(), modalidade);

            if (tipoCiclos == null)
            {
                throw new NegocioException("Não foi encontrado o ciclo da turma informada");
            }

            var tiposCicloId = tipoCiclos.Select(t => t.Id);

            var notasTipo = await notaTipoRepository.ObterPorCiclosIdDataAvalicacao(tiposCicloId.ToArray(), dataReferencia);

            var lstTurmasTipoNota = new Dictionary <string, string>();

            foreach (var turma in turmas)
            {
                lstTurmasTipoNota.Add(turma.Codigo, notasTipo.FirstOrDefault(nt => nt.Ciclo == tipoCiclos.FirstOrDefault(tp => tp.Ano.ToString() == turma.Ano).Id).TipoNota);
            }

            return(lstTurmasTipoNota);
        }