public async Task <Response <Proposta> > AddProposta(PropostaRequest request) { var response = new Response <Proposta>(); try { var regras = new PropostaRegras(); var cliente = await this.Context.Clientes.FirstOrDefaultAsync(x => x.ClienteId == request.ClienteId); if (cliente == null) { throw new BusinessException("ClienteNaoExiste", "O Cliente não existe no banco de dados."); } regras.QuantidadePropostasAcimaPermitido(await this.Context.Propostas.CountAsync(x => x.ClienteId == cliente.ClienteId)); regras.IdadeDentroDosLimites(cliente.Idade); regras.ValorDentroDosLimites(request.Valor); var obj = new Proposta { ClienteId = request.ClienteId, Status = PropostaStatus.Criada, UsuarioId = request.ResponsavelId, DataCriacao = DateTime.Now }; this.Context.Propostas.Add(obj); await this.Context.SaveChangesAsync(); response.Item = obj; } catch (BusinessException ex) { response.Code = ResponseCode.Error; response.ResponseStatus.AddError(ex.FieldName, ex.Message); } catch (Exception ex) { response.Code = ResponseCode.Fatal; response.ResponseStatus.StackTrace = ex.StackTrace; response.ResponseStatus.AddError("Erro fatal aconteceu", ex.Message); } return(response); }
public async Task <ActionResult <Response> > Post([FromBody] PropostaRequest request) { try { if (request == null) { return(BadRequest("A Proposta precisa estar preenchida")); } if (!ModelState.IsValid) { return(BadRequest("Modelo inválido")); } var obj = await _service.AddProposta(request); return(CreatedAtAction("Get", new { id = obj.Item.PropostaId }, obj)); } catch { return(StatusCode(500, "Internal server error")); } }