Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
            }
        }