Example #1
0
 public static PagamentoDto GetNewPagamento(PagamentoUnificatoFatturaAcquistoDto pagamenoUnificatoFatturaAcquisto)
 {
     try
     {
         if (pagamenoUnificatoFatturaAcquisto != null)
         {
             var fatturaAcquisto    = pagamenoUnificatoFatturaAcquisto.FatturaAcquisto;
             var pagamentoUnificato = pagamenoUnificatoFatturaAcquisto.PagamentoUnificato;
             var pagamento          = new PagamentoDto();
             pagamento.Codice               = GetCodice(fatturaAcquisto);
             pagamento.Data                 = pagamentoUnificato.Data;
             pagamento.Descrizione          = pagamentoUnificato.Descrizione;
             pagamento.FatturaAcquistoId    = pagamenoUnificatoFatturaAcquisto.FatturaAcquistoId;
             pagamento.Importo              = pagamenoUnificatoFatturaAcquisto.Saldo;
             pagamento.TransazionePagamento = pagamenoUnificatoFatturaAcquisto.TransazionePagamento;
             pagamento.Note                 = "Pagamento unificato " + BusinessLogic.PagamentoUnificato.GetCodifica(pagamentoUnificato);
             pagamento.PagamentoUnificatoId = pagamenoUnificatoFatturaAcquisto.PagamentoUnificatoId;
             pagamento.TipoPagamento        = pagamentoUnificato.TipoPagamento;
             return(pagamento);
         }
     }
     catch (Exception ex)
     {
         UtilityError.Write(ex);
     }
     return(null);
 }
Example #2
0
        public IActionResult Post(
            [FromServices] BackendTestContext context,
            [FromBody] PagamentoDto model)
        {
            try
            {
                int    mes, ano;
                string estado;
                Regex  regex = new Regex(@"(?<Mes>\d{2})/(?<Ano>\d{4})");
                Match  match = regex.Match(model.Cartao.Data_Expiracao);

                mes = Int32.Parse(match.Groups["Mes"].Value);
                ano = Int32.Parse(match.Groups["Ano"].Value);

                DateTime now = DateTime.Now;
                // Checando o valor e a data de vencimento do cartão
                if (model.Valor > 100 && (ano > now.Year || (ano == now.Year && mes >= now.Month)))
                {
                    estado = "APROVADO";
                }
                else
                {
                    estado = "REJEITADO";
                }

                var resposta = new { Valor = model.Valor, Estado = estado };
                return(Ok(resposta));
            }
            catch
            {
                return(BadRequest("Ocorreu um erro desconhecido"));
            }
        }
Example #3
0
        public IActionResult RealizaPagamento(PagamentoPost pagamentoPost)
        {
            PagamentoDto pagamentoDto = new PagamentoDto
            {
                Id = Guid.NewGuid(),
                DataSolicitacao = DateTimeOffset.Now,
                DataAprovacao   = null,
                StatusPagamento = StatusPagamentoDto.Processando,
                Valor           = pagamentoPost.Valor
            };

            return(Ok(pagamentoDto));
        }
Example #4
0
        public IActionResult ObtemPagamento(Guid id)
        {
            PagamentoDto pagamentoDto = new PagamentoDto
            {
                Id = Guid.NewGuid(),
                DataSolicitacao = DateTimeOffset.Now,
                DataAprovacao   = null,
                StatusPagamento = StatusPagamentoDto.Processando,
                Valor           = 1234.12
            };

            return(Ok(pagamentoDto));
        }
Example #5
0
 public static string GetCodifica(PagamentoDto pagamento)
 {
     try
     {
         if (pagamento != null)
         {
             var codifica = pagamento.Codice + " DEL " + UtilityValidation.GetDataND(pagamento.Data);
             return(codifica);
         }
     }
     catch (Exception ex)
     {
         UtilityError.Write(ex);
     }
     return(null);
 }
        public async Task <ActionResult> Compras([FromBody] PagamentoDto pagamento)
        {
            if (!ModelState.IsValid)
            {
                return(StatusCode((int)HttpStatusCode.BadRequest, "Ocorreu um Erro Desconhecido"));
            }
            var retorno = await _service.RequestExterno(pagamento);

            if (_error.ErrorMessages.Any())
            {
                return(BadRequest(_error.ErrorMessages));
            }
            if (retorno == null)
            {
                return(StatusCode((int)HttpStatusCode.BadRequest, "Ocorreu um Erro Desconhecido"));
            }
            return(Ok(retorno));
        }
Example #7
0
        public async Task <IActionResult> Post(
            [FromServices] BackendTestContext context,
            [FromBody] CompraDto model)
        {
            try
            {
                HttpClientHandler clientHandler = new HttpClientHandler();
                clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return(true); };

                // O gateway fornecido (http://sv-dev-01.pareazul.com.br:8080/api/gateways/compras) não conseguiu ser acessado
                // e por tanto decidi por usar a api de pagamentos implementada no item 6 como gateway
                Uri link   = new Uri("http://127.0.0.1:5000/api/pagamento/compras");
                var client = new HttpClient(clientHandler);

                Produto produto = await context.Produtos.AsNoTracking().FirstOrDefaultAsync(p => p.Id == model.Produto_Id);

                if (produto == null || produto.QtdeEstoque < model.Qtde_Comprada)
                {
                    return(BadRequest("Ocorreu um erro desconhecido"));
                }

                PagamentoDto pagamento = new PagamentoDto()
                {
                    Valor  = produto.ValorUnitario * model.Qtde_Comprada,
                    Cartao = model.Cartao
                };
                var jsonInString = JsonConvert.SerializeObject(pagamento);

                var httpResponse = await client.PostAsync(link, new StringContent(jsonInString, Encoding.UTF8, "application/json"));

                httpResponse.EnsureSuccessStatusCode();

                string respostaEmString = await httpResponse.Content.ReadAsStringAsync();

                dynamic gatewayJson = JsonConvert.DeserializeObject(respostaEmString);

                DateTime now = DateTime.Now;

                // Atualizando a quantidade de estoque do produto e a data de atualização
                produto.QtdeEstoque     = produto.QtdeEstoque - model.Qtde_Comprada;
                produto.DataAtualizacao = now;

                context.Entry(produto).State = EntityState.Modified;

                // Cadastrando a transação
                Transacao transacao = new Transacao()
                {
                    ProdutoId  = model.Produto_Id,
                    ValorVenda = gatewayJson.valor,
                    DataVenda  = now,
                    Estado     = gatewayJson.estado
                };

                context.Transacoes.Add(transacao);

                await context.SaveChangesAsync();

                return(Ok("Venda realizada com sucesso"));
            }
            catch
            {
                return(BadRequest("Ocorreu um erro desconhecido"));
            }
        }
Example #8
0
        private static void AddReportPagamentoFornitore(UtilityReport.Table tablePagamenti, PagamentoDto pagamento)
        {
            try
            {
                if (pagamento != null)
                {
                    var numero               = pagamento.Codice;
                    var data                 = UtilityValidation.GetDataND(pagamento.Data);
                    var tipoPagamento        = pagamento.TipoPagamento;
                    var descrizione          = pagamento.Descrizione;
                    var note                 = pagamento.Note;
                    var transazionePagamento = (pagamento.TransazionePagamento != null ? pagamento.TransazionePagamento.ToUpper() : "");
                    var importo              = UtilityValidation.GetEuro(pagamento.Importo);

                    tablePagamenti.AddRow(numero, data, tipoPagamento, descrizione, note, transazionePagamento, importo);
                }
            }
            catch (Exception ex)
            {
                UtilityError.Write(ex);
            }
        }
        public async Task <RequestExternoDto> RequestExterno(PagamentoDto pagamento)
        {
            if (pagamento.Cartao.cvv.Length != 3 || pagamento.Cartao.numero.Length != 16)
            {
                _error.ErrorMessages.Add(new ErrorMessage
                {
                    StatusCode = HttpStatusCode.PreconditionFailed,
                    Message    = "Os valores informados não são válidos"
                });
            }
            var bandeiracartao = new List <string> {
                "VISA", "Mastercard", "AMEX", "Diners Club", "Discover", "Hipercard", "Inter"
            };

            if (!bandeiracartao.Contains(pagamento.Cartao.bandeira))
            {
                _error.ErrorMessages.Add(new ErrorMessage
                {
                    StatusCode = HttpStatusCode.PreconditionFailed,
                    Message    = "Não aceitamos essa bandeira"
                });
            }
            string[] date = pagamento.Cartao.data_expiracao.Split('/');
            if (int.Parse(date[1]) < DateTime.Now.Year)
            {
                _error.ErrorMessages.Add(new ErrorMessage
                {
                    StatusCode = HttpStatusCode.PreconditionFailed,
                    Message    = "Data do Cartão Expirada"
                });
            }
            if (int.Parse(date[0]) < DateTime.Now.Month && int.Parse(date[1]) == DateTime.Now.Month)
            {
                _error.ErrorMessages.Add(new ErrorMessage
                {
                    StatusCode = HttpStatusCode.PreconditionFailed,
                    Message    = "Data do Cartão Expirada"
                });
            }
            var getproduct = await Get(pagamento.produto_id);

            if (getproduct.qtde_estoque < pagamento.qtde_comprada)
            {
                _error.ErrorMessages.Add(new ErrorMessage
                {
                    StatusCode = HttpStatusCode.PreconditionFailed,
                    Message    = "Quantidade Insuficiente no estoque"
                });
            }
            var prepararpagamento = pagamento.qtde_comprada * getproduct.valor_unitario;
            var pagamentosend     = new PagamentoExternoSend
            {
                valor  = prepararpagamento,
                cartao = pagamento.Cartao
            };
            var data     = JsonConvert.SerializeObject(pagamentosend);
            var content  = new StringContent(data, Encoding.UTF8, "application/json");
            var response = await HttpClient.PostAsync(_comprasUrl, content);

            var retorno = JsonConvert.DeserializeObject <RequestExternoDto>(response.Content.ReadAsStringAsync().Result);

            if (retorno.estado == "Aprovado")
            {
                getproduct.DataUltCompra = DateTime.UtcNow;
                getproduct.ValorUltVenda = retorno.valor;
                getproduct.qtde_estoque  = getproduct.qtde_estoque - pagamento.qtde_comprada;
                var model  = _mapper.Map <ProductModel>(getproduct);
                var entity = _mapper.Map <ProductEntity>(model);
                await _productrepository.UpdateAsync(entity);
            }
            return(retorno);
        }