private IList <DTODivisaoQuarto> ObterDivisaoQuartos(int idEvento)
        {
            List <DTODivisaoQuarto> quartosDTO = new List <DTODivisaoQuarto>();

            IList <Quarto>    quartos         = m_RepQuartos.ListarTodosQuartosPorEventoComParticipantes(idEvento);
            IList <Inscricao> listaInscricoes = m_RepInscricoes.ListarTodasInscricoesAceitasComPessoasDormemEvento(idEvento);

            var inscritosNosQuartos = quartos.SelectMany(x => x.Inscritos).Select(x => x.Inscricao);
            var inscritosSemQuartos = listaInscricoes.Where(x => !inscritosNosQuartos.Contains(x));

            quartosDTO.AddRange(quartos.Select(x => new DTODivisaoQuarto
            {
                Id            = x.Id,
                Nome          = x.Nome,
                Capacidade    = x.Capacidade,
                EhFamilia     = x.EhFamilia,
                Sexo          = x.Sexo,
                Coordenadores = x.Inscritos.Where(y => y.EhCoordenador).Select(y => y.Inscricao.ConverterBasicoResp()).ToList(),
                Participantes = x.Inscritos.Where(y => !y.EhCoordenador).Select(y => y.Inscricao.ConverterBasicoResp()).ToList()
            }));

            if (inscritosSemQuartos.Count() > 0)
            {
                quartosDTO.Add(new DTODivisaoQuarto
                {
                    Id            = 0,
                    Nome          = "Participantes sem quarto definido",
                    Capacidade    = null,
                    EhFamilia     = false,
                    Sexo          = EnumSexoQuarto.Misto,
                    Coordenadores = new List <DTOBasicoInscricaoResp>(),
                    Participantes = new List <DTOBasicoInscricaoResp>(
                        inscritosSemQuartos.Select(x => x.ConverterBasicoResp()).ToList())
                });
            }

            return(quartosDTO);
        }
Beispiel #2
0
 public DivisaoManualInscricaoPorQuarto(Evento evento, AQuartos quartos)
 {
     mEvento  = evento;
     mQuartos = quartos.ListarTodosQuartosPorEventoComParticipantes(evento.Id);
 }