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); }
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)); }
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; } }
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)); }
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); }
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)); }
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); } }
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)); }
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); }
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; } }
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)); }