public IEnumerable<DTODivisaoOficina> MoverParticipante(int idEvento, int idInscricao, int daIdOficina, int paraIdOficina) { IList<DTODivisaoOficina> oficinasDTO = new List<DTODivisaoOficina>(); ExecutarSeguramente(() => { Evento evento = m_RepEventos.ObterEventoPeloId(idEvento); Oficina oficinaOrigem = m_RepOficinas.ObterPorId(idEvento, daIdOficina); Oficina oficinaDestino = m_RepOficinas.ObterPorId(idEvento, paraIdOficina); InscricaoParticipante participante = (InscricaoParticipante) m_RepInscricoes.ObterInscricaoPeloIdEventoEInscricao(idEvento, idInscricao); DivisaoManualParticipantesPorOficina divisor = new DivisaoManualParticipantesPorOficina(evento, m_RepOficinas); divisor.Oficina(oficinaOrigem).MoverParticipante(participante).Para(oficinaDestino); m_RepOficinas.Atualizar(oficinaOrigem); m_RepOficinas.Atualizar(oficinaDestino); oficinasDTO = ObterDivisaoOficinas(evento); }); return oficinasDTO; }
public static void AtribuirAtividadeOficina(this InscricaoParticipante inscParticipante, DTOInscricaoOficina dto, AOficinas repOficinas) { if (dto != null) { if (dto.Coordenador != null) { inscParticipante.AdicionarAtividade( new AtividadeInscricaoOficinasCoordenacao( inscParticipante, repOficinas.ObterPorId(inscParticipante.Evento.Id, dto.Coordenador.Id))); } else if (dto.EscolhidasParticipante != null) { var oficinas = repOficinas.ListarTodasPorEvento(inscParticipante.Evento.Id); var escolhas = new OficinasEscolhidas(inscParticipante.Evento); foreach (var dtoOficina in dto.EscolhidasParticipante) { if (escolhas.Oficinas.Count() == 0) { escolhas.DefinirPrimeiraPosicao(oficinas.FirstOrDefault(x => x.Id == dtoOficina.Id)); } else { escolhas.DefinirProximaPosicao(oficinas.FirstOrDefault(x => x.Id == dtoOficina.Id)); } } var gestaoOficinas = new GestaoOficinasEscolhidas( repOficinas, escolhas); inscParticipante.AdicionarAtividade( new AtividadeInscricaoOficinas( inscParticipante, gestaoOficinas)); } else { throw new ExcecaoAplicacao("AtribuicaoInscricao", "As informações para as oficinas estão incompletas"); } } }