public ActionResult PromotionEdit(uint id) { var model = new PromotionFromAssortmentViewModel(); model.Init(DbSession, id); EditedPromotionFromAssortment = model; return(View(model)); }
public ActionResult PromotionFromAssortmentSave(PromotionFromAssortmentViewModel model) { var promotion = DbSession.Query <ProducerPromotion>().FirstOrDefault(r => r.Id == model.PromotionId); if (promotion == null) { return(HttpNotFound()); } promotion.SuppliersType = model.SuppliersType; var products = DbSession.Query <PromotionProduct>().Where(r => r.Promotion == promotion).ToArray(); var ids = model.SelectedProductIds.Split(',').Select(r => uint.Parse(r)).ToArray(); products.Where(r => !ids.Contains(r.Product.Id)).ForEach(r => DbSession.Delete(r)); ids.Where(x => !products.Any(r => r.Product.Id == x)).ForEach(x => { var product = new PromotionProduct { Promotion = promotion, Product = DbSession.Query <Product>().First(p => p.Id == x) }; DbSession.Save(product); }); var suppliers = DbSession.Query <PromotionSupplier>().Where(r => r.Promotion == promotion).ToArray(); var supplierIds = model.SuppliersListToSetList.Split(',').Select(r => uint.Parse(r)).ToArray(); suppliers.Where(r => !supplierIds.Contains(r.Supplier.Id)).ForEach(r => DbSession.Delete(r)); supplierIds.Where(x => !suppliers.Any(r => r.Supplier.Id == x)).ForEach(x => { var supplier = new PromotionSupplier { Promotion = promotion, Supplier = DbSession.Query <Supplier>().First(s => s.Id == x) }; DbSession.Save(supplier); }); DbSession.Flush(); return(RedirectToAction("PromotionList", new { id = model.MarketingEventId })); }