示例#1
0
        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));
        }
示例#2
0
        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));
        }