Example #1
0
        /// <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);
        }
Example #2
0
        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);
        }