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);
        }
Esempio n. 4
0
        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));
        }