public static void CheckExerciseGameRank(this ExerciseGameResult resultItem) { ThreadPool.QueueUserWorkItem(t => { try { using (var models = new ModelSource <UserProfile>()) { var table = models.GetTable <ExerciseGameRank>(); var item = table.Where(r => r.UID == resultItem.UID && r.ExerciseID == resultItem.ExerciseID).FirstOrDefault(); if (item == null) { item = new ExerciseGameRank { UID = resultItem.UID, ExerciseID = resultItem.ExerciseID, }; table.InsertOnSubmit(item); } if (!item.RecordID.HasValue || item.ExerciseGameResult.TestDate < DateTime.Today.AddMonths(-3) || item.ExerciseGameResult.Score < resultItem.Score) { item.RecordID = resultItem.TestID; models.SubmitChanges(); resultItem.ExerciseID.UpdateExerciseGameRank(); } } } catch (Exception ex) { Logger.Error(ex); } }); }
public ActionResult CommitExerciseResult(ExerciseGameViewModel viewModel) { ViewBag.ViewModel = viewModel; var profile = HttpContext.GetUser(); if (!viewModel.ExerciseID.HasValue) { ModelState.AddModelError("ExerciseID", "請選擇測驗項目!!"); } if (!viewModel.Score.HasValue) { ModelState.AddModelError("Score", "請輸入純數字!!"); } if (!viewModel.TestDate.HasValue) { ModelState.AddModelError("TestDate", "請選擇測驗日期!!"); } if (!ModelState.IsValid) { ViewBag.ModelState = this.ModelState; return(View("~/Views/Shared/ReportInputError.ascx")); } ViewResult result = (ViewResult)EditExerciseResult(viewModel); ExerciseGameContestant contestant = result.Model as ExerciseGameContestant; if (contestant == null) { return(result); } if (contestant.Status != (int)Naming.GeneralStatus.Successful) { return(View("~/Views/Shared/JsAlert.cshtml", model: "參賽者已退賽!!")); } var item = new ExerciseGameResult { UID = contestant.UID, Score = viewModel.Score.Value, ExerciseID = viewModel.ExerciseID.Value, TestDate = viewModel.TestDate.Value }; models.GetTable <ExerciseGameResult>() .InsertOnSubmit(item); models.SubmitChanges(); item.CheckExerciseGameRank(); return(Json(new { result = true })); }