public ActionResult Subscribes(uint memberId, string promotionsIdList)
        {
            var member     = DbSession.Query <PromotionMember>().Single(r => r.Id == memberId);
            var subscribes = DbSession.Query <PromotionSubscribe>()
                             .Where(r => r.Member == member)
                             .ToList();
            var selectedPromotions = promotionsIdList.Split(',').Select(r => uint.Parse(r)).ToArray();

            var del = subscribes
                      .Where(r => !selectedPromotions.Any(p => p == r.Promotion.Id))
                      .ToList();

            del.ForEach(r => DbSession.Delete(r));
            DbSession.Flush();

            foreach (var id in selectedPromotions)
            {
                if (!subscribes.Any(r => r.Promotion.Id == id))
                {
                    var subscribe = new PromotionSubscribe {
                        Member    = member,
                        Promotion = DbSession.Query <ProducerPromotion>().Single(r => r.Id == id)
                    };
                    DbSession.Save(subscribe);
                }
            }
            DbSession.Flush();

            return(RedirectToAction("Index"));
        }
        public ActionResult PromotionCopy(uint id)
        {
            var source = DbSession.Query <ProducerPromotion>().First(r => r.Id == id);

            var promotion = new ProducerPromotion {
                MarketingEvent    = source.MarketingEvent,
                Name              = "Копия " + source.Name,
                DateStarted       = source.DateStarted,
                DateFinished      = source.DateFinished,
                Enabled           = source.Enabled,
                Description       = source.Description,
                PromoRequirements = source.PromoRequirements,
                FeeInformation    = source.FeeInformation
            };

            DbSession.Save(promotion);

            source.Suppliers.ForEach(r => {
                var supplier = new PromotionSupplier {
                    Supplier  = r.Supplier,
                    Promotion = promotion
                };
                DbSession.Save(supplier);
            });
            source.Products.ForEach(r => {
                var product = new PromotionProduct {
                    Promotion     = promotion,
                    Product       = r.Product,
                    Price         = r.Price,
                    DealerPercent = r.DealerPercent,
                    MemberPercent = r.MemberPercent
                };
                DbSession.Save(product);
            });
            source.Subscribes.ForEach(r => {
                var subscribe = new PromotionSubscribe {
                    Promotion = promotion,
                    Member    = r.Member
                };
                DbSession.Save(subscribe);
            });

            DbSession.Flush();

            return(RedirectToAction("PromotionList", new { id = CurrentMarketingEvent.Id }));
        }