public ActionResult EditDay(int?id, string url = "") { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CourseWithTimeAllocation courseWithTimeAllocation = db.CourseWithTimeAllocations.Find(id); if (courseWithTimeAllocation == null) { return(HttpNotFound()); } CourseWithTimeAllocationsViewModel courseWithTimeAllocationsViewModel = new CourseWithTimeAllocationsViewModel() { Id = courseWithTimeAllocation.Id, CourseId = courseWithTimeAllocation.CourseId, Course = courseWithTimeAllocation.CourseName, Delete = false, TeachingHours = courseWithTimeAllocation.AmountOfTeachingHours, Topic = courseWithTimeAllocation.Topic, TimeAllocationHelperId = courseWithTimeAllocation.TimeAllocationHelperId, url = url }; return(View(courseWithTimeAllocationsViewModel)); }
public ActionResult EditDay([Bind(Include = "Id,TimeAllocationHelperId,url,Course, CourseId,Topic,TeachingHours,Delete")] CourseWithTimeAllocationsViewModel courseWithTimeAllocation) { var temp = courseWithTimeAllocation; int previousHoursForDay = db.CourseWithTimeAllocations.Find(courseWithTimeAllocation.Id).AmountOfTeachingHours; if (courseWithTimeAllocation != null && courseWithTimeAllocation.Delete == false) { var instanceOfTimeAllocationForCourse = db.CourseWithTimeAllocations.Find(courseWithTimeAllocation.Id); instanceOfTimeAllocationForCourse.CourseName = courseWithTimeAllocation.Course; instanceOfTimeAllocationForCourse.Topic = courseWithTimeAllocation.Topic; instanceOfTimeAllocationForCourse.AmountOfTeachingHours = courseWithTimeAllocation.TeachingHours; var instanceOfCourseDataHelper = db.ScheduleHelperContextPerCourse.Where(x => x.courseId == instanceOfTimeAllocationForCourse.CourseId).ToList().FirstOrDefault(); // negative instanceOfCourseDataHelper.OverallTotalHours += previousHoursForDay - courseWithTimeAllocation.TeachingHours; var timeInstanceForUpdationOfCourse = db.TimeOfCourse.Find(courseWithTimeAllocation.TimeAllocationHelperId); var courseUpdation = db.Courses.Find(courseWithTimeAllocation.CourseId); if (courseUpdation.StartDate > timeInstanceForUpdationOfCourse.Date) { courseUpdation.StartDate = timeInstanceForUpdationOfCourse.Date; } else if (courseUpdation.EndDate < timeInstanceForUpdationOfCourse.Date) { courseUpdation.EndDate = timeInstanceForUpdationOfCourse.Date; } db.SaveChanges(); } if (courseWithTimeAllocation.Delete == true) { var instanceOfTimeAllocationToDelete = db.CourseWithTimeAllocations.Find(courseWithTimeAllocation.Id); var instanceOfCourseDataHelper = db.ScheduleHelperContextPerCourse.ToList().Where(x => x.courseId == instanceOfTimeAllocationToDelete.CourseId).FirstOrDefault(); // negative instanceOfCourseDataHelper.OverallTotalHours += previousHoursForDay; db.CourseWithTimeAllocations.Remove(instanceOfTimeAllocationToDelete); var timeInstanceForUpdationOfCourse = db.TimeOfCourse.Find(courseWithTimeAllocation.TimeAllocationHelperId); var courseUpdation = db.Courses.Find(courseWithTimeAllocation.CourseId); if (true) { // when start day is deleted or end day is deleted.. Otherwise it does't matter. var timeData = db.TimeOfCourse.Where(x => x.ProgramId == timeInstanceForUpdationOfCourse.ProgramId).ToList().OrderBy(x => x.Date).ToList(); if (timeInstanceForUpdationOfCourse.Date == courseUpdation.StartDate) { bool flagOf = false; // start date is deleting for (int i = 0; i < timeData.Count(); i++) { if (flagOf == true) { int helperId = timeData[i].Id; // id is passed. now look for an instance where course id matches. var firstInstance = db.CourseWithTimeAllocations.Where(x => x.CourseId == courseUpdation.Id && x.TimeAllocationHelperId == helperId).ToList().FirstOrDefault(); if (firstInstance != null) { // timeallocation id with the matching date is new start date. courseUpdation.StartDate = timeData[i].Date; db.SaveChanges(); break; } } if (timeData[i].Date == timeInstanceForUpdationOfCourse.Date) { flagOf = true; } } } else if (timeInstanceForUpdationOfCourse.Date == courseUpdation.EndDate) { // end date is deleting bool flagOf = false; // start date is deleting for (int i = timeData.Count() - 1; i >= 0; i--) { if (flagOf == true) { // id is passed. now look for an instance where course id matches. int helperId = timeData[i].Id; var firstInstance = db.CourseWithTimeAllocations.Where(x => x.CourseId == courseUpdation.Id && x.TimeAllocationHelperId == helperId).ToList().FirstOrDefault(); if (firstInstance != null) { // timeallocation id with the matching date is new start date. courseUpdation.EndDate = timeData[i].Date; db.SaveChanges(); break; } } if (timeData[i].Date == timeInstanceForUpdationOfCourse.Date) { flagOf = true; } } } } db.SaveChanges(); } if (temp != null) { var timeInstanceForRedirectionByDate = db.TimeOfCourse.Find(courseWithTimeAllocation.TimeAllocationHelperId); DateTime monthToGoTo = timeInstanceForRedirectionByDate.Date; string path = temp.url + "#" + monthToGoTo.ToString("MMMM") + "-" + monthToGoTo.Year.ToString(); return(Redirect(path)); } return(View(courseWithTimeAllocation)); }