public ActionResult CloneLearnerTrainingPlan(LessonTimeBookingViewModel viewModel) { ViewBag.ViewModel = viewModel; if (viewModel.KeyID != null) { viewModel.LessonID = viewModel.DecryptKeyValue(); } LessonTime item = models.GetTable <LessonTime>() .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault(); if (item == null) { return(Json(new { result = false, message = "課程資料錯誤!!" })); } IEnumerable <RegisterLesson> lessonItems = item.GroupingLesson.RegisterLesson; if (lessonItems.Count() < 2) { return(Json(new { result = false, message = "課程非一對多!!" })); } if (viewModel.CopyFrom.HasValue) { if (!viewModel.UID.HasValue) { return(Json(new { result = false, message = "未指定同步目標之學員!!" })); } var source = item.AssertLearnerTrainingPlan(models, viewModel.CopyFrom.Value); var target = item.AssertLearnerTrainingPlan(models, viewModel.UID.Value); models.CloneTrainingPlan(source, target); } else { if (!viewModel.UID.HasValue) { return(Json(new { result = false, message = "未指定同步來源之學員!!" })); } var source = item.AssertLearnerTrainingPlan(models, viewModel.UID.Value); foreach (var lesson in lessonItems.Where(r => r.UID != viewModel.UID.Value)) { var target = item.AssertLearnerTrainingPlan(models, lesson.UID); models.CloneTrainingPlan(source, target); } } return(Json(new { result = true })); }
public ActionResult CopyTrainingPlan(LessonTimeBookingViewModel viewModel) { ViewBag.ViewModel = viewModel; if (viewModel.KeyID != null) { viewModel.LessonID = viewModel.DecryptKeyValue(); } LessonTime copyTo = models.GetTable <LessonTime>() .Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault(); if (copyTo == null) { return(Json(new { result = false, message = "課程資料錯誤!!" })); } LessonTime copyFrom = models.GetTable <LessonTime>() .Where(l => l.LessonID == viewModel.CopyFrom).FirstOrDefault(); if (copyTo == null) { return(Json(new { result = false, message = "複製來源課程資料錯誤!!" })); } var source = copyFrom.AssertLearnerTrainingPlan(models, viewModel.UID.Value); var target = copyTo.AssertLearnerTrainingPlan(models, viewModel.UID.Value); models.CloneTrainingPlan(source, target, false); return(Json(new { result = true })); }