public ActionResult PromotionEditListManager(uint id, string list, PromotionTableRequestType type, string regionList) { if (type == PromotionTableRequestType.SuppliersListToGet || type == PromotionTableRequestType.SuppliersListToSet) { var model = new PromotionTableSelectorViewModel <ViewModelRegionListItem>(); model.SetData(DbSession, id, type, list, regionList); return(PartialView("partials/_PromotionEditListGridView", model)); } else { var model = new PromotionTableSelectorViewModel <ViewModelListItem>(); model.SetData(DbSession, id, type, list, regionList); return(PartialView("partials/_PromotionEditListGridView", model)); } }
public void SetData(ISession dbSession, uint promotionId, PromotionTableRequestType type, string selectedList, string regionList) { Name = type.ToString(); Caption = type == PromotionTableRequestType.ProductsListToGet || type == PromotionTableRequestType.SuppliersListToGet ? "Доступные" : "Участвующие в акции"; if (type == PromotionTableRequestType.ProductsListToGet) { Height = 600; var promotion = dbSession.Query <ProducerPromotion>().First(s => s.Id == promotionId); var producerIds = string.Join(",", promotion.MarketingEvent.Producers.Select(r => r.Producer.Id.ToString()).ToArray()); if (DbProducts.Count == 0) { UpdateDbProducts(dbSession, producerIds); } var itemList = GetUlongListForString(selectedList); ItemsList = DbProducts.Where(s => itemList.All(n => n != s.Value)).ToList(); return; } if (type == PromotionTableRequestType.ProductsListToSet) { Height = 600; var itemList = GetUlongListForString(selectedList); var promotion = dbSession.Query <ProducerPromotion>().First(s => s.Id == promotionId); var producerIds = string.Join(",", promotion.MarketingEvent.Producers.Select(r => r.Producer.Id.ToString()).ToArray()); if (DbProducts.Count == 0) { UpdateDbProducts(dbSession, producerIds); } ItemsList = DbProducts.Where(s => itemList.Any(n => n == s.Value)).ToList(); return; } if (type == PromotionTableRequestType.SuppliersListToGet) { ulong mask = 0; if (!string.IsNullOrEmpty(regionList)) { var arraySplited = regionList.Split(','); if (arraySplited.All(s => s != "0")) { var regions = arraySplited.Select(s => { ulong value = 0; ulong.TryParse(s, out value); return(value); }).Where(s => s != 0).ToList(); mask = regions.Aggregate(mask, (current, region) => current | region); } } if (DbSuppliers.Count == 0) { UpdateDbSuppliers(dbSession); } var itemList = GetUlongListForString(selectedList); if (mask == 0) { ItemsList = DbSuppliers.Where(s => itemList.All(n => n != s.Value)).ToList(); } else { ItemsList = DbSuppliers.Where(s => (((s as ViewModelRegionListItem)?.RegionId & mask) > 0) && itemList.All(n => n != s.Value)).ToList(); } return; } if (type == PromotionTableRequestType.SuppliersListToSet) { if (DbSuppliers.Count == 0) { UpdateDbSuppliers(dbSession); } var itemList = GetUlongListForString(selectedList); ItemsList = DbSuppliers.Where(s => itemList.Any(n => n == s.Value)).ToList(); } }