Esempio n. 1
0
        public ActionResult Edit(Contestant_VM vm)
        {
            if (ModelState.IsValid)
            {
                if (vm.PhotoFile != null)
                {
                    vm.PhotoUrl = UploadFile(vm.PhotoFile);
                }

                var obj = vm.VM_To_Domain();

                _Service.UpdateContestant(obj);

                TempData["Message"] = new string[] { "success", "Contestant", "Update Succesfully." };
                return(RedirectToAction("Index"));
            }

            LoadDDL();
            TempData["Message"] = new string[] { "error", "Contestant", "Validation Error" };
            ViewBag.ActionName  = "Edit";
            return(View("Create", vm));
        }
Esempio n. 2
0
        public UpdateResponse Post([FromBody] UpdateRequest request)
        {
            var response = new UpdateResponse();

            if (request == null)
            {
                response.IsError      = true;
                response.ErrorMessage = "Invalid request";
                return(response);
            }

            if (!contestantService.ContestantExists(request.Token))
            {
                response.IsError      = true;
                response.ErrorMessage = "You are not a registered player.  Register to play at /register";
                return(response);
            }

            var contestant = contestantService.GetContestantByToken(request.Token);

            if (contestant == null)
            {
                response.IsError      = true;
                response.ErrorMessage = "You are not a registered player.  Register to play at /register";
                return(response);
            }

            var timeSinceLastUpdate = timeService.Now() - contestant.LastSeen;

            if (timeSinceLastUpdate.TotalSeconds < UpdateRateLimitInSeconds)
            {
                response.IsError      = true;
                response.ErrorMessage = $"The rate limit requires you call this endpoint no more than once every {UpdateRateLimitInSeconds} seconds.";
                return(response);
            }

            // at this point we are done with validation
            contestant = new Contestant
                         (
                contestant.Name,
                contestant.Token,
                contestant.LastSeen,
                request.GenerationsComputed,
                contestant.StartedGameAt,
                contestant.EndedGameAt,
                request.ResultBoard
                         );

            var gameStatus = gameService.GetGameStatus();

            response.GameState = gameStatus.IsStarted ? GameState.InProgress : GameState.NotStarted;
            if (gameStatus.IsGameOver)
            {
                response.GameState = GameState.Over;
            }

            if (gameStatus.IsStarted)
            {
                contestant                    = StartContestantIfNotStarted(contestant);
                response.SeedBoard            = gameStatus.SeedBoard;
                response.GenerationsToCompute = gameStatus.NumberGenerations;
            }

            response.IsError = false;

            contestantService.UpdateContestant(contestant);
            return(response);
        }