コード例 #1
0
        public async Task <List <string> > Handle(
            ObterGrupoNotificacaoPorResponsavelCommand request, CancellationToken cancellationToken)
        {
            var grupos = await _grupoComunicadoRepository.ObterTodos();

            var query = (from g in grupos
                         where g.TipoCicloId != null
                         select $"case when (se.cd_ciclo_ensino in ({g.TipoCicloId}) and se.cd_etapa_ensino IN ({g.EtapaEnsinoId})) then 1 else 0 end as \"{g.Nome}\",").Join("");

            query = query.Substring(0, query.Count() - 1);

            var nomeGrupos = (from n in grupos
                              where n.TipoCicloId != null
                              select $"max({n.Nome}){n.Nome},").Join("");

            nomeGrupos = nomeGrupos.Substring(0, nomeGrupos.Count() - 1);

            var gruposDoResponsavel = await _repository.ObterGruposDoResponsavel(request.Cpf, query, nomeGrupos);

            if (gruposDoResponsavel == null)
            {
                return(new List <string>());
            }

            string ids = "";

            foreach (var gr in gruposDoResponsavel.AsEnumerable())
            {
                if (1.Equals(gr.Value))
                {
                    var id = (
                        from g in grupos
                        where g.Nome.Equals(gr.Key)
                        select g.Id.ToString()
                        ).First();
                    ids += $"{id},";
                }
            }

            if (ids.Length > 0)
            {
                ids = ids.Substring(0, ids.Count() - 1);
            }

            return(ids.Split(",").ToList());
        }