private void matchGroup(EnterpriseCourseMember groupUser, EnterpriseCourseMember profile)
        {
            if (groupUser.ContractID != profile.ContractID)
            {
                return;
            }

            foreach (var course in groupUser.EnterpriseCourseContract.EnterpriseCourseContent.Where(c => c.EnterpriseLessonType.Status == (int)Naming.LessonPriceStatus.團體學員課程))
            {
                RegisterLesson groupLesson = course.RegisterLessonEnterprise
                                             .Select(t => t.RegisterLesson)
                                             .Where(r => r.UID == groupUser.UID).FirstOrDefault();

                if (groupLesson == null)
                {
                    continue;
                }

                RegisterLesson lesson = course.RegisterLessonEnterprise
                                        .Select(t => t.RegisterLesson)
                                        .Where(r => r.UID == profile.UID).FirstOrDefault();

                if (lesson == null)
                {
                    continue;
                }

                if (groupLesson.RegisterGroupID != lesson.RegisterGroupID)
                {
                    lesson.RegisterGroupID = groupLesson.RegisterGroupID;
                    models.SubmitChanges();
                }
            }
        }
        public ActionResult CommitMember(EnterpriseGroupMemberViewModel viewModel)
        {
            if (!viewModel.UID.HasValue)
            {
                return(View("~/Views/Shared/JsAlert.cshtml", model: "請選擇學員!!"));
            }

            var item = models.GetTable <EnterpriseCourseContract>().Where(c => c.ContractID == viewModel.ContractID).FirstOrDefault();

            if (item == null)
            {
                return(View("~/Views/Shared/JsAlert.cshtml", model: "合約資料錯誤!!"));
            }

            try
            {
                var member = item.EnterpriseCourseMember.Where(m => m.UID == viewModel.UID).FirstOrDefault();
                if (member == null)
                {
                    member = new EnterpriseCourseMember
                    {
                        ContractID = item.ContractID,
                        UID        = viewModel.UID.Value
                    };

                    models.GetTable <EnterpriseCourseMember>().InsertOnSubmit(member);
                    models.SubmitChanges();
                }

                checkMemberLesson(member);

                var groupMember = item.EnterpriseCourseMember.Where(m => m.UID == viewModel.GroupUID).FirstOrDefault();
                if (groupMember != null)
                {
                    if (groupMember.GroupingLesson == null)
                    {
                        groupMember.GroupingLesson = new GroupingLesson {
                        };
                    }
                    member.GroupingLesson = groupMember.GroupingLesson;
                    models.SubmitChanges();

                    matchGroup(groupMember, member);
                }

                return(Json(new { result = true }));
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                return(Json(new { result = false, message = ex.Message }));
            }
        }
        private void checkMemberLesson(EnterpriseCourseMember profile)
        {
            var priceType = models.GetTable <LessonPriceType>().Where(p => p.Status == (int)Naming.LessonPriceStatus.企業合作方案).FirstOrDefault();

            foreach (var course in profile.EnterpriseCourseContract.EnterpriseCourseContent)
            {
                RegisterLesson lesson = course.RegisterLessonEnterprise
                                        .Select(t => t.RegisterLesson)
                                        .Where(r => r.UID == profile.UID).FirstOrDefault();
                if (lesson == null)
                {
                    lesson = new RegisterLesson
                    {
                        RegisterDate = DateTime.Now,
                        //Lessons = course.Lessons.Value,
                        Attended            = (int)Naming.LessonStatus.準備上課,
                        GroupingMemberCount = course.EnterpriseLessonType.Status == (int)Naming.LessonPriceStatus.團體學員課程
                            ? course.EnterpriseCourseContract.GroupingMemberCount : 1,
                        IntuitionCharge = new IntuitionCharge
                        {
                            Payment        = "CreditCard",
                            FeeShared      = 0,
                            ByInstallments = 1
                        },
                        LessonPriceType = priceType,
                        AdvisorID       = Settings.Default.DefaultCoach,
                        AttendedLessons = 0,
                        UID             = profile.UID
                    };

                    course.RegisterLessonEnterprise.Add(new RegisterLessonEnterprise
                    {
                        RegisterLesson = lesson
                    });
                }

                lesson.Lessons = course.Lessons.Value;
                if (!lesson.RegisterGroupID.HasValue)
                {
                    lesson.GroupingLesson = new GroupingLesson {
                    }
                }
                ;
                models.SubmitChanges();
            }
        }