Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }