Example #1
0
        public Stream GerarImpressoPDF(int idEvento)
        {
            Stream relatorio = new MemoryStream();

            ExecutarSeguramente(() =>
            {
                var quartos = m_RepQuartos.ListarTodosQuartosPorEvento(idEvento);

                relatorio = m_GeradorRelDivisaoQuartos.Gerar(quartos);
            });

            return(relatorio);
        }
        public IEnumerable <DTODivisaoQuarto> RemoverTodasDivisoes(int idEvento)
        {
            IList <DTODivisaoQuarto> quartosDTO = new List <DTODivisaoQuarto>();

            ExecutarSeguramente(() =>
            {
                IList <Quarto> quartos = m_RepQuartos.ListarTodosQuartosPorEvento(idEvento);

                foreach (var quarto in quartos)
                {
                    quarto.RemoverTodosInscritos();
                    m_RepQuartos.Atualizar(quarto);
                }

                quartosDTO = ObterDivisaoQuartos(idEvento);
            });

            return(quartosDTO);
        }
        public IList <Quarto> Dividir()
        {
            var quartos         = mRepQuartos.ListarTodosQuartosPorEvento(mEvento.Id);
            var listaInscricoes = mRepInscricoes.ListarTodasInscricoesAceitasComPessoasDormemEvento(mEvento.Id);

            var criancas = listaInscricoes
                           .Where(x => x is InscricaoInfantil && x.Pessoa.CalcularIdadeEmAnos(mEvento.PeriodoRealizacaoEvento.DataInicial) <= 6)
                           .Select(x => (InscricaoInfantil)x)
                           .ToList();

            var inscricoesFamilia = new List <InscricaoFamilia>();

            foreach (var crianca in criancas)
            {
                Inscricao responsavel1        = null;
                Inscricao responsavel2        = null;
                Inscricao responsavelDefinido = null;

                if (crianca.InscricaoResponsavel1.DormeEvento)
                {
                    responsavel1 = crianca.InscricaoResponsavel1;
                }

                if (crianca.InscricaoResponsavel2 != null && crianca.InscricaoResponsavel2.DormeEvento)
                {
                    responsavel2 = crianca.InscricaoResponsavel2;
                }

                if ((responsavel1 != null && responsavel1.Pessoa.Sexo == crianca.Pessoa.Sexo) ||
                    (responsavel2 != null && responsavel2.Pessoa.Sexo == crianca.Pessoa.Sexo))
                {
                    if (responsavel1 != null && responsavel1.Pessoa.Sexo == crianca.Pessoa.Sexo)
                    {
                        responsavelDefinido = responsavel1;
                    }
                    else
                    {
                        responsavelDefinido = responsavel2;
                    }
                }
                else if (responsavel1 != null)
                {
                    responsavelDefinido = responsavel1;
                }
                else
                {
                    responsavelDefinido = responsavel2;
                }

                var item = inscricoesFamilia.SingleOrDefault(x => x.Responsavel == responsavelDefinido);
                if (item != null)
                {
                    item.Criancas.Add(crianca);
                }
                else
                {
                    var familia = new InscricaoFamilia();
                    familia.Responsavel = responsavelDefinido;
                    familia.Criancas    = new List <InscricaoInfantil>()
                    {
                        crianca
                    };

                    inscricoesFamilia.Add(familia);

                    listaInscricoes.Remove(responsavelDefinido);
                }

                listaInscricoes.Remove(crianca);
            }

            var inscritosGeral = listaInscricoes
                                 .Where(x => !(x is InscricaoInfantil && x.Pessoa.CalcularIdadeEmAnos(mEvento.PeriodoRealizacaoEvento.DataInicial) <= 6))
                                 .ToList();

            var inscritosGeralPorSexo = inscritosGeral.GroupBy(x => x.Pessoa.Sexo);
            var quartosGeral          = quartos.Where(x => !x.EhFamilia);
            var quartosFamilia        = quartos.Where(x => x.EhFamilia);

            /*var validacao = new ValidacaoDivisaoQuartos();
             * validacao.ValidarGeral(quartosGeral, inscritosGeralPorSexo);
             * validacao.ValidarFamilia(quartosFamilia, inscricoesFamilia);*/

            foreach (var quarto in quartos)
            {
                quarto.RemoverTodosInscritos();
            }

            RealizarDivisaoGeral(quartosGeral, inscritosGeralPorSexo);
            RealizarDivisaoFamilia(quartosFamilia, inscricoesFamilia);

            return(quartos);
        }