예제 #1
0
        private IEnumerable <SupervisorEscolasDto> MapearSupervisorEscolaDre(IEnumerable <SupervisorEscolasDreDto> supervisoresEscolasDres)
        {
            var listaEscolas = servicoEOL.ObterEscolasPorCodigo(supervisoresEscolasDres.Select(a => a.EscolaId.ToString()).ToArray());

            List <SupervisoresRetornoDto> listaSupervisores;

            if (supervisoresEscolasDres.Count() == 1 && string.IsNullOrEmpty(supervisoresEscolasDres.FirstOrDefault().SupervisorId))
            {
                listaSupervisores = new List <SupervisoresRetornoDto>()
                {
                    new SupervisoresRetornoDto()
                    {
                        CodigoRF = "", NomeServidor = "NÃO ATRIBUÍDO"
                    }
                };
            }
            else
            {
                listaSupervisores = servicoEOL.ObterSupervisoresPorCodigo(supervisoresEscolasDres.Select(a => a.SupervisorId.ToString()).ToArray())
                                    .ToList();
            }

            var supervisoresIds = supervisoresEscolasDres
                                  .GroupBy(a => a.SupervisorId)
                                  .Select(g => g.Key);

            foreach (var supervisorId in supervisoresIds)
            {
                var idsEscolas = supervisoresEscolasDres.Where(a => a.SupervisorId == supervisorId).Select(a => a.EscolaId).ToList();

                IEnumerable <UnidadeEscolarDto> escolas = new List <UnidadeEscolarDto>();

                if (idsEscolas.Count > 0)
                {
                    escolas = from t in listaEscolas
                              where idsEscolas.Contains(t.CodigoEscola)
                              select new UnidadeEscolarDto()
                    {
                        Codigo = t.CodigoEscola, Nome = t.NomeEscola
                    };
                }

                var auditoria = supervisoresEscolasDres.FirstOrDefault(c => c.SupervisorId == supervisorId);

                yield return(new SupervisorEscolasDto()
                {
                    SupervisorNome = listaSupervisores.FirstOrDefault(a => a.CodigoRF == (supervisorId ?? string.Empty)).NomeServidor,
                    SupervisorId = supervisorId,
                    Escolas = escolas.ToList(),
                    AlteradoEm = auditoria.AlteradoEm,
                    AlteradoPor = auditoria.AlteradoPor,
                    AlteradoRF = auditoria.AlteradoRF,
                    CriadoEm = auditoria.CriadoEm,
                    CriadoPor = auditoria.CriadoPor,
                    CriadoRF = auditoria.CriadoRF
                });
            }
        }