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 })); }