public int Gerar(int idCase, int idLicao, Usuario usuarioLogado)
        {
            AlunoDoCase alunoDoCase = _consultaDeAlunosService.ObterAlunoInscritoNoCase(usuarioLogado.Id, idCase);

            if (alunoDoCase == null)
            {
                throw new Exception("Usuário não está inscrito no case de negócio.");
            }

            Licao licao = _licaoRepository.GetById(idLicao);

            if (licao == null || licao.IdCase != idCase)
            {
                throw new Exception("Solicitação inválida.");
            }

            if (_consultaEntregaService.AlunoJaComecouAFazerALicao(alunoDoCase.Id, licao.Id))
            {
                throw new Exception("O registro de entrega desta lição já foi criado.");
            }

            EntregaDeLicao entrega = new EntregaDeLicao(licao);

            AdicionarResponsaveisPelaLicao(entrega, alunoDoCase);

            _entregaDeLicaoService.Manter(entrega);

            return(entrega.Id);
        }
        private void AdicionarResponsaveisPelaLicao(EntregaDeLicao entrega, AlunoDoCase alunoDoCase)
        {
            entrega.Responsaveis.Add(new ResponsavelPelaLicao(entrega, alunoDoCase));

            if (entrega.Licao.FormaDeEntrega != FormaDeEntregaDaLicaoEnum.SomenteIndividual)
            {
                int?idGrupo = _consultaDeAlunosService.ObterIdGrupoOndeUsuarioEstejaParticipando(alunoDoCase.IdUsuario, alunoDoCase.IdCaseDeNegocio);

                if (idGrupo == null && entrega.Licao.FormaDeEntrega == FormaDeEntregaDaLicaoEnum.SomenteEmGrupo)
                {
                    throw new Exception("Esta lição requer que o aluno esteja participando de um grupo.");
                }

                if (idGrupo.HasValue)
                {
                    entrega.IdGrupo = idGrupo.Value;
                    var outrosMembrosDoGrupo = _consultaDeAlunosService.ListarOutrosAlunosQueSejamMembrosNoGrupo(entrega.IdGrupo.Value, alunoDoCase.Id);

                    foreach (var alunoMembro in outrosMembrosDoGrupo)
                    {
                        entrega.Responsaveis.Add(new ResponsavelPelaLicao(entrega, alunoMembro));
                    }
                }
            }
        }
        public void InscreverUsuarioNoCaseDeNegocio(int idCaseDeNegocio, Usuario usuario)
        {
            var caseDeNegocio = ObterPorId(idCaseDeNegocio);

            if (!PermiteUsuarioSeInscreverNoCaseDeNegocio(usuario, caseDeNegocio))
            {
                throw new Exception("Usuário não pode se inscrever neste case de negócio");
            }

            var alunoDoCase = new AlunoDoCase(caseDeNegocio, usuario);

            _alunoDoCaseRepository.Add(alunoDoCase);
        }
Exemple #4
0
 public ResponsavelPelaLicao(EntregaDeLicao entrega, AlunoDoCase alunoDoCase)
 {
     IdEntregaDeLicao = entrega.Id;
     IdAluno          = alunoDoCase.Id;
 }
Exemple #5
0
 public MembroDoGrupoDTO(Usuario usuario, AlunoDoCase alunoDoCase)
 {
     IdAluno      = alunoDoCase.Id;
     IdUsuario    = usuario.Id;
     NomeCompleto = usuario.NomeCompleto;
 }