コード例 #1
0
        public async Task <ListTransactionViewModel> TransactionAgencyCampaignServiceCashBackSearch(string keyword, TransactionStatus status, DateTime?StartDate, DateTime?EndDate, int pageindex, int pagesize)
        {
            var filter       = new TransactionSpecification(StartDate, EndDate);
            var transactions = await _ITransactionRepository.ListAsync(filter);

            int total = 0;

            if (!string.IsNullOrEmpty(keyword))
            {
                var agencies    = _IAgencyRepository.ListAll().Where(a => a.Name.Contains(keyword) || a.Username.Contains(keyword)).Select(a => a.Id).ToList();
                var list_wallet = _IWalletRepository.ListAll().Where(w => w.EntityType == EntityType.Agency && agencies.Contains(w.EntityId)).Select(w => w.Id).ToList();

                if (status == TransactionStatus.All)
                {
                    var query_transaction = (from t in transactions
                                             where list_wallet.Contains(t.ReceiverId) &&
                                             t.Type == TransactionType.CampaignServiceCashBack
                                             select t);

                    total = query_transaction.Count();

                    transactions = query_transaction.Skip((pageindex - 1) * pagesize).Take(pagesize).ToList();
                }
                else
                {
                    var query_transactions = (from t in transactions
                                              where list_wallet.Contains(t.ReceiverId) &&
                                              t.Status == status && t.Type == TransactionType.CampaignServiceCashBack
                                              select t);

                    total = query_transactions.Count();

                    transactions = query_transactions.Skip((pageindex - 1) * pagesize).Take(pagesize).ToList();
                }
            }
            else
            {
                if (status != TransactionStatus.All)
                {
                    var query_transactions = (from t in transactions
                                              where t.Status == status &&
                                              t.Type == TransactionType.CampaignServiceCashBack
                                              select t);
                    total = query_transactions.Count();

                    transactions = query_transactions.Skip((pageindex - 1) * pagesize).Take(pagesize).ToList();
                }
                else
                {
                    var query_transactions = (from t in transactions
                                              where t.Type == TransactionType.CampaignServiceCashBack
                                              select t);

                    total = query_transactions.Count();

                    transactions = query_transactions.Skip((pageindex - 1) * pagesize).Take(pagesize).ToList();
                }
            }

            return(new ListTransactionViewModel()
            {
                keyword = keyword,
                EndDate = EndDate.HasValue ? EndDate.Value.ToString() : "",
                StartDate = StartDate.HasValue ? StartDate.Value.ToString() : "",
                TransactionStatus = status,
                Transactions = transactions.Select(t => new TransactionViewModel(t)).ToList(),
                Pager = new PagerViewModel(pageindex, pagesize, total)
            });
        }