public ActionResult ShowGameWidget(ExerciseGameViewModel viewModel)
        {
            ViewResult result = (ViewResult)GameIndex(viewModel);

            result.ViewName = "~/Views/ExerciseGame/Module/WidgetGridDialog.ascx";
            return(result);
        }
        public ActionResult GameIndex(ExerciseGameViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;
            var item = models.GetTable <UserProfile>().Where(u => u.UID == viewModel.UID).First();

            return(View("~/Views/ExerciseGame/Module/GameWidgetGrid.ascx", item));
        }
        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 }));
        }
        public ActionResult ShowContestantRecord(ExerciseGameViewModel viewModel)
        {
            ViewResult             result = (ViewResult)EditExerciseResult(viewModel);
            ExerciseGameContestant item   = result.Model as ExerciseGameContestant;

            if (item != null)
            {
                result.ViewName = "~/Views/ExerciseGame/Module/ContestantRecord.ascx";
            }

            return(result);
        }
        public ActionResult EditExerciseResult(ExerciseGameViewModel viewModel)
        {
            ViewBag.ViewModel = viewModel;

            var item = models.GetTable <ExerciseGameContestant>().Where(u => u.UID == viewModel.UID).FirstOrDefault();

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

            return(View("~/Views/ExerciseGame/Module/EditExerciseResult.ascx", item));
        }
        public ActionResult CommitGameStatus(ExerciseGameViewModel viewModel)
        {
            ViewResult  result  = (ViewResult)GameIndex(viewModel);
            UserProfile profile = (UserProfile)result.Model;

            if (viewModel.Status == (int)Naming.GeneralStatus.Failed && !models.GetTable <ExerciseGameResult>().Any(u => u.UID == profile.UID))
            {
                models.ExecuteCommand("delete ExerciseGameContestant where UID = {0} ", profile.UID);
                models.RefreshExerciseGameContestant(null);
                return(result);
            }

            ExerciseGameContestant item = profile.ExerciseGameContestant;

            if (item == null)
            {
                item = profile.ExerciseGameContestant = new ExerciseGameContestant
                {
                    UserProfile = profile
                };
            }

            item.Status     = viewModel.Status;
            item.TotalScope = null;
            item.Rank       = null;

            if (item.ExerciseGameRank.Count == 0)
            {
                var exerciseItem = models.GetTable <ExerciseGameItem>().FirstOrDefault();
                if (exerciseItem != null)
                {
                    item.ExerciseGameRank.Add(new ExerciseGameRank
                    {
                        ExerciseID = exerciseItem.ExerciseID
                    });
                }
            }
            models.SubmitChanges();

            models.RefreshExerciseGameContestant(item);

            return(result);
        }
        public ActionResult DeleteExerciseResult(ExerciseGameViewModel viewModel)
        {
            var item = models.GetTable <ExerciseGameResult>().Where(r => r.TestID == viewModel.TestID).FirstOrDefault();

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

            bool updateRank = item.ExerciseGameRank.Count(r => r.Rank.HasValue) > 0;

            models.ExecuteCommand(@"UPDATE ExerciseGameRank SET RecordID = NULL
                                    WHERE(RecordID = {0}) ", item.TestID);
            models.ExecuteCommand("delete ExerciseGameResult where TestID = {0}", item.TestID);

            if (updateRank)
            {
                item.ExerciseID.UpdateExerciseGameRank();
            }

            return(Json(new { result = true }));
        }
 public ActionResult ShowGameResult(ExerciseGameViewModel viewModel)
 {
     return(View("~/Views/ExerciseGame/Module/ExerciseGameResult.ascx"));
 }