/// <summary> /// Get items for grid /// </summary> /// <param name="db"></param> /// <returns></returns> public static IEnumerable <ItemPriceViewModel> GetAll(IUnitOfWork db, ItemPriceSearchFilterViewModel filter) { var query = db.Items.GetAllActualForPrices(); if (filter.BuyBoxWinMode == BuyBoxWinModes.NotWin) { query = query.Where(i => i.BuyBoxStatus == BuyBoxStatusCode.NotWin); } if (filter.Availability == ProductAvailability.InStock) { query = query.Where(i => i.RealQuantity > 0); } if (!String.IsNullOrEmpty(filter.StyleString)) { query = query.Where(i => i.StyleString == filter.StyleString); } if (filter.Market != MarketType.None) { query = query.Where(i => i.Market == (int)filter.Market); } if (!String.IsNullOrEmpty(filter.MarketplaceId)) { query = query.Where(i => i.MarketplaceId == filter.MarketplaceId); } switch (filter.ListingMode) { case ListingsModeType.OnlyFBA: query = query.Where(l => l.IsFBA); break; case ListingsModeType.WithoutFBA: query = query.Where(l => !l.IsFBA); break; } var items = query .ToList() .Select(i => new ItemPriceViewModel(i)) .ToList(); return(items); }
public static ProductSearchResult GetIdListByFilters(IUnitOfWork db, ItemPriceSearchFilterViewModel filter) { var result = new ProductSearchResult(); if (filter.NoneSoldPeriod.HasValue && filter.NoneSoldPeriod > 0) { //NOTE: using styleId to hide parent item with that style but without sold //получаем список продающихся styleId //выводим список item у которых styleId not in Sold Style List var fromDate = DateTime.Today.AddDays(-filter.NoneSoldPeriod.Value); var soldStyleIds = db.StyleCaches.GetAll() .Where(sc => sc.LastSoldDateOnMarket < fromDate) .GroupBy(sc => sc.Id) .Select(gsc => gsc.Key).ToList(); result.StyleIdList = GeneralUtils.IntersectIfNotNull(result.StyleIdList, soldStyleIds); } if (filter.Gender.HasValue) { var genderStyleIds = db.StyleCaches .GetAll() .Where(s => s.Gender == filter.Gender.Value.ToString()) .Select(s => s.Id).ToList(); result.StyleIdList = GeneralUtils.IntersectIfNotNull(result.StyleIdList, genderStyleIds); } if (filter.MainLicense.HasValue) { var mainLicenseStyleIds = db.StyleCaches .GetAll() .Where(s => s.MainLicense == filter.MainLicense.Value.ToString()) .Select(s => s.Id) .ToList(); result.StyleIdList = GeneralUtils.IntersectIfNotNull(result.StyleIdList, mainLicenseStyleIds); } if (filter.SubLicense.HasValue) { var subLicenseStyleIds = db.StyleCaches .GetAll() .Where(s => s.SubLicense == filter.SubLicense.Value.ToString()) .Select(s => s.Id) .ToList(); result.StyleIdList = GeneralUtils.IntersectIfNotNull(result.StyleIdList, subLicenseStyleIds); } if (filter.MinPrice.HasValue || filter.MaxPrice.HasValue) { var priceQuery = db.Items.GetAllViewAsDto().Where(i => i.Market == (int)filter.Market); if (!String.IsNullOrEmpty(filter.MarketplaceId)) { priceQuery = priceQuery.Where(p => p.MarketplaceId == filter.MarketplaceId); } if (filter.MinPrice.HasValue) { priceQuery = priceQuery.Where(p => p.CurrentPrice >= filter.MinPrice.Value); } if (filter.MaxPrice.HasValue) { priceQuery = priceQuery.Where(p => p.CurrentPrice <= filter.MaxPrice.Value); } result.ChildItemIdList = priceQuery.Select(p => p.Id).ToList(); } return(result); }