コード例 #1
0
        public ActionResult BookingCoachPI(LessonTimeViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;
            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }
            var item = models.GetTable <LessonTime>().Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item != null)
            {
                viewModel.AttendeeID = item.GroupingLesson.RegisterLesson.Select(r => r.UID).ToArray();
                viewModel.BranchID   = item.BranchID;
                viewModel.ClassDate  = item.ClassTime;
                if (item.ClassTime.HasValue && item.DurationInMinutes.HasValue)
                {
                    viewModel.ClassEndTime = item.ClassTime.Value.AddMinutes(item.DurationInMinutes.Value);
                }
                viewModel.CoachID    = item.AttendingCoach;
                viewModel.RegisterID = item.RegisterID;
            }

            if (!viewModel.ClassEndTime.HasValue)
            {
                viewModel.ClassEndTime = viewModel.ClassDate;
            }

            return(View("~/Views/ConsoleEvent/EventModal/BookingCoachPI.cshtml", item));
        }
コード例 #2
0
        public ActionResult CommitPlace(LessonTimeViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            var item = models.GetTable <LessonTime>().Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(View("~/Views/ConsoleHome/Shared/AlertMessage.cshtml", model: "課程資料錯誤!!"));
            }

            viewModel.Place = viewModel.Place.GetEfficientString();
            if (viewModel.Place == null)
            {
                return(Json(new { result = false, message = "Unfinished?!" }));
            }

            if (!viewModel.Place.ValidateMeetingRoom(item.BranchStore, models))
            {
                return(Json(new { result = false, message = "請輸入正確會議室連結!!" }));
            }

            item.Place = viewModel.Place;
            models.SubmitChanges();

            return(Json(new { result = true }));
        }
コード例 #3
0
        public override void Execute(object parameter)
        {
            var lessonTime = parameter as LessonTimeViewModel;

            if (lessonTime == null) //Add new lLessonTime if null
                lessonTime = new LessonTimeViewModel(App.Timetable.AddLessonTime());

            NavigationFrame.Navigate(typeof(EditLessonTimePage), lessonTime.Number);
        }
コード例 #4
0
        protected void ValidateCommonBooking(LessonTimeViewModel viewModel, out ServingCoach coach, out BranchStore branch)
        {
            if (!viewModel.ClassDate.HasValue)
            {
                ModelState.AddModelError("ClassDate", "請選擇上課日期!!");
            }
            else if (viewModel.ClassDate < DateTime.Today)
            {
                ModelState.AddModelError("ClassDate", "預約時間不可早於今天!!");
            }

            branch = null;
            if (!viewModel.BranchID.HasValue)
            {
                ModelState.AddModelError("BranchID", "請選擇上課地點!!");
            }
            else
            {
                branch = models.GetTable <BranchStore>().Where(b => b.BranchID == viewModel.BranchID).FirstOrDefault();
            }

            coach = models.GetTable <ServingCoach>().Where(s => s.CoachID == viewModel.CoachID).FirstOrDefault();
            if (coach == null)
            {
                ModelState.AddModelError("CoachID", "未指定體能顧問!!");
            }

            viewModel.Place = viewModel.Place.GetEfficientString();
            if (branch?.IsVirtualClassroom() == true)
            {
                if (!viewModel.Place.ValidateMeetingRoom(branch, models))
                {
                    ModelState.AddModelError("Place", "請輸入正確會議室連結!!");
                }
            }
        }
コード例 #5
0
        public async Task <ActionResult> UpdateBookingByCoach(LessonTimeViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;
            var profile = await HttpContext.GetUserAsync();

            if (viewModel.KeyID != null)
            {
                viewModel.LessonID = viewModel.DecryptKeyValue();
            }

            LessonTime item = models.GetTable <LessonTime>().Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault();

            if (item == null)
            {
                return(View("~/Views/Shared/JsAlert.cshtml", model: "修改上課時間資料不存在!!"));
            }

            if (item.LessonAttendance != null)
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "已完成上課,不可修改!!"));
            }

            if (item.ContractTrustTrack.Any(t => t.SettlementID.HasValue))
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "課程資料已信託,不可修改!!"));
            }

            var coach = models.GetTable <ServingCoach>().Where(c => c.CoachID == viewModel.CoachID).FirstOrDefault();

            if (coach == null)
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "上課教練資料錯誤!!"));
            }

            if (!viewModel.ClassDate.HasValue)
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "請選擇上課日期間!!"));
            }

            if (!item.BranchStore.IsVirtualClassroom() && !item.IsSTSession() && !models.GetTable <CoachWorkplace>()
                .Any(c => c.BranchID == item.BranchID &&
                     c.CoachID == item.AttendingCoach) &&
                viewModel.ClassDate.Value < DateTime.Today.AddDays(1))
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "此時段不允許跨店預約!!"));
            }


            LessonTime timeItem = new LessonTime
            {
                InvitedCoach      = item.InvitedCoach,
                AttendingCoach    = item.AttendingCoach,
                ClassTime         = viewModel.ClassDate,
                DurationInMinutes = item.DurationInMinutes
            };

            if (item.IsPTSession())
            {
                if (models.GetTable <Settlement>().Any(s => s.StartDate <= viewModel.ClassDate && s.EndExclusiveDate > viewModel.ClassDate))
                {
                    ViewBag.Message = "修改上課時間(" + String.Format("{0:yyyy/MM/dd}", viewModel.ClassDate) + "已信託結算!!";
                    return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml"));
                }
            }

            if (!item.IsCoachPISession() && !item.IsSTSession())
            {
                var users = models.CheckOverlappingBooking(timeItem, item);
                if (users.Count() > 0)
                {
                    ViewBag.Message = "上課成員(" + String.Join("、", users.Select(u => u.RealName)) + ")上課時間重複!!";
                    return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml"));
                }
            }
            else
            {
                if (viewModel.ClassEndTime.HasValue)
                {
                    timeItem.DurationInMinutes =
                        (int)(viewModel.ClassEndTime.Value - viewModel.ClassDate.Value).TotalMinutes;
                }
            }

            if (!ModelState.IsValid)
            {
                ViewBag.ModelState = this.ModelState;
                return(View(Startup.Properties["ReportInputError"]));
            }

            var changeCoach = item.AttendingCoach != viewModel.CoachID;

            if (item.IsCoachPISession())
            {
                if (viewModel.AttendeeID == null || viewModel.AttendeeID.Length == 0)
                {
                    models.DeleteAll <LessonTime>(r => r.LessonID != item.LessonID && r.GroupID == item.GroupID);
                    models.DeleteAll <RegisterLesson>(r => r.RegisterID != item.RegisterID && r.RegisterGroupID == item.GroupID);
                }
                else
                {
                    models.DeleteAll <LessonTime>(r => r.LessonID != item.LessonID && r.GroupID == item.GroupID &&
                                                  !viewModel.AttendeeID.Contains(r.AttendingCoach.Value));
                    models.DeleteAll <RegisterLesson>(r => r.RegisterID != item.RegisterID && r.RegisterGroupID == item.GroupID &&
                                                      !viewModel.AttendeeID.Contains(r.UID));
                    foreach (var uid in viewModel.AttendeeID.Distinct())
                    {
                        if (!models.GetTable <RegisterLesson>().Any(r => r.UID == uid && r.RegisterGroupID == item.GroupID))
                        {
                            var coachPI = models.GetTable <ServingCoach>().Any(s => s.CoachID == uid)
                                    ? LessonsController.SpawnCoachPI(item, uid, uid)
                                    : LessonsController.SpawnCoachPI(item, uid, coach.CoachID);
                            models.GetTable <LessonTime>().InsertOnSubmit(coachPI);
                        }
                    }
                }

                models.SubmitChanges();

                foreach (var s in models.GetTable <LessonTime>().Where(l => l.GroupID == item.GroupID))
                {
                    s.ClassTime = viewModel.ClassDate;
                    if (models.GetTable <DailyWorkingHour>().Any(d => d.Hour == viewModel.ClassDate.Value.Hour))
                    {
                        s.HourOfClassTime = viewModel.ClassDate.Value.Hour;
                    }

                    s.DurationInMinutes = timeItem.DurationInMinutes;
                    s.BranchID          = viewModel.BranchID;

                    //item.TrainingBySelf = viewModel.TrainingBySelf;
                }
            }
            else
            {
                item.InvitedCoach = viewModel.CoachID;
                item.AssignLessonAttendingCoach(coach);
                item.ClassTime = viewModel.ClassDate;
                if (models.GetTable <DailyWorkingHour>().Any(d => d.Hour == viewModel.ClassDate.Value.Hour))
                {
                    item.HourOfClassTime = viewModel.ClassDate.Value.Hour;
                }

                item.DurationInMinutes = timeItem.DurationInMinutes;
                item.BranchID          = viewModel.BranchID;
                foreach (var t in item.ContractTrustTrack)
                {
                    t.EventDate = viewModel.ClassDate.Value;
                }
                //item.TrainingBySelf = viewModel.TrainingBySelf;
            }

            models.SubmitChanges();

            if (item.IsPISession())
            {
                models.ExecuteCommand("update TuitionInstallment set PayoffDate = {0} where RegisterID = {1} ", item.ClassTime, item.RegisterID);
            }

            if (!item.IsSTSession())
            {
                item.BookingLessonTimeExpansion(models, item.ClassTime.Value, item.DurationInMinutes.Value);

                models.ExecuteCommand("delete PreferredLessonTime where LessonID = {0}", item.LessonID);
                item.ProcessBookingWhenCrossBranch(models);
            }

            return(Json(new
            {
                result = true,
                message = "上課時間修改完成!!",
                changeCoach = changeCoach,
                classTime = String.Format("{0:yyyy/MM/dd H:mm}", item.ClassTime) + "-" + String.Format("{0:H:mm}", item.ClassTime.Value.AddMinutes(item.DurationInMinutes.Value))
            }));
        }
コード例 #6
0
        public ActionResult CommitEnterpriseBookingByCoach(LessonTimeViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            ValidateCommonBooking(viewModel, out ServingCoach coach, out BranchStore branch);

            RegisterLesson lesson = models.GetTable <RegisterLesson>().Where(r => r.RegisterID == viewModel.RegisterID).FirstOrDefault();

            if (lesson == null)
            {
                ModelState.AddModelError("RegisterID", "學員未購買課程!!");
            }

            if (lesson.Attended == (int)Naming.LessonStatus.課程結束)
            {
                ModelState.AddModelError("RegisterID", "學員課程已結束!!");
            }

            var lessonCount = lesson.GroupingLesson.LessonTime.Count;

            if (lessonCount + (lesson.AttendedLessons ?? 0) >= lesson.Lessons)
            {
                ModelState.AddModelError("RegisterID", "學員上課堂數已滿!!");
            }

            var contract = lesson.RegisterLessonEnterprise.EnterpriseCourseContract;

            if (contract.Expiration.Value < DateTime.Today)
            {
                ModelState.AddModelError("RegisterID", "企業方案合約已過期!!");
            }

            if (!this.ModelState.IsValid)
            {
                ViewBag.ModelState = this.ModelState;
                return(View(Properties.Settings.Default.ReportInputError));
            }

            if (branch?.IsVirtualClassroom() != true && !models.GetTable <CoachWorkplace>()
                .Any(c => c.BranchID == viewModel.BranchID &&
                     c.CoachID == viewModel.CoachID) &&
                viewModel.ClassDate.Value < DateTime.Today.AddDays(1))
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "此時段不允許跨店預約!!"));
            }

            LessonTime timeItem = new LessonTime
            {
                InvitedCoach   = viewModel.CoachID,
                AttendingCoach = viewModel.CoachID,
                //ClassTime = viewModel.ClassDate.Add(viewModel.ClassTime),
                ClassTime         = viewModel.ClassDate,
                DurationInMinutes = lesson.RegisterLessonEnterprise.EnterpriseCourseContent.DurationInMinutes,
                RegisterID        = lesson.RegisterID,
                LessonPlan        = new LessonPlan
                {
                },
                BranchID             = viewModel.BranchID,
                LessonTimeSettlement = new LessonTimeSettlement
                {
                    ProfessionalLevelID = coach.LevelID.Value,
                    MarkedGradeIndex    = coach.ProfessionalLevel.GradeIndex,
                    CoachWorkPlace      = coach.WorkBranchID(),
                },
                Place = viewModel.Place,
            };

            if (models.GetTable <DailyWorkingHour>().Any(d => d.Hour == viewModel.ClassDate.Value.Hour))
            {
                timeItem.HourOfClassTime = viewModel.ClassDate.Value.Hour;
            }


            if (lesson.RegisterLessonEnterprise.EnterpriseCourseContent.EnterpriseLessonType.Status == (int)Naming.LessonPriceStatus.自主訓練)
            {
                timeItem.TrainingBySelf = 1;
            }

            var users = models.CheckOverlapedBooking(timeItem, lesson);

            if (users.Count() > 0)
            {
                ModelState.AddModelError("UID", "學員(" + String.Join("、", users.Select(u => u.RealName)) + ")上課時間重複!!");
                ViewBag.ModelState = this.ModelState;
                return(View("~/Views/Shared/ReportInputError.ascx"));
            }

            if (lesson.GroupingMemberCount > 1)
            {
                timeItem.GroupID = lesson.RegisterGroupID;
                timeItem.LessonFitnessAssessment.AddRange(
                    lesson.GroupingLesson.RegisterLesson.Select(
                        r => new LessonFitnessAssessment
                {
                    UID = r.UID
                }));
            }
            else
            {
                timeItem.LessonFitnessAssessment.Add(new LessonFitnessAssessment
                {
                    UID = lesson.UID
                });
                if (!lesson.RegisterGroupID.HasValue)
                {
                    timeItem.GroupingLesson = lesson.GroupingLesson = new GroupingLesson {
                    };
                }
                else
                {
                    timeItem.GroupID = lesson.RegisterGroupID;
                }
            }

            models.GetTable <LessonTime>().InsertOnSubmit(timeItem);

            try
            {
                models.SubmitChanges();

                timeItem.BookingLessonTimeExpansion(models, timeItem.ClassTime.Value, timeItem.DurationInMinutes.Value);
                timeItem.ProcessBookingWhenCrossBranch(models);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "預約未完成,請重新預約!!"));
            }

            return(Json(new { result = true, message = "上課時間預約完成!!" }));
        }
 public ActionResult CommitBookingByCoach(LessonTimeViewModel viewModel)
 {
     return(CommitEnterpriseBookingByCoach(viewModel));
 }
コード例 #8
0
        private ActionResult CommitRemoteTrialLesson(LessonTimeViewModel viewModel, BranchStore branch, ServingCoach coach)
        {
            RegisterLesson lesson;
            UserProfile    profileItem = models.GetTable <UserProfile>().Where(u => u.UID == viewModel.UID).FirstOrDefault();

            if (profileItem == null)
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "體驗學員資料錯誤!!"));
            }

            var priceType = models.CurrentTrialLessonPrice(true, viewModel.PriceID);

            if (priceType == null)
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "體驗課程類型錯誤!!"));
            }

            lesson = new RegisterLesson
            {
                UID                 = viewModel.UID.Value,
                RegisterDate        = DateTime.Now,
                GroupingMemberCount = 1,
                Lessons             = 1,
                ClassLevel          = priceType.PriceID,
                IntuitionCharge     = new IntuitionCharge
                {
                    ByInstallments = 1,
                    Payment        = "Cash",
                    FeeShared      = 0
                },
                AdvisorID      = viewModel.CoachID,
                BranchID       = branch.BranchID,
                GroupingLesson = new GroupingLesson {
                }
            };
            //var installment = new TuitionInstallment
            //{
            //    PayoffDate = viewModel.ClassDate,
            //    PayoffAmount = priceType.ListPrice,
            //    Payment = new Payment
            //    {
            //        PayoffAmount = priceType.ListPrice,
            //        PayoffDate = viewModel.ClassDate
            //    }
            //};
            //installment.Payment.TuitionAchievement.Add(new TuitionAchievement
            //{
            //    CoachID = lesson.AdvisorID.Value,
            //    ShareAmount = installment.PayoffAmount
            //});

            //lesson.IntuitionCharge.TuitionInstallment.Add(installment);
            models.GetTable <RegisterLesson>().InsertOnSubmit(lesson);
            models.SubmitChanges();


            LessonTime timeItem = new LessonTime
            {
                InvitedCoach      = viewModel.CoachID,
                AttendingCoach    = viewModel.CoachID,
                ClassTime         = viewModel.ClassDate,
                DurationInMinutes = priceType.DurationInMinutes,
                TrainingBySelf    = (int)Naming.LessonSelfTraining.體驗課程,
                RegisterID        = lesson.RegisterID,
                LessonPlan        = new LessonPlan
                {
                },
                BranchID             = branch.BranchID,
                LessonTimeSettlement = new LessonTimeSettlement
                {
                    ProfessionalLevelID = coach.LevelID.Value,
                    MarkedGradeIndex    = coach.LevelID.HasValue ? coach.ProfessionalLevel.GradeIndex : null,
                    CoachWorkPlace      = coach.WorkBranchID(),
                }
            };

            if (models.GetTable <DailyWorkingHour>().Any(d => d.Hour == viewModel.ClassDate.Value.Hour))
            {
                timeItem.HourOfClassTime = viewModel.ClassDate.Value.Hour;
            }

            timeItem.GroupID = lesson.RegisterGroupID;
            timeItem.LessonFitnessAssessment.Add(new LessonFitnessAssessment
            {
                UID = lesson.UID
            });
            models.GetTable <LessonTime>().InsertOnSubmit(timeItem);

            try
            {
                models.SubmitChanges();
                timeItem.BookingLessonTimeExpansion(models, timeItem.ClassTime.Value, timeItem.DurationInMinutes.Value);
            }
            catch (Exception ex)
            {
                models.ExecuteCommand("delete RegisterLesson where RegisterID = {0}", lesson.RegisterID);

                Logger.Error(ex);
                ViewBag.Message = "預約未完成,請重新預約!!";
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml"));
            }

            return(Json(new { result = true, message = "上課時間預約完成!!" }));
        }
コード例 #9
0
        public ActionResult CommitTrialLesson(LessonTimeViewModel viewModel, TrialLearnerViewModel newTrialLearner)
        {
            var profile = HttpContext.GetUser();

            ViewBag.ViewModel = viewModel;

            if (!viewModel.ClassDate.HasValue)
            {
                ModelState.AddModelError("ClassDate", "請選擇上課日期!!");
            }
            else if (viewModel.ClassDate < DateTime.Today)
            {
                ModelState.AddModelError("ClassDate", "預約時間不可早於今天!!");
            }

            var branch = models.GetTable <BranchStore>().Where(b => b.BranchID == viewModel.BranchID).FirstOrDefault();

            if (branch == null)
            {
                ModelState.AddModelError("BranchID", "請選擇上課地點!!");
            }

            if (!this.ModelState.IsValid)
            {
                ViewBag.ModelState = this.ModelState;
                return(View(Settings.Default.ReportInputError));
            }

            var coach = models.GetTable <ServingCoach>().Where(s => s.CoachID == viewModel.CoachID).FirstOrDefault();

            if (coach == null)
            {
                ViewBag.Message = "未指定體能顧問!!";
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml"));
            }

            if (branch.IsVirtualClassroom())
            {
                return(CommitRemoteTrialLesson(viewModel, branch, coach));
            }
            else if (!models.GetTable <CoachWorkplace>()
                     .Any(c => c.BranchID == viewModel.BranchID &&
                          c.CoachID == viewModel.CoachID) &&
                     viewModel.ClassDate.Value < DateTime.Today.AddDays(1))
            {
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "此時段不允許跨店預約!!"));
            }

            RegisterLesson lesson;

            if (!viewModel.UID.HasValue)
            {
                newTrialLearner.RealName = newTrialLearner.RealName.GetEfficientString();
                if (newTrialLearner.RealName == null)
                {
                    this.ModelState.AddModelError("realName", "請輸入學員姓名!!");
                    ViewBag.ModelState = this.ModelState;
                    return(View(Settings.Default.ReportInputError));
                }
                else
                {
                    var profileItem = models.CreateLearner(new LearnerViewModel
                    {
                        RealName     = newTrialLearner.RealName,
                        Phone        = newTrialLearner.Phone.GetEfficientString(),
                        Gender       = newTrialLearner.Gender,
                        CurrentTrial = 1,
                        RoleID       = Naming.RoleID.Preliminary
                    });

                    if (profileItem == null)
                    {
                        return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "無法新增體驗學員!!"));
                    }
                    viewModel.UID = profile.UID;
                }
            }

            var priceType = models.CurrentTrialLessonPrice();

            lesson = new RegisterLesson
            {
                UID                 = viewModel.UID.Value,
                RegisterDate        = DateTime.Now,
                GroupingMemberCount = 1,
                Lessons             = 1,
                ClassLevel          = priceType != null ? priceType.PriceID : (int?)null,
                IntuitionCharge     = new IntuitionCharge
                {
                    ByInstallments = 1,
                    Payment        = "Cash",
                    FeeShared      = 0
                },
                AdvisorID      = viewModel.CoachID,
                GroupingLesson = new GroupingLesson {
                }
            };
            //var installment = new TuitionInstallment
            //{
            //    PayoffDate = viewModel.ClassDate,
            //    PayoffAmount = priceType.ListPrice,
            //    Payment = new Payment
            //    {
            //        PayoffAmount = priceType.ListPrice,
            //        PayoffDate = viewModel.ClassDate
            //    }
            //};
            //installment.Payment.TuitionAchievement.Add(new TuitionAchievement
            //{
            //    CoachID = lesson.AdvisorID.Value,
            //    ShareAmount = installment.PayoffAmount
            //});

            //lesson.IntuitionCharge.TuitionInstallment.Add(installment);
            models.GetTable <RegisterLesson>().InsertOnSubmit(lesson);
            models.SubmitChanges();


            LessonTime timeItem = new LessonTime
            {
                InvitedCoach   = viewModel.CoachID,
                AttendingCoach = viewModel.CoachID,
                //ClassTime = viewModel.ClassDate.Add(viewModel.ClassTime),
                ClassTime         = viewModel.ClassDate,
                DurationInMinutes = priceType.DurationInMinutes,
                TrainingBySelf    = (int)Naming.LessonSelfTraining.體驗課程,
                RegisterID        = lesson.RegisterID,
                LessonPlan        = new LessonPlan
                {
                },
                BranchID             = viewModel.BranchID,
                LessonTimeSettlement = new LessonTimeSettlement
                {
                    ProfessionalLevelID = coach.LevelID.Value,
                    MarkedGradeIndex    = coach.LevelID.HasValue ? coach.ProfessionalLevel.GradeIndex : null,
                    CoachWorkPlace      = coach.WorkBranchID(),
                }
            };

            if (models.GetTable <DailyWorkingHour>().Any(d => d.Hour == viewModel.ClassDate.Value.Hour))
            {
                timeItem.HourOfClassTime = viewModel.ClassDate.Value.Hour;
            }

            timeItem.GroupID = lesson.RegisterGroupID;
            timeItem.LessonFitnessAssessment.Add(new LessonFitnessAssessment
            {
                UID = lesson.UID
            });
            models.GetTable <LessonTime>().InsertOnSubmit(timeItem);

            try
            {
                models.SubmitChanges();

                timeItem.BookingLessonTimeExpansion(models, timeItem.ClassTime.Value, timeItem.DurationInMinutes.Value);
                timeItem.ProcessBookingWhenCrossBranch(models);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                ViewBag.Message = "預約未完成,請重新預約!!";
                return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml"));
            }

            return(Json(new { result = true, message = "上課時間預約完成!!" }));
        }