public ActionResult Activate(QuestPuzzle questPuzzle) { QuestPuzzle actual = db.QuestPuzzles.Find(questPuzzle.QuestId, questPuzzle.PuzzleId); string activationKey = this.Request.Form["ActivationKey"]; if (ModelState.IsValid) { if (string.Compare(actual.Puzzle.PuzzleActivationCode, activationKey, true) == 0) { actual.PuzzleStatus = 2; actual.ActivationTime = DateTime.Now; db.Entry(actual).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Current", actual); } else { ModelState.AddModelError("", "The activation code is incorrect."); } } return View(actual); }
private bool IsQuestPuzzleForCurrentUser(QuestPuzzle questpuzzle) { return questpuzzle.Quest.UserId == (Guid)Membership.GetUser().ProviderUserKey; }
public ActionResult Solve(QuestPuzzle questPuzzle) { QuestPuzzle actual = db.QuestPuzzles.Find(questPuzzle.QuestId, questPuzzle.PuzzleId); string solution = this.Request.Form["Solution"]; if (ModelState.IsValid) { if (solution.ToLowerInvariant().Contains(actual.Puzzle.PuzzleSolutionKeyword)) { var action = "Index"; actual.PuzzleStatus = 3; actual.EndTime = DateTime.Now; db.Entry(actual).State = EntityState.Modified; var questPuzzles = db.QuestPuzzles.Where(qp => qp.QuestId == questPuzzle.QuestId && qp.QuestPuzzleOrder > actual.QuestPuzzleOrder); if (questPuzzles.Count() > 0) { var nextPuzzle = questPuzzles.OrderBy(qp => qp.QuestPuzzleOrder).First(); nextPuzzle.PuzzleStatus = 1; nextPuzzle.StartTime = DateTime.Now; db.Entry(nextPuzzle).State = EntityState.Modified; } else { var q = actual.Quest; q.QuestStatus = 2; db.Entry(q).State = EntityState.Modified; action = "QuestFinish"; } db.SaveChanges(); return RedirectToAction(action, "User"); } else { ModelState.AddModelError("", "The solution is incorrect."); } } return View(actual); }