Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }