Beispiel #1
0
        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"));
            }
        }