public ActionResult Edit(uint id) { var marketingEvent = DbSession.Query <MarketingEvent>().SingleOrDefault(r => r.Id == id); if (marketingEvent == null) { return(HttpNotFound()); } var model = new MarketingEventViewModel() { MarketingEventId = marketingEvent.Id, Name = marketingEvent.Name, }; model.SelectedProducers = DbSession.Query <Producer>() .ToList() .Where(r => marketingEvent.Producers.Any(p => p.Producer == r)) .OrderBy(r => r.Name) .ToList(); model.AvailableProducers = DbSession.Query <Producer>() .Where(r => !model.SelectedProducers.Contains(r)) .OrderBy(r => r.Name) .ToList(); EditedEvent = model; return(View(model)); }
public ActionResult Add() { var model = new MarketingEventViewModel(); model.AddMode = true; model.AvailableProducers = DbSession.Query <Producer>() .OrderBy(r => r.Name) .ToList(); EditedEvent = model; return(View("Edit", model)); }
public ActionResult Save(MarketingEventViewModel model) { if (!ModelState.IsValid) { return(View("Edit", model)); } if (model.AddMode) { var marketingEvent = new MarketingEvent { Association = CurrentAssociation, Name = model.Name }; DbSession.Save(marketingEvent); EditedEvent.SelectedProducers.ForEach(p => { DbSession.CreateSQLQuery( "insert into Customers.PromoterProducers (ProducerId, MarketingEventId) values (:id, :eventId)") .SetParameter("id", p.Id) .SetParameter("eventId", marketingEvent.Id) .ExecuteUpdate(); }); } else { var marketingEvent = DbSession.Query <MarketingEvent>().FirstOrDefault(r => r.Id == model.MarketingEventId); if (marketingEvent == null) { return(HttpNotFound()); } var producers = DbSession.Query <PromoterProducer>() .Where(r => r.MarketingEvent == marketingEvent) .ToArray(); producers.Where(r => !EditedEvent.SelectedProducers.Contains(r.Producer)).ForEach(p => { DbSession.Delete(p); }); EditedEvent.SelectedProducers.Where(r => !producers.Any(p => p.Producer == r)).ForEach(x => { DbSession.CreateSQLQuery( "insert into Customers.PromoterProducers (ProducerId, MarketingEventId) values (:id, :eventId)") .SetParameter("id", x.Id) .SetParameter("eventId", marketingEvent.Id) .ExecuteUpdate(); }); } EditedEvent = null; return(RedirectToAction("Index")); }