public List <TransactionSumByDateDTO> GetTransactionReport(TransactionRequestDTO dto)
        {
            var transactions = _transactionRepository.GetList().Where(x => x.Date >= dto.Date[0] && x.Date <= dto.Date[1]);

            foreach (var item in transactions)
            {
                item.Account = _accountService.Get(item.AccountId);
            }
            var result = transactions.OrderBy(x => x.Date).GroupBy(x => x.Date)
                         .Select(
                g => new TransactionSumByDateDTO
            {
                Date = g.First().Date,
                Sum  = g.Sum(t =>
                             t.Account.Type == AccountType.Income
                                ? (t.Type == TransactionType.Income ? t.Amount * t.Account.Currency.Value : -1 * t.Amount * t.Account.Currency.Value)
                                : (t.Type == TransactionType.Income ? -1 * t.Amount * t.Account.Currency.Value : t.Amount * t.Account.Currency.Value)),
                Total = 0
            })
                         .Where(x => x.Sum != 0)
                         .ToList();

            decimal total = 0;

            foreach (var item in result)
            {
                total     += item.Sum;
                item.Total = total;
            }
            return(result);
        }
Exemple #2
0
        public TransacaoLoja CreateNewTransaction(TransactionRequestDTO req)
        {
            var bandeira = GetBandeira(req.creditCard.bandeira);

            var config = configuracaoLojaRepository.GetConfiguracaoLoja(req.loja, bandeira);

            if (config == null)
            {
                throw new Exception("Loja não possui configuração");
            }

            var gatewayBll = new GatewayBLL();

            if (config.flUseAntiFraude)
            {
                var validateFraude = gatewayBll.AntiFraudeMock();

                if (validateFraude)
                {
                    var tran = SetTransactionByGateway(config.gateway, req);
                    return(tran);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                var tran = SetTransactionByGateway(config.gateway, req);

                return(tran);
            }
        }
Exemple #3
0
 public IActionResult NewTransaction(TransactionRequestDTO requestDTO)
 {
     try
     {
         return(Ok(transactionBLL.CreateNewTransaction(requestDTO)));
     }
     catch (Exception ex)
     {
         return(NotFound(ex));
     }
 }
Exemple #4
0
 public IActionResult GetTransacioctions(TransactionRequestDTO requestDTO)
 {
     try
     {
         return(Ok(transactionBLL.GetTransacaoLojas(requestDTO.loja)));
     }
     catch (Exception ex)
     {
         return(NotFound(ex));
     }
 }
Exemple #5
0
        private TransacaoLoja SetTransactionByGateway(GatewayPgtos gateway, TransactionRequestDTO req)
        {
            var gatewayBll = new GatewayBLL();

            if (gateway.nomeGateway == "Cielo")
            {
                return(CretaCieloTransaction(gateway, req, gatewayBll));
            }
            else
            {
                return(CreateStoneTransaction(gateway, req, gatewayBll));
            }
        }
        public TransactionResponseDTO GetAll(TransactionRequestDTO dto)
        {
            var filteredItems = _transactionRepository.GetList()
                                .Where(x => x.AccountId == dto.AccountId &&
                                       x.Date >= dto.Date[0] && x.Date <= dto.Date[1] &&
                                       x.Amount >= dto.Amount[0] && x.Amount <= dto.Amount[1] &&
                                       (x.Type == dto.Type || dto.Type == TransactionType.All) &&
                                       x.Description.Contains(dto.Description));
            var pagedItems = filteredItems
                             .OrderByDescending(x => x.Date)
                             .Skip((dto.CurrentPage - 1) * dto.PageSize)
                             .Take(dto.PageSize);

            return(new TransactionResponseDTO {
                Transactions = pagedItems.ToList(), Total = filteredItems.ToList().Count
            });
        }
Exemple #7
0
        private TransacaoLoja CreateStoneTransaction(GatewayPgtos gateway, TransactionRequestDTO req, GatewayBLL gatewayBll)
        {
            var data = gatewayBll.StoneMock(new GatewayApiClient.DataContracts.CreditCard()
            {
                CreditCardNumber = req.creditCard.numeroCartao,
                ExpYear          = Convert.ToInt32(req.creditCard.dataExpiracao),
                ExpMonth         = Convert.ToInt32(req.creditCard.nomePropietario),
                SecurityCode     = req.creditCard.codigoSeguranca
            });


            var transaction = new TransacaoLoja()
            {
                loja   = req.loja,
                status = data != null ? true : false,
                valor  = req.valor
            };

            transactionRepository.CreateNewTransaction(transaction);

            return(transaction);
        }
Exemple #8
0
        private TransacaoLoja CretaCieloTransaction(GatewayPgtos gateway, TransactionRequestDTO req, GatewayBLL gatewayBll)
        {
            var data = gatewayBll.CieloMock(new CreditCard()
            {
                Brand          = req.creditCard.bandeira,
                CardNumber     = req.creditCard.numeroCartao,
                ExpirationDate = req.creditCard.dataExpiracao,
                Holder         = req.creditCard.nomePropietario,
                SecurityCode   = req.creditCard.codigoSeguranca
            });

            var transaction = new TransacaoLoja()
            {
                loja   = req.loja,
                status = data != null ? true : false,
                valor  = req.valor
            };

            transactionRepository.CreateNewTransaction(transaction);

            return(transaction);
        }