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); }
public AvaliarRespostasDTO ObterDadosDePreparacaoParaAvaliarRespostas(int idLicao, Usuario usuarioLogado) { Licao licao = _licaoRepository.GetById(idLicao); if (licao == null) { throw new Exception("Lição não encontrada."); } bool ehProfessor = _caseDeNegocioService.UsuarioEstaAssociadoAoCaseDeNegocioComoProfessor(usuarioLogado, licao.CaseDeNegocio); if (!ehProfessor) { throw new Exception("Apenas professores têm permissão para avaliar as lições entregues."); } var trofeus = _trofeuRepository.Listar(licao.IdCase); return(new AvaliarRespostasDTO(licao, trofeus)); }