Exemplo n.º 1
0
        public async Task <IEnumerable <StatusNotificacaoUsuario> > Handle(ObterStatusNotificacaoUsuarioQuery request, CancellationToken cancellationToken)
        {
            var statusNotificacaoUsuario = new List <StatusNotificacaoUsuario>();

            var aluno = await alunoRepositorio.ObterDadosAlunoPorCodigo(request.CodigoAluno);

            Usuario usuario = null;

            if (aluno != null)
            {
                usuario = await usuarioRepositorio.ObterPorCpf(aluno.CpfResponsavel);
            }

            foreach (var notificacaoId in request.NotificoesId)
            {
                var dadosLeituraComunicados = await dadosLeituraRepositorio.ObterDadosLeituraAlunos(notificacaoId, request.CodigoAluno.ToString());

                if (dadosLeituraComunicados.Any())
                {
                    statusNotificacaoUsuario.Add(new StatusNotificacaoUsuario(notificacaoId, dadosLeituraComunicados.First().DataLeitura.Value, $"Lida - em {dadosLeituraComunicados.First().DataLeitura.Value.ToString("dd/MM/yyyy HH:mm")}"));
                }

                if (!dadosLeituraComunicados.Any() && usuario != null)
                {
                    statusNotificacaoUsuario.Add(new StatusNotificacaoUsuario(notificacaoId, null, $"Não lida"));
                }

                if (!dadosLeituraComunicados.Any() && usuario == null)
                {
                    statusNotificacaoUsuario.Add(new StatusNotificacaoUsuario(notificacaoId, null, $"Não tem APP"));
                }
            }
            return(statusNotificacaoUsuario);
        }