public async Task <IActionResult> AdicionarSolicitacao([FromBody] AdicionarSolicitacaoRequest request) { try { string usuarioClaims = _httpContextAccessor.HttpContext.User.FindFirst("Usuario").Value; AutenticarUsuarioResponse usuarioResponse = JsonConvert.DeserializeObject <AutenticarUsuarioResponse>(usuarioClaims); var response = _serviceSolicitacao.AdicionarSolicitacao(request, usuarioResponse.Id); return(await ResponseAsync(response, _serviceSolicitacao)); } catch (System.Exception ex) { return(BadRequest(ex.Message)); } }
public AdicionarSolicitacaoResponse AdicionarSolicitacao(AdicionarSolicitacaoRequest request, Guid idUsuario) { if (request == null) { AddNotification("Resquest", "Invalido"); return(null); } if (request.CnpjFornecedor == null) { AddNotification("Fornecedor", "Invalido"); return(null); } var cliente = _repositoryUsuario.ObterPorId(idUsuario); if (_repositorySolicitacao.Existe(x => x.IdExternoSolicitacao == request.IdExternoSolicitacao && x.EmpresaSolicitante.Id == idUsuario)) { AddNotification("Id Externo", "Já existe uma solicitação desta empresa com este Id"); return(null); } if (cliente.ClienteOuFornecedor == Enums.EnumClienteOuFornecedor.Fornecedor) { AddNotification("Usuario", "O mesmo tem que esta cadastrado como cliente, para realizar uma solicitação"); return(null); } var solicitacao = new Entities.Solicitacao(cliente, request.IdExternoSolicitacao, request.CodigoProduto, request.Descricao, request.PrevisaoTerminoEstoque, request.QuantidadeSolicitada, request.Observacao, request.DataValidade); AddNotifications(solicitacao); solicitacao = _repositorySolicitacao.Adicionar(solicitacao); var grupoFornecedor = new List <GrupoFornecedor>(); foreach (var item in request.CnpjFornecedor) { var fornecedor = _repositoryUsuario.ObterPor(x => x.CnpjCpf.Equals(item)); if (fornecedor == null) { AddNotification("Fornecedor", "Não encontrado"); return(null); } if (fornecedor.ClienteOuFornecedor == Enums.EnumClienteOuFornecedor.Cliente) { AddNotification("cnpjFornecedor", "O mesmo tem que esta cadastrado como Fornedor, para realizar uma solicitação"); return(null); } if (fornecedor != null) { grupoFornecedor.Add(new Entities.GrupoFornecedor(fornecedor, solicitacao)); } } AddNotifications(grupoFornecedor); if (IsInvalid()) { return(null); } if (grupoFornecedor.Count > 0) { _repositoryGrupoFornecedor.AdicionarLista(grupoFornecedor); } else { AddNotification("Fornecedor", "É necessário informar Fornecedor já cadastrado"); return(null); } return(new AdicionarSolicitacaoResponse(solicitacao.Id, request.IdExternoSolicitacao)); }