public async Task <IActionResult> AdicionarOrcamento([FromBody] AdicionarOrcamentoRequest request) { try { var response = _serviceOrcamento.AdicionarOrcamento(request, RetornaIdUsuarioLogado()); return(await ResponseAsync(response, _serviceOrcamento)); } catch (System.Exception ex) { return(BadRequest(ex.Message)); } }
public AdicionarOrcamentoResponse AdicionarOrcamento(AdicionarOrcamentoRequest request, Guid idUsuario) { if (request == null) { AddNotification("Resquest", "Invalido"); return(null); } var fornecedor = _repositoryUsuario.ObterPorId(idUsuario); if (_repositoryOrcamento.Existe(x => x.IdExterno == request.IdExterno && x.FornecedorSolicitante.Id == idUsuario)) { AddNotification("Id Externo", "Já existe um Orçamento desta empresa com este Id"); } List <Solicitacao> solicitacoes = new List <Solicitacao>(); foreach (var item in request.IdExternoSolicitacao) { var solicitacao = _repositoryOrcamento.VerificaIdExternoSolicitacao(idUsuario, item); if (solicitacao != null) { solicitacoes.Add(solicitacao); } else { AddNotification("Id Externo Solicitação", "Inválido, confirme se o mesmo existe. Número: " + item); } } var itens = PopulaItemOrcamento(request.Itens); var orcamento = new Entities.Orcamento(fornecedor, request.IdExterno, request.ValorTotal, request.Frete, request.Seguro, request.FormaPagamento, request.Parcelas, itens); AddNotifications(orcamento); if (IsInvalid()) { return(null); } orcamento = _repositoryOrcamento.AdicionarOrcamentoCompleto(orcamento, solicitacoes); return(new AdicionarOrcamentoResponse(orcamento.Id, request.IdExterno)); }