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); }
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)); } } }
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); }