Ejemplo n.º 1
0
        /// <summary>
        /// GET: /Highscores
        /// Wird Standardmäßig aufgerufen und schreibt einen Eintrag in die Highscoreliste
        /// </summary>
        /// <param name="highscoreViewModel">HighscoreViewModel bestehend aus Name, Score und md5Hash, andere Parmeter können nicht übergeben werden.</param>
        /// <returns>Ob der Highscore eingetragen wurde und mögliche Fehler.</returns>
        public ActionResult Index([Bind(Include = "Name,Score,md5Hash")] HighscoreViewModel highscoreViewModel)
        {
            if (ModelState.IsValid)
            {
                // md5Hash überprüfen
                string source = highscoreViewModel.Name + highscoreViewModel.Score + ApplicationDbContext.md5HashKey;
                string hash = ApplicationDbContext.GetMd5Hash(MD5.Create(), source);
                if (hash != highscoreViewModel.md5Hash)
                {
                    return Content("401 Wrong Hash");
                }

                // Überprüfung ob der User vorhanden ist
                ApplicationUser User = db.Users.Where(e => e.UserName == highscoreViewModel.Name).FirstOrDefault();
                if (User == null)
                {
                    return Content("404 Not Found");
                }

                // Überprüfen das es der erste Eintrag ist
                HighscoreModel highscoreModel = new HighscoreModel
                {
                    UserId = User.Id,
                    Score = highscoreViewModel.Score
                };
                if (db.Highscores.Where(e => e.Score == highscoreModel.Score && e.UserId == highscoreModel.UserId).Count() == 0)
                {
                    db.Highscores.Add(highscoreModel);
                    db.SaveChanges();
                    return Content("Ok First");
                }

                return Content("Ok Already");
            }

            // Fehler zurückgeben
            string errorList = "";
            foreach (ModelState modelState in ViewData.ModelState.Values)
            {
                foreach (ModelError error in modelState.Errors)
                {
                    errorList += " // " + error.ErrorMessage;
                }
            }
            return Content("Error: " + errorList);
        }
Ejemplo n.º 2
0
 public static HighscoreListViewModel build(HighscoreModel model, int position)
 {
     return new HighscoreListViewModel { Name = model.User.UserName, Score = model.Score, Position = position };
 }