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;
        }
Beispiel #2
0
        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");
                }
            }
        }