public virtual ActionResult GetAllParents(GridRequest request, string keywords, string styleName, string gender, string brand, long?styleId, long?dropShipperId, decimal?priceFrom, decimal?priceTo, int?publishedStatus, int?availability, int?listingsMode, int?market, string marketplaceId) { var pageSize = request.ItemsPerPage; var genderIds = (gender ?? "").Split(", ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries) .Select(g => Int32.Parse(g)) .ToList(); var filter = new ProductSearchFilterViewModel { Keywords = keywords, StyleName = styleName, StyleId = styleId, Brand = brand, Genders = genderIds, MinPrice = priceFrom, MaxPrice = priceTo, PublishedStatus = publishedStatus, DropShipperId = dropShipperId, Availability = availability.HasValue ? (ProductAvailability)availability : ProductAvailability.InStock, ListingsMode = (ListingsModeType?)listingsMode, Market = market.HasValue ? (MarketType)market.Value : MarketType.Amazon, MarketplaceId = marketplaceId, StartIndex = (request.Page - 1) * pageSize, LimitCount = pageSize, }; LogI("GetAllParents, filter=" + filter); var cacheService = new DbCacheService(Time); var data = ParentItemViewModel.GetAll(LogService, cacheService, DbFactory, request.ClearCache, filter); return(Json(data, JsonRequestBehavior.AllowGet)); }
//public static ProductSearchResult GetIdListByFilters(IUnitOfWork db, // ProductSearchFilterViewModel 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; //} //public static IEnumerable<ListingDefectDTO> GetListingDefects(ILogService log, // IDbFactory dbFactory) //{ // using (var db = dbFactory.GetRDb()) // { // log.Debug("GetAll Info begin"); // var defectList = db.ListingDefects.GetAllAsDto() // .Where() // log.Debug("GetAll Info end"); // } //} public static GridResponse <ParentItemViewModel> GetAll(ILogService log, IDbCacheService cacheService, IDbFactory dbFactory, bool clearCache, ProductSearchFilterViewModel filter) { if (filter.LimitCount == 0) { filter.LimitCount = 50; } using (var db = dbFactory.GetRDb()) { log.Debug("GetAll begin"); var forceStyleImage = filter.MarketplaceId == MarketplaceKeeper.AmazonAuMarketplaceId || filter.MarketplaceId == MarketplaceKeeper.AmazonComMarketplaceId; var gridResponse = db.ParentItems.GetWithChildSizesWithPaging(log, cacheService, clearCache, forceStyleImage, filter.GetDto()); var results = (from p in gridResponse.Items select new ParentItemViewModel { Id = p.Id, Market = (MarketType)p.Market, MarketplaceId = p.MarketplaceId, SourceMarketId = p.SourceMarketId, ImageSource = p.ImageSource, AmazonName = p.AmazonName, FirstStyleString = GetFirstStyle(p.ChildItems, p.ASIN), ASIN = p.ASIN, SKU = p.SKU, OnHold = p.OnHold, LockMarketUpdate = p.LockMarketUpdate, PublishRequestedDate = p.PublishRequestedDate, ChildItems = p.ChildItems .Select(i => new ItemShortInfoViewModel(p.Market, p.MarketplaceId, i)) .ToList(), StyleItems = p.StyleItems.Select(i => new StyleItemInfoViewModel(i)) .ToList(), Rank = p.Rank, Positions = p.PositionsInfo != null ? p.PositionsInfo.Replace(";", ",<br/>") : String.Empty, Comment = p.LastComment?.Message, CommentByName = p.LastComment?.CreatedByName, CommentDate = p.LastComment?.CreateDate, HasPriceDifferencesWithAmazon = p.HasPriceDifferencesWithAmazon, HasQuantityDifferencesWithAmazon = p.HasQuantityDifferencesWithAmazon, HasChildWithFakeParentASIN = p.HasChildWithFakeParentASIN, LastChildOpenDate = p.LastChildOpenDate, MinChildPrice = p.MinChildPrice, MaxChildPrice = p.MaxChildPrice, IsAmazonUpdated = p.IsAmazonUpdated, }).ToList(); log.Debug("GetAll end"); return(new GridResponse <ParentItemViewModel>(results.OrderBy(r => r.FirstStyleString).ToList(), gridResponse.TotalCount)); } }