public async Task <IActionResult> FilterIndexAsync(LoanFilterViewModel filter) { IList <LoanResponse> _LoanResponses = await __LoanManager.GetAsync(); IndexViewModel _Model = new IndexViewModel { Filter = filter, ActiveLoansCount = _LoanResponses.Where(x => x.Status == Status.ActiveLoan).Count(), PendingLoansCount = _LoanResponses.Where(x => x.Status == Status.Pending).Count(), OverdueLoansCount = _LoanResponses.Where(x => x.Status == Status.Expired && x.CompletedTimestamp == DateTime.MinValue).Count() }; _Model.Loans = await FilterAsync(_LoanResponses, filter); foreach (LoanViewModel loan in _Model.Loans) { loan.Extensions = __Mapper.Map <IList <LoanExtensionViewModel> >(await __LoanExtensionManager.GetAsync(loan.UID)); } return(View("Index", _Model)); }
private async Task <IList <LoanViewModel> > FilterAsync(IList <LoanResponse> loans, LoanFilterViewModel filter) { if (loans.Count <= 0) { return(new List <LoanViewModel>()); } if (!string.IsNullOrWhiteSpace(filter.LoaneeEmail)) { loans = loans.Where(x => x.LoaneeEmail.ToUpper().Contains(filter.LoaneeEmail.ToUpper())).ToList(); } if (!string.IsNullOrWhiteSpace(filter.LoanerEmail)) { loans = loans.Where(x => x.LoanerEmail.ToUpper().Contains(filter.LoanerEmail.ToUpper())).ToList(); } if (filter.FromTimestamp != DateTime.MinValue) { loans = loans.Where(x => x.FromTimestamp >= filter.FromTimestamp).ToList(); } if (filter.ExpiryTimestamp != DateTime.MinValue) { loans = loans.Where(x => x.FromTimestamp <= filter.ExpiryTimestamp).ToList(); } if (filter.CreatedFromTimestamp != DateTime.MinValue) { loans = loans.Where(x => x.CreatedTimestamp >= filter.CreatedFromTimestamp).ToList(); } if (filter.CreatedToTimestamp != DateTime.MinValue) { loans = loans.Where(x => x.CreatedTimestamp <= filter.CreatedToTimestamp).ToList(); } if (filter.AcceptedTermsAndConditions != NsGeneralEnum.BooleanFilter.All) { loans = (filter.AcceptedTermsAndConditions == NsGeneralEnum.BooleanFilter.True) ? loans.Where(x => x.AcceptedTermsAndConditions).ToList() : loans.Where(x => !x.AcceptedTermsAndConditions).ToList(); } if (filter.FromTimestamp != DateTime.MinValue) { loans = loans.Where(x => x.FromTimestamp >= filter.FromTimestamp).ToList(); } if (filter.ExpiryTimestamp != DateTime.MinValue) { loans = loans.Where(x => x.ExpiryTimestamp <= filter.ExpiryTimestamp).ToList(); } if (filter.Statuses != null && filter.Statuses?.Count > 0) { loans = loans.Where(x => filter.Statuses.Contains(x.Status)).ToList(); } return(__Mapper.Map <IList <LoanViewModel> >(loans)); }