public IActionResult UpdateEvent(Guid id) { var ev = _context.Events. Include(e => e.Acts) .ThenInclude(ea => ea.Act) .SingleOrDefault(e => e.Id == id); var actsFromEvent = ev.Acts.Select(ea => ea.Act); var model = new EventsUpdateEventVM() { Id = ev.Id, Name = ev.Name, AddressLine = ev.AddressLine, PostalCode = ev.PostalCode, City = ev.City, StartDate = ev.StartDate.Date, EndDate = ev.EndDate.Date, StartTime = ev.StartTime, EndTime = ev.EndTime, Acts = _context.Acts.Select(a => new EventsEventActVM() { Name = a.Name, Id = a.Id, IsChecked = actsFromEvent.Contains(a) }).ToList() }; ViewBag.Title = "Update event"; return(View(model)); }
public IActionResult UpdateEvent(EventsUpdateEventVM model) { if (ModelState.IsValid) { var ev = _context.Events .Where(e => e.Id == model.Id) .Include(e => e.Acts) .ThenInclude(ea => ea.Act) .Single(); ev.Name = model.Name; ev.AddressLine = model.AddressLine; ev.PostalCode = model.PostalCode; ev.City = model.City; ev.StartDate = model.StartDate; ev.EndDate = model.EndDate; ev.StartTime = model.StartTime; ev.EndTime = model.EndTime; if (model.Acts != null) { foreach (var act in model.Acts) { var a = _context.EventActs.SingleOrDefault(ea => ea.ActId == act.Id && ea.EventId == ev.Id); if (act.IsChecked) { if (a == null) { _context.EventActs.Add(new EventAct() { Act = _context.Acts.FirstOrDefault(ac => ac.Id == act.Id), Event = ev }); } } else { if (a != null) { _context.EventActs.Remove(a); } } } } _context.SaveChanges(); TempData["EventUpdated"] = $"Act {ev.Name} has been updated."; return(RedirectToAction("Details", new { id = ev.Id })); } ViewBag.Title = "Update event"; return(View(model)); }