public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Activity activity = db.Activities.Find(id); if (activity == null) { return(HttpNotFound()); } var module = db.Modules.Find(activity.ModuleId); var course = db.Courses.Find(module.CourseId); ViewBag.CourseName = course.Name; ViewBag.ModuleName = module.Name; ViewBag.ActivityTypeId = new SelectList(db.ActivityTypes, "Id", "TypeName", activity.ActivityTypeId); var activityVM = new CreateEditActivityVM { Id = activity.Id, Name = activity.Name, Description = activity.Description, StartDate = activity.StartDate, StartTime = activity.StartDate, EndTime = activity.EndDate, ModuleId = activity.ModuleId, External = activity.External }; return(View(activityVM)); }
public ActionResult Create([Bind(Include = "Id,ModuleId,ActivityTypeId,Name,Description,StartDate,StartTime,EndTime,External")] CreateEditActivityVM activityVM) { Activity activity = new Models.Activity { ModuleId = activityVM.ModuleId, Name = activityVM.Name, Description = activityVM.Description, External = activityVM.External, Type = db.ActivityTypes.Where(t => t.Id == activityVM.ActivityTypeId).FirstOrDefault(), StartDate = activityVM.StartDate.Date.Add(activityVM.StartTime.TimeOfDay), EndDate = activityVM.StartDate.Date.Add(activityVM.EndTime.TimeOfDay) }; int moduleId = 0; if (activity.StartDate > activity.EndDate) { ModelState.AddModelError("EndDate", "The End Date must be later than or equal to the Start Date."); } moduleId = activity.ModuleId; var module = db.Modules.Find(moduleId); var course = db.Courses.Find(module.CourseId); if (activity.StartDate < module.StartDate) { ModelState.AddModelError("StartDate", $"The Start Date of the Activity must occur between {module.StartDate.ToShortDateString()} and {module.EndDate.ToShortDateString()}."); } if (activity.EndDate > module.EndDate) { ModelState.AddModelError("EndDate", $"The End Date of the Activity must occur between {module.StartDate.ToShortDateString()} and {module.EndDate.ToShortDateString()}."); } var siblings = db.Activities.Where(m => m.ModuleId == activity.ModuleId); foreach (var sibling in siblings) { if (Conflicts(activity, sibling)) { ModelState.AddModelError("", $"This activity's date/time conflicts with activity '{sibling.Name}"); break; } } if (ModelState.IsValid) { db.Activities.Add(activity); course.DateChanged = DateTime.Now; db.Entry(course).State = EntityState.Modified; db.SaveChanges(); TempData["Message"] = "Activity Created."; return(RedirectToAction("Manage", "Modules", new { Id = activity.ModuleId })); } ViewBag.ActivityTypeId = new SelectList(db.ActivityTypes, "Id", "TypeName", activityVM.ActivityTypeId); return(View("Create", activityVM)); }
public ActionResult Edit([Bind(Include = "Id,ModuleId,ActivityTypeId,Name,Description,StartDate,StartTime,EndTime,DateApproved,External")] CreateEditActivityVM activityVM) { int moduleId = 0; var activity = new Activity { Id = activityVM.Id, ModuleId = activityVM.ModuleId, Name = activityVM.Name, Description = activityVM.Description, ActivityTypeId = activityVM.ActivityTypeId, StartDate = activityVM.StartDate.Date.Add(activityVM.StartTime.TimeOfDay), EndDate = activityVM.StartDate.Date.Add(activityVM.EndTime.TimeOfDay) }; if (activityVM.StartTime > activityVM.EndTime) { ModelState.AddModelError("EndTime", "End Time cannot be earlier than Start Time"); } //if (activity.StartDate > activity.EndDate) //{ // ModelState.AddModelError("EndDate", "The End Date must be later than or equal to the Start Date."); //} moduleId = activity.ModuleId; var module = db.Modules.Find(moduleId); var course = db.Courses.Find(module.CourseId); if (activity.StartDate < module.StartDate) { ModelState.AddModelError("StartDate", $"The Start Date of the Activity must occur between {module.StartDate.ToShortDateString()} and {module.EndDate.ToShortDateString()}."); } if (activity.EndDate > module.EndDate) { ModelState.AddModelError("EndDate", $"The End Date of the Activity must occur between {module.StartDate.ToShortDateString()} and {module.EndDate.ToShortDateString()}."); } var siblings = db.Activities.Where(m => (m.ModuleId == activity.ModuleId) && (m.Id != activity.Id)); foreach (var sibling in siblings) { if (Conflicts(activity, sibling)) { ModelState.AddModelError("", $"This activity's date/time conflicts with activity '{sibling.Name}"); break; } } if (ModelState.IsValid) { moduleId = activity.ModuleId; db.Entry(activity).State = EntityState.Modified; /* Reflect this in the course entity */ course.DateChanged = DateTime.Now; db.Entry(course).State = EntityState.Modified; db.SaveChanges(); TempData["Message"] = "Activity updated."; //Reflect the change in the course return(RedirectToAction("Manage", "Modules", new { id = moduleId })); } ViewBag.CourseName = course.Name; ViewBag.ModuleName = module.Name; ViewBag.ActivityTypeId = new SelectList(db.ActivityTypes, "Id", "TypeName", activity.ActivityTypeId); return(View(activityVM)); }