public async Task <IActionResult> GetReports([FromBody] TransactionReportParameterDto transactionReportParameter) { var currentUserId = Convert.ToInt32(AES.Decrypt(User.FindFirst("LoggedInUserId").Value)); var reportRequest = (await _transactionService.GetAllByUserDateRange(currentUserId, transactionReportParameter)); if (!reportRequest.IsSuccess) { return(BadRequest(reportRequest.Message)); } if (reportRequest.Data == null) { return(NoContent()); } if (transactionReportParameter.TransactionType.Equals(TransactionType.DEPOSIT.ToString(), StringComparison.OrdinalIgnoreCase)) { return(Ok(_mapper.Map <List <DepositTransactionReportDto> >(reportRequest.Data))); } if (transactionReportParameter.TransactionType.Equals(TransactionType.WITHDRAW.ToString(), StringComparison.OrdinalIgnoreCase)) { return(Ok(_mapper.Map <List <WithdrawTransactionReportDto> >(reportRequest.Data))); } if (transactionReportParameter.TransactionType.Equals(TransactionType.TRANSFER.ToString(), StringComparison.OrdinalIgnoreCase)) { return(Ok(_mapper.Map <List <TransferFundTransactionReportDto> >(reportRequest.Data))); } return(Ok(_mapper.Map <List <MixedTransactionReportDto> >(reportRequest.Data))); }
public async void GettingAllMixedTransactions() { var transactionParameter = new TransactionReportParameterDto() { TransactionType = TransactionType.ALL.ToString(), DateFrom = DateTime.Parse("January 15, 2021 12:00AM"), DateTo = DateTime.Parse("January 16, 2021 12:00AM") }; var getTransactionRequest = await _transactionService.GetAllByUserDateRange(1, transactionParameter); Assert.True(getTransactionRequest.IsSuccess); }
public async void InvalidTransactionType() { var transactionParameter = new TransactionReportParameterDto() { TransactionType = "asdasdasdasdasd", DateFrom = DateTime.Parse("January 15, 2021 12:00AM"), DateTo = DateTime.Parse("January 16, 2021 12:00AM") }; var getTransactionRequest = await _transactionService.GetAllByUserDateRange(1, transactionParameter); Assert.False(getTransactionRequest.IsSuccess); }
public async Task <TransactionReportResultDto> GetAllByUserDateRange(int userAccountId, TransactionReportParameterDto transactionParameter) { if (transactionParameter.DateFrom > transactionParameter.DateTo) { return(new TransactionReportResultDto("Datefrom should not be greater than Dateto")); } if (transactionParameter.TransactionType.ToLower() != TransactionType.DEPOSIT.ToString().ToLower() && transactionParameter.TransactionType.ToLower() != TransactionType.WITHDRAW.ToString().ToLower() && transactionParameter.TransactionType.ToLower() != TransactionType.TRANSFER.ToString().ToLower() && transactionParameter.TransactionType.ToLower() != TransactionType.ALL.ToString().ToLower()) { return(new TransactionReportResultDto("Invalid Transaction Type")); } if (transactionParameter.TransactionType.Equals(TransactionType.ALL.ToString(), StringComparison.OrdinalIgnoreCase)) { var allTransactions = await _context.Transactions .Include(x => x.UserAccount) .OrderBy(x => x.CreatedDate) .Where(x => x.UserAccountId == userAccountId && (x.CreatedDate >= transactionParameter.DateFrom && x.CreatedDate <= transactionParameter.DateTo)) .ToListAsync(); return(new TransactionReportResultDto(allTransactions)); } var transactionsByType = await _context.Transactions .Include(x => x.UserAccount) .OrderBy(x => x.CreatedDate) .Where(x => x.UserAccountId == userAccountId && x.TransactionType.ToLower() == transactionParameter.TransactionType.ToLower() && (x.CreatedDate >= transactionParameter.DateFrom && x.CreatedDate <= transactionParameter.DateTo)) .ToListAsync(); return(new TransactionReportResultDto(transactionsByType)); }