Example #1
0
        public async Task <StatisticModel> GetStatisticAsync(SearchTransactionHistory searchTransactionHistory = null)
        {
            var result = new StatisticModel();

            var predicate = SetPredicate(searchTransactionHistory);

            var listTransactionHistoryAccountFee = (await _unitOfWork.TransactionHistoryRepository.GetAllAsync("User")).Where(i => i.TransactionType == TransactionType.AccountFee)?.Where(predicate)?.ToList();

            if (listTransactionHistoryAccountFee != null)
            {
                result.TotalAccountFee = listTransactionHistoryAccountFee.Sum(i => i.Amount);
            }

            var listTransactionHistoryWithdrawalFee = (await _unitOfWork.TransactionHistoryRepository.GetAllAsync("User")).Where(i => i.TransactionType == TransactionType.WithdrawalFee)?.Where(predicate)?.ToList();

            if (listTransactionHistoryAccountFee != null)
            {
                result.TotalWithdrawalFee = listTransactionHistoryWithdrawalFee.Sum(i => i.Amount);
            }

            var listTransactionHistoryQuickWithdrawal = (await _unitOfWork.TransactionHistoryRepository.GetAllAsync("User")).Where(i => i.TransactionType == TransactionType.Withdrawal && i.WithdrawalType != null && i.WithdrawalType == WithdrawalType.Quick)?.Where(predicate)?.ToList();

            if (listTransactionHistoryAccountFee != null)
            {
                result.TotalQuickWithdrawal = listTransactionHistoryQuickWithdrawal.Sum(i => i.Amount);
            }

            return(result);
        }
Example #2
0
        public async Task <IActionResult> SearchTransactionHistory(string customerId, int type = 0, int status = 0, string transactionDateFrom = null, string transactionDateTo = null, int pageIndex = 1)
        {
            var model = new ListTransactionHistoryModel();

            DateTime from = new DateTime();
            DateTime to   = new DateTime();

            if (!string.IsNullOrWhiteSpace(transactionDateFrom) && !string.IsNullOrWhiteSpace(transactionDateTo) && DateTime.TryParseExact(transactionDateFrom, "dd/MM/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out from) && DateTime.TryParseExact(transactionDateTo, "dd/MM/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out to) && from > to)
            {
                return(NoContent());
            }
            else
            {
                var searchModel = new SearchTransactionHistory()
                {
                    TransactionType     = (TransactionType)type,
                    Status              = (TransactionStatus)status,
                    TransactionDateFrom = transactionDateFrom,
                    TransactionDateTo   = transactionDateTo
                };
                var pageSize = _configuration.GetValue <int>("PagingConfig:CustomerTransactionHistoryPageSize");
                model = await _transactionHistoryService.GetListTransactionHistory(pageSize, pageIndex, customerId, searchModel);

                model.PageIndex = pageIndex;
                model.PageSize  = pageSize;
            }

            return(PartialView("Views/Customer/TransactionHistoryPartial.cshtml", model));
        }
Example #3
0
        public async Task <int> GetTotalTransactionHistory(string userId = null, SearchTransactionHistory searchTransactionHistory = null)
        {
            try
            {
                var predicate = SetPredicate(searchTransactionHistory);

                var listTransactionHistory = new List <TransactionHistory>();

                if (!string.IsNullOrWhiteSpace(userId))
                {
                    return((await _unitOfWork.TransactionHistoryRepository.FindByAsync(i => i.User.Id == userId && i.TransactionType != TransactionType.None, "User"))
                           .Where(predicate).OrderByDescending(i => i.TransactionDate)
                           .Count());
                }
                else
                {
                    return((await _unitOfWork.TransactionHistoryRepository.FindByAsync(i => i.TransactionType != TransactionType.None, "User"))
                           .Where(predicate).OrderByDescending(i => i.TransactionDate)
                           .Count());
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #4
0
        public async Task <byte[]> ExportTransactionHistory(SearchTransactionHistory searchTransactionHistory = null)
        {
            try
            {
                var comlumHeadrs = new string[]
                {
                    Model.Resources.Common.CustomerName,
                    Model.Resources.Common.PhoneNumber,
                    Model.Resources.Common.Type,
                    Model.Resources.Common.Amount,
                    Model.Resources.Common.Status,
                    Model.Resources.Common.TimeAction
                };

                var predicate = SetPredicate(searchTransactionHistory);

                var listTransactionHistory = (await _unitOfWork.TransactionHistoryRepository.GetAllAsync("User")).Where(i => i.TransactionType != TransactionType.None)
                                             .Where(predicate).OrderByDescending(i => i.TransactionDate).ToList();

                using (var package = new ExcelPackage())
                {
                    var worksheet = package.Workbook.Worksheets.Add("Transaction History");
                    using (var cells = worksheet.Cells[1, 1, 1, 6])
                    {
                        cells.Style.Font.Bold = true;
                    }

                    for (var i = 0; i < comlumHeadrs.Count(); i++)
                    {
                        worksheet.Cells[1, i + 1].Value = comlumHeadrs[i];
                    }

                    var j = 2;
                    foreach (var transactionHistory in listTransactionHistory)
                    {
                        worksheet.Cells["A" + j].Value = transactionHistory.User.FullName;
                        worksheet.Cells["B" + j].Value = transactionHistory.User.PhoneNumber;
                        worksheet.Cells["C" + j].Value = transactionHistory.TransactionType.GetDisplayName();
                        worksheet.Cells["D" + j].Style.Numberformat.Format = "#,##0";
                        worksheet.Cells["D" + j].Value = transactionHistory.Amount;
                        worksheet.Cells["E" + j].Value = transactionHistory.Status.GetDisplayName();
                        worksheet.Cells["F" + j].Value = transactionHistory.TransactionDate.ToString("dd/MM/yyyy HH:mm:ss");
                        j++;
                    }

                    return(package.GetAsByteArray());
                }
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Export Transaction History: " + ex.Message);
            }
        }
        public async Task <IActionResult> List([FromBody] SearchTransactionHistory model, int pageSize = 0, int pageIndex = 0)
        {
            var size = pageSize > 0 ? pageSize : _configuration.GetValue <int>("PagingConfig:PageSize");
            var page = pageIndex > 0 ? pageIndex : 1;

            var transactionHistoryModel = await _transactionHistoryService.GetListTransactionHistory(size, page, searchTransactionHistory : model);

            transactionHistoryModel.PageIndex = page;
            transactionHistoryModel.PageSize  = size;

            return(PartialView("Views/TransactionHistory/ListTransactionHistoryPartial.cshtml", transactionHistoryModel));
        }
Example #6
0
        private ExpressionStarter <TransactionHistory> SetPredicate(SearchTransactionHistory searchTransactionHistory)
        {
            var predicate = PredicateBuilder.New <TransactionHistory>(true);

            if (searchTransactionHistory != null)
            {
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.CustomerName))
                {
                    var customerName = searchTransactionHistory.CustomerName.Trim().ToLower();
                    predicate = predicate.And(i => i.User != null && !string.IsNullOrWhiteSpace(i.User.FullName) && i.User.FullName.ToLower().Contains(customerName));
                }
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.PhoneNumber))
                {
                    var phone = searchTransactionHistory.PhoneNumber.Trim().ToLower();
                    predicate = predicate.And(i => i.User != null && !string.IsNullOrWhiteSpace(i.User.PhoneNumber) && i.User.PhoneNumber.Contains(phone));
                }
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.EmailAddress))
                {
                    var email = searchTransactionHistory.EmailAddress.Trim().ToLower();
                    predicate = predicate.And(i => i.User != null && !string.IsNullOrWhiteSpace(i.User.Email) && i.User.Email.ToLower().Contains(email));
                }
                if (searchTransactionHistory.TransactionType != TransactionType.None)
                {
                    predicate = predicate.And(i => i.TransactionType == searchTransactionHistory.TransactionType);
                }
                if (searchTransactionHistory.Status != TransactionStatus.None)
                {
                    predicate = predicate.And(i => i.Status == searchTransactionHistory.Status);
                }
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.AmountFrom) && Decimal.TryParse(searchTransactionHistory.AmountFrom, out decimal amountFrom) && amountFrom > 0)
                {
                    predicate = predicate.And(i => Decimal.Round(i.Amount) >= Decimal.Round(amountFrom));
                }
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.AmountTo) && Decimal.TryParse(searchTransactionHistory.AmountTo, out decimal amountTo) && amountTo > 0)
                {
                    predicate = predicate.And(i => Decimal.Round(i.Amount) <= Decimal.Round(amountTo));
                }
                var transactionDateFrom = new DateTime();
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.TransactionDateFrom) && DateTime.TryParseExact(searchTransactionHistory.TransactionDateFrom, "dd/MM/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out transactionDateFrom))
                {
                    predicate = predicate.And(i => i.TransactionDate.Date >= transactionDateFrom);
                }
                var transactionDateTo = new DateTime();
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.TransactionDateTo) && DateTime.TryParseExact(searchTransactionHistory.TransactionDateTo, "dd/MM/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out transactionDateTo))
                {
                    predicate = predicate.And(i => i.TransactionDate.Date <= transactionDateTo);
                }
            }

            return(predicate);
        }
Example #7
0
        public async Task <IActionResult> Index(StatisticModel model)
        {
            var searchTransactionHistory = new SearchTransactionHistory()
            {
                TransactionDateFrom = model.TransactionDateFrom,
                TransactionDateTo   = model.TransactionDateTo
            };

            model = await _transactionHistoryService.GetStatisticAsync(searchTransactionHistory);

            model.TransactionDateFrom = searchTransactionHistory.TransactionDateFrom;
            model.TransactionDateTo   = searchTransactionHistory.TransactionDateTo;

            return(View(model));
        }
Example #8
0
        public async Task <byte[]> ExportDealCustom(SearchTransactionHistory searchTransactionHistory = null)
        {
            try
            {
                var comlumHeadrs = new string[]
                {
                    Model.Resources.Common.STT,
                    Model.Resources.Common.Deal,
                    Model.Resources.Common.FullName,
                    Model.Resources.Common.PhoneNumber,
                    Model.Resources.Common.Amount
                };
                var listExport = await GetListTransactionHistoryForTask(searchTransactionHistory);

                using (var package = new ExcelPackage())
                {
                    var worksheet = package.Workbook.Worksheets.Add("Deal Custom");
                    using (var cells = worksheet.Cells[1, 1, 1, 5])
                    {
                        cells.Style.Font.Bold = true;
                    }

                    for (var i = 0; i < comlumHeadrs.Count(); i++)
                    {
                        worksheet.Cells[1, i + 1].Value = comlumHeadrs[i];
                    }

                    var j = 2;
                    foreach (var transactionHistory in listExport)
                    {
                        worksheet.Cells["A" + j].Value = j - 1;
                        worksheet.Cells["B" + j].Value = Model.Resources.Common.TransfersCustomMoney;
                        worksheet.Cells["C" + j].Value = transactionHistory.User.FullName;
                        worksheet.Cells["D" + j].Value = transactionHistory.User.PhoneNumber;
                        worksheet.Cells["E" + j].Style.Numberformat.Format = "#,##0";
                        worksheet.Cells["E" + j].Value = transactionHistory.TotalWithdrawal;
                        j++;
                    }

                    return(package.GetAsByteArray());
                }
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Export Deal Custom: " + ex.Message);
            }
        }
Example #9
0
        public async Task <IActionResult> List(int type = 0, int status = 0, string transactionDateFrom = null, string transactionDateTo = null, int pageIndex = 1, int pageSize = 10)
        {
            if (!_userService.IsSignedIn(User))
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }

            var model = new ListTransactionHistoryModel();

            DateTime from = new DateTime();
            DateTime to   = new DateTime();

            if (!string.IsNullOrWhiteSpace(transactionDateFrom) && !string.IsNullOrWhiteSpace(transactionDateTo) && DateTime.TryParseExact(transactionDateFrom, "dd/MM/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out from) && DateTime.TryParseExact(transactionDateTo, "dd/MM/yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out to) && from > to)
            {
                return(NoContent());
            }
            else
            {
                var searchModel = new SearchTransactionHistory()
                {
                    TransactionType     = (TransactionType)type,
                    Status              = (TransactionStatus)status,
                    TransactionDateFrom = transactionDateFrom,
                    TransactionDateTo   = transactionDateTo
                };
                var currentUser = await _userService.GetCurrentUser();

                var size = pageSize > 0 ? pageSize : _configuration.GetValue <int>("PagingConfig:PageSize");
                var page = pageIndex > 0 ? pageIndex : 1;

                model = await _transactionHistoryService.GetListTransactionHistory(size, page, currentUser.Id, searchModel);

                model.PageIndex = page;
                model.PageSize  = size;
            }

            return(PartialView("Views/ClientTransactionHistory/TransactionHistoryPartial.cshtml", model));
        }
Example #10
0
        private ExpressionStarter <TransactionHistory> SetPredicateTask(SearchTransactionHistory searchTransactionHistory)
        {
            var predicate = PredicateBuilder.New <TransactionHistory>(true);

            if (searchTransactionHistory != null)
            {
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.CustomerName))
                {
                    var customerName = searchTransactionHistory.CustomerName.Trim().ToLower();
                    predicate = predicate.And(i => i.User != null && !string.IsNullOrWhiteSpace(i.User.FullName) && (i.User.FullName.ToLower().Contains(customerName) || i.User.PhoneNumber.Contains(customerName)));
                }
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.AmountFrom) && Decimal.TryParse(searchTransactionHistory.AmountFrom, out decimal amountFrom))
                {
                    predicate = predicate.And(i => Decimal.Round(i.TotalWithdrawal) >= Decimal.Round(amountFrom));
                }
                if (!string.IsNullOrWhiteSpace(searchTransactionHistory.AmountTo) && Decimal.TryParse(searchTransactionHistory.AmountTo, out decimal amountTo))
                {
                    predicate = predicate.And(i => Decimal.Round(i.TotalWithdrawal) <= Decimal.Round(amountTo));
                }
            }

            return(predicate);
        }
 public async Task <StatisticModel> GetStatisticAsync(SearchTransactionHistory searchTransactionHistory = null)
 {
     return(await _transactionHistoryManager.GetStatisticAsync(searchTransactionHistory));
 }
        public async Task <IActionResult> Export(SearchTransactionHistory searchModel)
        {
            var fileContent = await _transactionHistoryService.ExportTransactionHistory(searchModel);

            return(File(fileContent, "application/ms-excel", $"TransactionHistory.xlsx"));
        }
        public async Task <ListTransactionHistoryModel> GetListTransactionHistoryForTask(int pageSize, int pageIndex, SearchTransactionHistory searchTransactionHistory = null)
        {   // for accountant
            var listTransactionHistoryModel = new ListTransactionHistoryModel();
            var listTransactionHistory      = await _transactionHistoryManager.GetListTransactionHistoryForTask(pageSize, pageIndex, searchTransactionHistory);

            listTransactionHistoryModel.ListTransactionHistory = _mapper.Map <List <TransactionHistory>, List <TransactionHistoryModel> >(listTransactionHistory);
            listTransactionHistoryModel.TotalCount             = _transactionHistoryManager.GetListTransactionHistoryForTask(searchTransactionHistory).Result.Count;
            return(listTransactionHistoryModel);
        }
        public async Task <List <TransactionHistoryModel> > GetAllTransactionHistory(string userId, SearchTransactionHistory searchTransactionHistory = null)
        {
            var allTransactionHistory = await _transactionHistoryManager.GetAllTransactionHistory(userId, searchTransactionHistory);

            return(_mapper.Map <List <TransactionHistory>, List <TransactionHistoryModel> >(allTransactionHistory));
        }
        public async Task <ListTransactionHistoryModel> GetListTransactionHistory(int pageSize, int pageIndex, string userId = null, SearchTransactionHistory searchTransactionHistory = null)
        {
            var listTransactionHistoryModel = new ListTransactionHistoryModel();
            var listTransactionHistory      = await _transactionHistoryManager.GetListTransactionHistory(pageSize, pageIndex, userId, searchTransactionHistory);

            var allTransactionHistory = await _transactionHistoryManager.GetTotalTransactionHistory(userId, searchTransactionHistory);

            listTransactionHistoryModel.ListTransactionHistory = _mapper.Map <List <TransactionHistory>, List <TransactionHistoryModel> >(listTransactionHistory);
            listTransactionHistoryModel.TotalCount             = allTransactionHistory;
            return(listTransactionHistoryModel);
        }
Example #16
0
        public async Task <List <TransactionHistory> > GetListTransactionHistory(int pageSize, int pageIndex, string userId = null, SearchTransactionHistory searchTransactionHistory = null)
        {
            if (pageSize < 1 || pageIndex < 1)
            {
                throw new InvalidParameterException();
            }
            try
            {
                var predicate = SetPredicate(searchTransactionHistory);

                var listTransactionHistory = new List <TransactionHistory>();

                if (!string.IsNullOrWhiteSpace(userId))
                {
                    listTransactionHistory = (await _unitOfWork.TransactionHistoryRepository.FindByAsync(i => i.User.Id == userId && i.TransactionType != TransactionType.None, "User"))
                                             .Where(predicate).OrderByDescending(i => i.TransactionDate)
                                             .Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
                }
                else
                {
                    listTransactionHistory = (await _unitOfWork.TransactionHistoryRepository.GetAllAsync("User")).Where(i => i.TransactionType != TransactionType.None)
                                             .Where(predicate).OrderByDescending(i => i.TransactionDate)
                                             .Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
                }

                return(listTransactionHistory);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #17
0
        public async Task <List <TransactionHistory> > GetListTransactionHistoryForTask(int pageSize, int pageIndex, SearchTransactionHistory searchTransactionHistory = null)
        {   // for accountant
            if (pageSize < 1 || pageIndex < 1)
            {
                throw new InvalidParameterException();
            }
            try
            {
                var predicate = SetPredicateTask(searchTransactionHistory);
                var listTransactionHistory = new List <TransactionHistory>();

                listTransactionHistory = (await _unitOfWork.TransactionHistoryRepository.GetAllAsync("User")).Where(i => i.TransactionType == TransactionType.Withdrawal && i.Status == TransactionStatus.Processing)
                                         .OrderBy(i => i.TransactionDate)
                                         .Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();

                //return listTransactionHistory.GroupBy(x => x.UserId, (k, g) => g.Aggregate((a, x) => (x.TotalWithdrawal > a.TotalWithdrawal) ? x : a)).Where(predicate).ToList();
                return(listTransactionHistory.Where(predicate).ToList());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public async Task <byte[]> ExportDealCustom(SearchTransactionHistory searchTransactionHistory = null)
 {
     return(await _transactionHistoryManager.ExportDealCustom(searchTransactionHistory));
 }