public ActionResult CommitHealthAssessment(int uid, int groupID, DateTime?assessmentDate)
        {
            var item = models.GetTable <UserProfile>().Where(u => u.UID == uid).FirstOrDefault();

            if (item == null)
            {
                return(Json(new { result = false, message = "學員資料錯誤!!" }));
            }

            LessonFitnessAssessment fitnessAssessment = new LessonFitnessAssessment
            {
                UID            = item.UID,
                AssessmentDate = assessmentDate ?? DateTime.Now
            };

            models.GetTable <LessonFitnessAssessment>().InsertOnSubmit(fitnessAssessment);

            foreach (var key in Request.Form.Keys.Where(k => Regex.IsMatch(k, "_\\d")))
            {
                saveAssessment(fitnessAssessment, key);
            }

            models.SubmitChanges();

            return(Json(new { result = true }));
        }
        private void saveAssessment(LessonFitnessAssessment fitnessAssessment, string key)
        {
            int itemID = int.Parse(key.Substring(1));

            var values = Request.Form[key];

            if (values == (String)null || values.Count == 0)
            {
                return;
            }

            var isNew = false;
            var item  = models.GetTable <LessonFitnessAssessmentReport>()
                        .Where(r => r.AssessmentID == fitnessAssessment.AssessmentID && r.ItemID == itemID).FirstOrDefault();

            if (item == null)
            {
                item = new LessonFitnessAssessmentReport
                {
                    AssessmentID = fitnessAssessment.AssessmentID,
                    ItemID       = itemID
                };

                isNew = true;
            }

            decimal decVal;
            int     intVal;

            if (values.Count > 1 && decimal.TryParse(values[0], out decVal) && int.TryParse(values[1], out intVal))
            {
                item.SingleAssessment = decVal;
                item.ByTimes          = intVal;
                fitnessAssessment.LessonFitnessAssessmentReport.Add(item);
            }
            else if (values.Count > 0 && decimal.TryParse(values[0], out decVal))
            {
                item.TotalAssessment = decVal;
                fitnessAssessment.LessonFitnessAssessmentReport.Add(item);
            }
            else
            {
                if (!isNew)
                {
                    models.GetTable <LessonFitnessAssessmentReport>().DeleteOnSubmit(item);
                }
            }
        }