public void Match(MakeMatch request) { var requestedByUserRating = _userRatingRepository.GetByUserGameType(request.RequestedByUserId, request.GameType); if (requestedByUserRating == null) { _log.LogWarning("User {UserId} does not have a rating for GameType of {GameType}", request.RequestedByUserId, request.GameType.ToString()); return; } // Add the match definition as needed var match = _matchTransformer.To(request); var matchId = _matchRepository.AddIgnore(match); // For now, simply going to always take found possible matches and add them as matches you could pick to play. Naturally this could get // a lot more complex, including duplicate checking (though there would likely be some threshold at which the duplicates do not apply any // longer since time has gone on and things have changed), or to match only a certain number of a particular strategy (i..e. the easiest or most // difficult, or those I haven't played before, etc.) foreach (var userRating in _userRatingRepository.GetPossibleMatches(requestedByUserRating.Rating, request) .Where(ur => ur.UserId != requestedByUserRating.UserId)) { // Just insert matches var matchPair = _matchPairTransformer.To(userRating); matchPair.RequestedUserId = request.RequestedByUserId; matchPair.RequestedUserMmr = requestedByUserRating.Rating; matchPair.MatchId = matchId; _matchPairRepository.Add(matchPair); } }
public NoContentResult PutMyRating([FromBody] UserRatingRequest request) { var userId = User.GetUserId(); var existingRating = _userRatingRepository.GetByUserGameType(userId, request.GameType); var userRating = _userRatingTransformer.To(request, existingRating); userRating.UserId = userId; _userRatingRepository.AddOrUpdate(userRating); return(NoContent()); }
public NoContentResult PutUserRating([FromBody] AdminUserRatingRequest request) { var existingRating = _userRatingRepository.GetByUserGameType(request.UserId, request.GameType); var userRating = _userRatingTransformer.To(request, existingRating); if (userRating.UserId == default) { userRating.UserId = request.UserId; } _userRatingRepository.AddOrUpdate(userRating); return(NoContent()); }