public async Task <IActionResult> Index(int?pageNumber, ExpencesFiltredModel expencesViewModel) { if (expencesViewModel.AdmFilter && !await IsAdminOrOwner(null, false)) { expencesViewModel.AdmFilter = false; } var model = await IndexCreateViewModel(pageNumber, expencesViewModel, false); return(View(model)); }
public async Task <ExpencesFiltredModel> GetFilteredContentAsync(int?pageNumber, ExpencesFiltredModel expencesFilterModel, string currentUserId, bool adm) { IQueryable <Expences> defaultContext = _context.Expences.Include(e => e.DocumentType) .Include(e => e.Company) .Include(e => e.Currency) .Include(e => e.OurCompany) .Include(e => e.Person) .Include(e => e.User); string total = null; if (expencesFilterModel.CurrencyFilter != null) { var currencyFilter = expencesFilterModel.CurrencyFilter; if (currencyFilter.Count != 0) { defaultContext = defaultContext.Where(x => currencyFilter.Contains(x.CurrencyId)); if (currencyFilter.Count == 1) { total = defaultContext.Sum(x => x.AmountOfPayment).ToString(); } } } if (expencesFilterModel.CompanyFilter != null && expencesFilterModel.CompanyFilter.Count != 0) { defaultContext = defaultContext.Where(x => expencesFilterModel.CompanyFilter.Contains(x.CompanyId)); } if (expencesFilterModel.OurCompanyFilter != null && expencesFilterModel.OurCompanyFilter.Count != 0) { defaultContext = defaultContext.Where(x => expencesFilterModel.OurCompanyFilter.Contains(x.OurCompanyId)); } if (expencesFilterModel.FromFilter != null) { defaultContext = defaultContext.Where(x => x.ApprovedPaymentDate >= expencesFilterModel.FromFilter || x.DesiredPaymentDate >= expencesFilterModel.FromFilter); } if (expencesFilterModel.ToFilter != null) { defaultContext = defaultContext.Where(x => x.ApprovedPaymentDate <= expencesFilterModel.ToFilter || x.DesiredPaymentDate <= expencesFilterModel.ToFilter); } if (!expencesFilterModel.AdmFilter) { defaultContext = defaultContext.Where(x => x.Person.UserId == currentUserId); } expencesFilterModel.Expences = await PaginatedList <Expences> .CreateAsync(defaultContext.AsNoTracking(), pageNumber ?? 1, Constants.pageSize); expencesFilterModel.Total = total; return(expencesFilterModel); }
private async Task <ExpencesFiltredModel> IndexCreateViewModel(int?pageNumber, ExpencesFiltredModel expencesViewModel, bool adm) { //Настройку хранения фильтров не реализовывал. В планах - хранить фильтры в базе для каждого сочетания пользователь/модуль var currentUserId = _userManager.GetUserId(User); expencesViewModel = await _expencesService.GetFilteredContentAsync(pageNumber, expencesViewModel, currentUserId, adm); ViewBag.CurrencyFilter = new SelectList(_expencesService.GetCurrenciesIds(), "Id", "Name"); ViewBag.CompanyFilter = new SelectList(_expencesService.GetCompaniesIds(), "Id", "Name"); ViewBag.OurCompanyFilter = new SelectList(_expencesService.GetOurCompaniesIds(), "Id", "Name"); if (!string.IsNullOrEmpty(expencesViewModel.Total)) { expencesViewModel.Total = Localization.currentLocalizatin["Amount of Expenses"] + ": " + expencesViewModel.Total; } return(expencesViewModel); }