Beispiel #1
0
        public IList <SalaEstudo> Dividir()
        {
            if (mSalasEstudo.HaSalasSemCoordenadorDefinidoDoEvento(mEvento))
            {
                throw new InvalidOperationException("Há salas sem coordenador definido.");
            }

            var participantes =
                mInscricoes.ListarTodasInscricoesAceitasPorAtividade <AtividadeInscricaoSalaEstudo>(mEvento);

            IList <SalaEstudo> salas = mSalasEstudo.ListarTodasPorEvento(mEvento.Id);

            foreach (var sala in salas)
            {
                sala.RemoverTodosParticipantes();
            }

            var salaComFaixaEtaria = salas.FirstOrDefault(x => x.FaixaEtaria != null);

            if (salaComFaixaEtaria != null)
            {
                var inscricoesDentroFaixaEtaria = participantes
                                                  .Where(x => x.Inscrito.Pessoa.CalcularIdadeEmAnos(mEvento.PeriodoRealizacaoEvento.DataInicial) >= salaComFaixaEtaria.FaixaEtaria.IdadeMin &&
                                                         x.Inscrito.Pessoa.CalcularIdadeEmAnos(mEvento.PeriodoRealizacaoEvento.DataInicial) <= salaComFaixaEtaria.FaixaEtaria.IdadeMax)
                                                  .ToList();

                foreach (var participante in inscricoesDentroFaixaEtaria)
                {
                    salaComFaixaEtaria.AdicionarParticipante(participante.Inscrito);
                    participantes.Remove(participante);
                }

                salas.Remove(salaComFaixaEtaria);
            }

            int indiceSalaEstudo = 0;

            IList <InscricaoParticipante> participantesComSalaDefinida = new List <InscricaoParticipante>();

            foreach (var participante in participantes.OrderByDescending(x => x.Inscrito.Pessoa.DataNascimento))
            {
                salas[indiceSalaEstudo].AdicionarParticipante(participante.Inscrito);

                indiceSalaEstudo++;
                if (indiceSalaEstudo == salas.Count)
                {
                    indiceSalaEstudo = 0;
                }
            }

            return(salas);
        }
Beispiel #2
0
        public static void AtribuirAtividadeSalaEstudo(this InscricaoParticipante inscParticipante, DTOInscricaoSalaEstudo dto, ASalasEstudo repSalas)
        {
            if (dto != null)
            {
                if (dto.Coordenador != null)
                {
                    inscParticipante.AdicionarAtividade(
                        new AtividadeInscricaoSalaEstudoCoordenacao(
                            inscParticipante,
                            repSalas.ObterPorId(inscParticipante.Evento.Id, dto.Coordenador.Id)));
                }
                else if (dto.EscolhidasParticipante != null && dto.EscolhidasParticipante.Count > 0)
                {
                    var salas    = repSalas.ListarTodasPorEvento(inscParticipante.Evento.Id);
                    var escolhas = new SalasEstudoEscolhidas(inscParticipante.Evento);
                    foreach (var dtoOficina in dto.EscolhidasParticipante)
                    {
                        if (escolhas.Salas.Count() == 0)
                        {
                            escolhas.DefinirPrimeiraPosicao(salas.FirstOrDefault(x => x.Id == dtoOficina.Id));
                        }
                        else
                        {
                            escolhas.DefinirProximaPosicao(salas.FirstOrDefault(x => x.Id == dtoOficina.Id));
                        }
                    }

                    var gestaoOficinas = new GestaoSalasEstudoEscolhidas(
                        repSalas,
                        escolhas);

                    inscParticipante.AdicionarAtividade(
                        new AtividadeInscricaoSalaEstudoOrdemEscolha(
                            inscParticipante,
                            gestaoOficinas));
                }
                else
                {
                    inscParticipante.AdicionarAtividade(
                        new AtividadeInscricaoSalaEstudo(inscParticipante));
                }
            }
        }
Beispiel #3
0
        public IEnumerable <DTODivisaoSalaEstudo> RemoverTodasDivisoes(int idEvento)
        {
            IList <DTODivisaoSalaEstudo> salasDTO = new List <DTODivisaoSalaEstudo>();

            ExecutarSeguramente(() =>
            {
                Evento evento = m_RepEventos.ObterEventoPeloId(idEvento);

                IList <SalaEstudo> salas = m_RepSalas.ListarTodasPorEvento(evento.Id);

                foreach (var sala in salas)
                {
                    sala.RemoverTodosParticipantes();
                    m_RepSalas.Atualizar(sala);
                }

                salasDTO = ObterDivisaoSalas(evento);
            });

            return(salasDTO);
        }