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); }
public ResponsavelPelaLicao(EntregaDeLicao entrega, AlunoDoCase alunoDoCase) { IdEntregaDeLicao = entrega.Id; IdAluno = alunoDoCase.Id; }
public MembroDoGrupoDTO(Usuario usuario, AlunoDoCase alunoDoCase) { IdAluno = alunoDoCase.Id; IdUsuario = usuario.Id; NomeCompleto = usuario.NomeCompleto; }