public async Task <IEnumerable <EventoRespostaDto> > Handle(ObterEventosAlunoPorMesQuery request, CancellationToken cancellationToken) { var aluno = (await alunoRepositorio.ObterDadosAlunos(request.Cpf)).Where(a => a.CodigoEol == request.CodigoAluno).FirstOrDefault(); var turmasModalidade = await mediator.Send(new ObterTurmasModalidadesPorCodigosQuery(new string[] { aluno.CodigoTurma.ToString() })); if (turmasModalidade.Any()) { var modalidadeDaTurma = turmasModalidade.FirstOrDefault(); aluno.ModalidadeCodigo = modalidadeDaTurma.ModalidadeCodigo; aluno.ModalidadeDescricao = modalidadeDaTurma.ModalidadeDescricao; } var modalidade = 0; switch (aluno.ModalidadeCodigo) { case 1: modalidade = 3; break; case 3: modalidade = 2; break; case 5: case 6: modalidade = 1; break; default: modalidade = aluno.ModalidadeCodigo; break; } var eventos = await eventoRepositorio.ObterPorDreUeTurmaMes(aluno.CodigoDre, aluno.CodigoEscola, aluno.CodigoTurma.ToString(), modalidade, request.MesAno); var mesInicial = parametrosEscolaAquiRepositorio.ObterInt("MesInicioTransferenciaEventos", 3); var diaInicial = parametrosEscolaAquiRepositorio.ObterInt("DiaInicioTransferenciaEventos", 1); var dataInicial = new DateTime(DateTime.Now.Year, mesInicial, diaInicial); if (DateTime.Today < dataInicial) { var tiposEventosPermitidos = new int[] { (int)TipoEvento.ReuniaoResponsaveis, (int)TipoEvento.Feriado, (int)TipoEvento.Avaliacao }; eventos = eventos.Where(e => tiposEventosPermitidos.Contains(e.tipo_evento)); } var eventosResposta = eventos .Select( e => new EventoRespostaDto { Nome = e.nome, Descricao = e.descricao, DiaSemana = e.data_inicio.ToString("ddd", new CultureInfo("pt-BR")), DataInicio = e.data_inicio, DataFim = e.data_fim, AnoLetivo = e.ano_letivo, TipoEvento = e.tipo_evento, ComponenteCurricular = e.componente_curricular } ).Distinct(); return(eventosResposta); }