public ActionResult Post([FromBody] SalvarEntregaDeLicaoRequest request) { try { _geracaoDeEntregasService.Salvar(request, _usuarioLogado.Obter()); return(NoContent()); } catch (Exception e) { return(NotFound(e.Message)); } }
public void Salvar(SalvarEntregaDeLicaoRequest request, Usuario usuarioLogado) { var entrega = _entregaDeLicaoService.ObterPorId(request.IdEntregaDeLicao); if (entrega == null) { throw new Exception("Entrega de lição não encontrada."); } if (!_consultaEntregaService.UsuarioEhResponsavelPelaEntregaDeLicao(entrega.Id, usuarioLogado.Id)) { throw new Exception("Entrega de lição não encontrada."); } if (!TodasAsQuestoesRespondidasFazemParteDaMesmaLicao(entrega, request.Questoes)) { throw new Exception("Solicitação possui questões que não fazem parte da lição."); } AlterarStatus(entrega, request.Status); foreach (var questao in request.Questoes) { Resposta resposta = entrega.Respostas.FirstOrDefault(r => r.IdQuestao == questao.Id); if (resposta == null) { resposta = new Resposta(); resposta.IdEntregaDeLicao = entrega.Id; resposta.IdQuestao = questao.Id; entrega.Respostas.Add(resposta); } resposta.Conteudo = questao.Resposta; } _entregaDeLicaoService.Manter(entrega); }