public ActionResult CreditCardReconcilation(CreditCardReconcileModelFilter filter = null, int pageNumber = 1) { int totalRecords = 0; var model = _financeReportingService.GetCreditCardReconcileList(pageNumber, _pageSize, filter, out totalRecords); if (model == null) { model = new CreditCardReconcileListModel(); } model.Filter = filter; var currentAction = ControllerContext.RouteData.Values["action"].ToString(); Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.FromDate, filter.ToDate }); model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc); return(View(model)); }
public IEnumerable <ChargeCardPayment> Get(CreditCardReconcileModelFilter filter, int pageNumber, int pageSize, out int totalRecords) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); if (filter == null) { var query = (from cp in linqMetaData.ChargeCardPayment join po in linqMetaData.PaymentOrder on cp.PaymentId equals po.PaymentId select cp); totalRecords = query.Count(); var payments = query.OrderByDescending(cp => cp.DateCreated).TakePage(pageNumber, pageSize).ToArray(); return(Mapper.MapMultiple(payments)); } else { var payments = (from cp in linqMetaData.ChargeCardPayment join po in linqMetaData.PaymentOrder on cp.PaymentId equals po.PaymentId select cp); var query = (from ecs in linqMetaData.EventCustomers join ecod in linqMetaData.EventCustomerOrderDetail on ecs.EventCustomerId equals ecod.EventCustomerId join od in linqMetaData.OrderDetail on ecod.OrderDetailId equals od.OrderDetailId join po in linqMetaData.PaymentOrder on od.OrderId equals po.OrderId select new { po.PaymentId, ecs.EventId }); if (filter.FromDate.HasValue) { payments = payments.Where(cp => cp.DateCreated >= filter.FromDate.Value.Date); } if (filter.ToDate.HasValue) { payments = payments.Where(cp => cp.DateCreated < filter.ToDate.Value.Date.AddDays(1)); } var eventAccounts = (from ea in linqMetaData.EventAccount select ea); if (filter.AccountId > 0) { var eventIds = eventAccounts.Where(x => x.AccountId == filter.AccountId).Select(x => x.EventId); query = query.Where(q => eventIds.Contains(q.EventId)); } if (filter.IsRetailEvent && !filter.IsCorporateEvent) { var eventIds = eventAccounts.Select(x => x.EventId); query = query.Where(q => !eventIds.Contains(q.EventId)); } else if (!filter.IsRetailEvent && filter.IsCorporateEvent) { var eventIds = eventAccounts.Select(x => x.EventId); query = query.Where(q => eventIds.Contains(q.EventId)); } if (filter.IsRetailEvent != filter.IsCorporateEvent || filter.AccountId > 0) { var paymentIds = query.Select(x => x.PaymentId); payments = payments.Where(p => paymentIds.Contains(p.PaymentId)); } totalRecords = payments.Count(); return(Mapper.MapMultiple(payments.OrderByDescending(cp => cp.DateCreated).TakePage(pageNumber, pageSize).ToArray())); } } }