/// <summary> /// Cadastra uma nova requisição /// </summary> /// <param name="model"></param> /// <returns></returns> GetRequisicaoModel IRequisicaoService.Inserir(PostRequisicaoModel model) { if (context.Requisicoes.Find(model.NrRequisicao) != null) { throw new ApiException(HttpStatusCode.Conflict, $"Requisição já cadastrada: {model.NrRequisicao}"); } var ols = context.OrdensDeLiberacao .Where(ol => model.OrdensDeLiberacao .Select(o => o.NrOrdemDeLiberacao) .Contains(ol.NrOrdemDeLiberacao)); if (ols.Any()) { throw new ApiException(HttpStatusCode.Conflict, $"Ordem(ns) de liberação já cadastrada(s): {String.Join(',', ols.Select(ol => ol.NrOrdemDeLiberacao))}"); } var requisicao = mapper.Map <PostRequisicaoModel, Requisicao>(model); context.Add <Requisicao>(requisicao); context.SaveChanges(); var retorno = context.Requisicoes.Include(r => r.OrdensDeLiberacao) .ThenInclude(ol => ol.ProjetosAfetados) .ThenInclude(pa => pa.Projeto) .SingleOrDefault(r => r.NrRequisicao == model.NrRequisicao); return(mapper.Map <Requisicao, GetRequisicaoModel>(retorno)); }
public IActionResult Post(PostRequisicaoModel requisicao) { var retorno = requisicaoService.Inserir(requisicao); var ret = new { retorno.NrRequisicao, retorno.DsRequisicao, retorno.DtSolicitacao, retorno.NmSolicitante, OrdensDeLiberacao = retorno.OrdensDeLiberacao.Select(ol => new { ol.NrOrdemDeLiberacao, ol.ProjetosAfetados }) }; return(Created($"{Request.Scheme}://{Request.Host}/odata/Requisicoes?$filter=NrRequisicao eq {retorno.NrRequisicao}&$top=1", ret)); }
public void NaoInserirTest() { using var context = new Context(options); IRequisicaoService service = new RequisicaoService(context, MapperProfile.GetMapper()); try { var requisicao = new PostRequisicaoModel { NrRequisicao = 0, DsRequisicao = "Teste", DtSolicitacao = DateTime.Now, NmSolicitante = "Fulano", OrdensDeLiberacao = new HashSet <PostOrdemDeLiberacaoModel> { new PostOrdemDeLiberacaoModel { NrOrdemDeLiberacao = 0 }, new PostOrdemDeLiberacaoModel { NrOrdemDeLiberacao = 1, ProjetosAfetados = new HashSet <PostProjetoAfetadoModel> { new PostProjetoAfetadoModel { CdProjeto = -1 }, new PostProjetoAfetadoModel { CdProjeto = -2 }, } }, } }; var retorno = service.Inserir(requisicao); Assert.Fail(); } catch (ApiException) { Assert.IsTrue(true); } }