public ActionResult Edit(Location location,int[] time_id, int[] weekday) { if ( !User.IsInRole("社联") && RoleHelper.GetRoleClub(User.Identity.Name, "会长").Count == 0 ) { return View("PermissionDeniedError"); } location = unitOfWork.Locations.Find(location.Id); if (ModelState.IsValid) { if (time_id != null) { for (int i = 0; i < time_id.Length; ++i) { if (location.UnAvailableTimes.All(t => t.TimeId != time_id[i] || t.WeekDayId != weekday[i])) { var temp_time = new LocationUnavailableTime { WeekDayId = weekday[i], TimeId = time_id[i], LocationId = location.Id }; location.UnAvailableTimes.Add(temp_time); } } foreach(var item in location.UnAvailableTimes.ToList()) { bool del_mark = true; for (int i = 0; i < time_id.Length; ++i) { if (item.TimeId == time_id[i] && item.WeekDayId == weekday[i]) { del_mark = false; } } if (del_mark == true) { unitOfWork.LocationUnAvailableTimes.Delete(item); } } } unitOfWork.Locations.Update(location); unitOfWork.SaveChanges(); ViewBag.Time = unitOfWork.Times.ToList(); return RedirectToAction("Index"); } ViewBag.Time = new SelectList(unitOfWork.Times.ToList(), "Id", "TimeName"); ViewBag.UnavailableTimes = location.UnAvailableTimes; return View(location); }
public ActionResult Create( Location location,int[] weekday, int[] time_id) { if ( !User.IsInRole("社联") && RoleHelper.GetRoleClub(User.Identity.Name, "会长").Count == 0 ) { return View("PermissionDeniedError"); } if (ModelState.IsValid) { if (weekday != null) { location.UnAvailableTimes = new List<LocationUnavailableTime>(); int i=0; foreach (var week_day in weekday) { location.UnAvailableTimes.Add(new LocationUnavailableTime { Time = unitOfWork.Times.Find(time_id[i]), WeekDayId = week_day }); i++; } } unitOfWork.Locations.Add(location); unitOfWork.SaveChanges(); return RedirectToAction("Index"); } return View(location); }