public async Task <ActionResult> PlayNow(User user) { var result = ""; if (_queue.PlayerIsOnTheQueue(user.Username) && _queue.GetMatchByUsername(user.Username).ExpiresIn >= DateTime.Now) { var match = _queue.GetMatchByUsername(user.Username); AddErrorToList($"You're already is on the queue. Expiration time: {match.ExpiresIn}"); return(CustomResponse()); } if (_queue.HasPlayerOnQueue() && !_queue.PlayerIsOnTheQueue(user.Username)) { var newPlayer = new Player(); newPlayer.GenerateRandomNumber(); var match = _queue.GetNextMatch(); match.AddSecondPlayer(newPlayer); result = match.GetWinner(); match.PlayerOneId = match.PlayerOne.Id; match.PlayerTwoId = match.PlayerTwo.Id; await _context.Matches.AddAsync(match); await _context.SaveChangesAsync(); _queue.ClearMatches(); return(CustomResponse(result)); } if (_queue.PlayerIsOnTheQueue(user.Username)) { _queue.CancelMatchByUsername(user.Username); } var player = new Player(user); player.GenerateRandomNumber(); _queue.AddPlayerToList(player); result = "You're in the queue, waiting for an opponent!"; return(CustomResponse(result)); }
public async Task <IActionResult> PostUser([FromBody] User user) { var validation = new UserValidator().Validate(user); AddValidationResult(validation); if (!validation.IsValid) { return(CustomResponse()); } var userDb = await _context.Users.FirstOrDefaultAsync(u => u.Username == user.Username); if (userDb != null) { AddErrorToList("Already exists an account using this username."); return(CustomResponse()); } _context.Users.Add(user); await _context.SaveChangesAsync(); return(CustomResponse()); }