public async Task <PaginatedList <Package> > GetPackages(PackageFilterServiceModel serviceModel) { var packages = GetPackages().AsNoTracking(); foreach (var taxonomyId in serviceModel.TaxonomyIds) { if (taxonomyId != default(long)) { packages = packages.Where(o => o.EntityTaxonomies.Select(e => e.TaxonomyId).Contains(taxonomyId)); } } if (serviceModel.BudgetMin != default(int)) { packages = packages.Where(o => o.PackageDetails.FirstOrDefault(e => e.Language == Omi.Base.Properties.Resources.DEFAULT_LANGUAGE).Price >= serviceModel.BudgetMin); } if (serviceModel.BudgetMax != default(int)) { packages = packages.Where(o => o.PackageDetails.FirstOrDefault(e => e.Language == Omi.Base.Properties.Resources.DEFAULT_LANGUAGE).Price <= serviceModel.BudgetMax); } packages = packages.OrderByDescending(o => o.Id); var result = await PaginatedList <Package> .CreateAsync(packages, serviceModel.Page, serviceModel.PageSize); return(result); }
public async Task <OkObjectResult> GetPackages(PackageFilterViewModel searchParams) { var serviceModel = PackageFilterServiceModel.FromViewModel(searchParams); var entities = _services.GetPackages(serviceModel); var pageList = await PaginatedList <Package> .CreateAsync(entities, searchParams.Page, searchParams.PageSize); var result = new PageEntityViewModel <Package, PackageViewModel>(pageList, entity => PackageViewModel.FromEntity(entity)); return(Ok(result)); }
public IQueryable <Package> GetPackages(PackageFilterServiceModel serviceModel) { var packages = GetPackages().AsNoTracking(); foreach (var taxonomyId in serviceModel.TaxonomyIds) { if (taxonomyId != default) { packages = packages.Where(o => o.EntityTaxonomies.Select(e => e.TaxonomyId).Contains(taxonomyId)); } } if (serviceModel.BudgetMin != default) { packages = packages.Where(o => o.Details.FirstOrDefault(e => e.ForCurrentRequestLanguage()).Price >= serviceModel.BudgetMin); } if (serviceModel.BudgetMax != default) { packages = packages.Where(o => o.Details.FirstOrDefault(e => e.ForCurrentRequestLanguage()).Price <= serviceModel.BudgetMax); } if (serviceModel.Title != null) { packages = packages.Where(o => o.Details.FirstOrDefault(d => d.Title != null && (d.Title.ToLower().Contains(serviceModel.Title.ToLower()) || serviceModel.Title.ToLower().Contains(d.Title.ToLower()))) != null); } if (serviceModel.GetTypes != null) { if (serviceModel.GetTypes.Contains("perspective")) { packages = packages.Where(o => o.IsPerspective == true); } if (serviceModel.GetTypes.Contains("non-perspective")) { packages = packages.Where(o => o.IsPerspective != true); } } packages = packages.OrderByDescending(o => o.Id); return(packages); }
public async Task <ObjectResult> GetPackages(PackageFilterViewModel viewModel) { var serviceModel = PackageFilterServiceModel.FromViewModel(viewModel); var entities = _packageService.GetPackages(serviceModel); if (string.IsNullOrEmpty(viewModel.SortField) == false) { if (viewModel.SortField == "title") { entities = (viewModel.SortOrder == "ascend") ? entities.OrderBy(o => o.Details.FirstOrDefault().Title) : entities.OrderByDescending(o => o.Details.FirstOrDefault().Title); } } var result = await PaginatedList <Package> .CreateAsync(entities, serviceModel.Page, serviceModel.PageSize); var viewModels = new PageEntityViewModel <Package, PackageViewModel>(result, o => PackageViewModel.FromEntity(o)); return(Ok(viewModels)); }