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); }
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); } }
public IActionResult NewTransaction(TransactionRequestDTO requestDTO) { try { return(Ok(transactionBLL.CreateNewTransaction(requestDTO))); } catch (Exception ex) { return(NotFound(ex)); } }
public IActionResult GetTransacioctions(TransactionRequestDTO requestDTO) { try { return(Ok(transactionBLL.GetTransacaoLojas(requestDTO.loja))); } catch (Exception ex) { return(NotFound(ex)); } }
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 }); }
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); }
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); }