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));
     }
 }
Beispiel #2
0
        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();
            }
        }