From a3a50a5e07356075c05d1bc4ca13f9b6a48a0550 Mon Sep 17 00:00:00 2001 From: littlefoot Date: Sun, 31 Oct 2021 11:38:52 -0400 Subject: [PATCH] Finished playerdata endpoint aside from donation stuff and bug testing, moved what controllers use out to services --- .../Controllers/PlayerDataController.cs | 38 +++++++-------- .../PlayerData/PlayerDataGetResponseObject.cs | 2 + .../PlayerDataSavePetCustomRequest.cs | 13 +++++ TOOHUCardAPI/Data/Models/User.cs | 2 + TOOHUCardAPI/Data/Services/StoreService.cs | 10 ++++ TOOHUCardAPI/Data/Services/UserService.cs | 48 +++++++++++++++++++ TOOHUCardAPI/Startup.cs | 1 + 7 files changed, 92 insertions(+), 22 deletions(-) create mode 100644 TOOHUCardAPI/DTO/PlayerData/PlayerDataSavePetCustomRequest.cs create mode 100644 TOOHUCardAPI/Data/Services/UserService.cs diff --git a/TOOHUCardAPI/Controllers/PlayerDataController.cs b/TOOHUCardAPI/Controllers/PlayerDataController.cs index 87fa986..87e298b 100644 --- a/TOOHUCardAPI/Controllers/PlayerDataController.cs +++ b/TOOHUCardAPI/Controllers/PlayerDataController.cs @@ -27,18 +27,28 @@ namespace TOOHUCardAPI.Controllers public class PlayerDataController : MethodBasedController { private readonly ILogger _logger; - private readonly UserRepository _userRepository; + private readonly UserService _userService; private readonly IMapper _mapper; private readonly StoreService _storeService; - public PlayerDataController(ILogger logger, UserRepository userRepository, IMapper mapper, StoreService storeService) + public PlayerDataController(ILogger logger, UserService userService, IMapper mapper, StoreService storeService) { _logger = logger; - _userRepository = userRepository; + _userService = userService; _mapper = mapper; _storeService = storeService; } + [EndpointHandler("save_pet_custom")] + private async Task SavePetData(string body) + { + PlayerDataSavePetCustomRequest + request = JsonConvert.DeserializeObject(body); + await _userService.SavePetData(request.SteamId, request.PetModel, request.PetEffect); + return Ok(new OkResponse()); + } + + [EndpointHandler("save_power_max")] private async Task SavePowerMax(string body) { PlayerDataSavePowerMaxTotalRequest request = @@ -74,15 +84,7 @@ namespace TOOHUCardAPI.Controllers private async Task SaveKeyCount(string body) { PlayerDataSaveKeyCountRequest request = JsonConvert.DeserializeObject(body); - User user = await _userRepository.GetUser(request.SteamId); - if (user == null) - { - throw new InvalidUserException(); - } - - user.KeyTotal = request.KeyTotal; - user.KeyUseCount = request.KeyUseCount; - await _userRepository.UpdateUser(user); + await _storeService.SaveKeyTotal(request.SteamId, request.KeyTotal, request.KeyUseCount); return Ok(new OkResponse()); } @@ -104,15 +106,7 @@ namespace TOOHUCardAPI.Controllers { PlayerDataSaveCardGroupRequest request = JsonConvert.DeserializeObject(body); - User user = await _userRepository.GetUser(request.SteamId); - - EncodedCardGroup group = user.EncodedCardGroups.FirstOrDefault(group => group.GroupKey == request.GroupKey) ?? new EncodedCardGroup() - { - GroupKey = request.GroupKey - }; - group.EncodedString = request.GroupData; - user.EncodedCardGroups = user.EncodedCardGroups.Where(group2 => group.Id != group2.Id).Append(group).ToList(); - await _userRepository.UpdateUser(user); + await _userService.SaveCardGroup(request.SteamId, request.GroupKey, request.GroupData); return Ok(new OkResponse()); } @@ -120,7 +114,7 @@ namespace TOOHUCardAPI.Controllers private async Task Get(string body) { PlayerDataGetRequestObject requestObject = JsonConvert.DeserializeObject(body); - IEnumerable users = await Task.WhenAll(requestObject.Ids.Values.Select(val => _userRepository.GetOrCreateUser(val))); + IEnumerable users = await Task.WhenAll(requestObject.Ids.Values.Select(val => _userService.LoginUser(val))); IEnumerable queriedUserSteamIds = requestObject.Ids.Select(i => i.Value); IEnumerable responsePlayers = users .Where(user => queriedUserSteamIds.Contains(user.SteamId)) diff --git a/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs b/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs index ea3464f..54cece3 100644 --- a/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs +++ b/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs @@ -35,6 +35,8 @@ namespace TOOHUCardAPI.DTO.PlayerData [JsonProperty("is_first_win")]public int IsFirstWin { get; set; } [JsonProperty("key_use_count")] public int KeyUseCount { get; set; } [JsonProperty("power_max_total")] public int PowerMaxTotal { get; set; } + [JsonProperty("pet_model")] public string PetModel { get; set; } + [JsonProperty("pet_effect")] public string PetEffect { get; set; } public Dictionary ToDynamicProperties() { diff --git a/TOOHUCardAPI/DTO/PlayerData/PlayerDataSavePetCustomRequest.cs b/TOOHUCardAPI/DTO/PlayerData/PlayerDataSavePetCustomRequest.cs new file mode 100644 index 0000000..1f92a66 --- /dev/null +++ b/TOOHUCardAPI/DTO/PlayerData/PlayerDataSavePetCustomRequest.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace TOOHUCardAPI.DTO.PlayerData +{ + public class PlayerDataSavePetCustomRequest : AbstractPlayerTargetedRequest + { + [JsonProperty("pet_model")] + public string PetModel { get; set; } + [JsonProperty("pet_effect")] + public string PetEffect { get; set; } + + } +} \ No newline at end of file diff --git a/TOOHUCardAPI/Data/Models/User.cs b/TOOHUCardAPI/Data/Models/User.cs index 5da2859..b10360a 100644 --- a/TOOHUCardAPI/Data/Models/User.cs +++ b/TOOHUCardAPI/Data/Models/User.cs @@ -20,6 +20,8 @@ namespace TOOHUCardAPI.Data.Models public int Point { get; set; } public DateTime LastFirstWin { get; set; } public int PowerMaxTotal { get; set; } + public string PetModel { get; set; } + public string PetEffect { get; set; } public List EncodedCardGroups { get; set; } public List CardLevels { get; set; } } diff --git a/TOOHUCardAPI/Data/Services/StoreService.cs b/TOOHUCardAPI/Data/Services/StoreService.cs index 15f7913..9cf6331 100644 --- a/TOOHUCardAPI/Data/Services/StoreService.cs +++ b/TOOHUCardAPI/Data/Services/StoreService.cs @@ -29,6 +29,16 @@ namespace TOOHUCardAPI.Data.Services _logger.LogInformation($"User with steamid {user.SteamId} was given {points} points. New total: {user.Point}"); } + public async Task SaveKeyTotal(string steamId, int keyTotal, int keyUseCount) + { + User user = await _userRepository.GetUser(steamId); + _logger.LogInformation($"User {user.SteamId} just stored some key total data, previous total and use: ({user.KeyTotal},{user.KeyUseCount}). new ({keyTotal},{keyUseCount})"); + user.KeyTotal = keyTotal; + user.KeyUseCount = keyUseCount; + await _userRepository.UpdateUser(user); + return user; + } + public async Task ChangePowerMaxTotal(string steamId, int amt) { User user = await _userRepository.GetUser(steamId); diff --git a/TOOHUCardAPI/Data/Services/UserService.cs b/TOOHUCardAPI/Data/Services/UserService.cs new file mode 100644 index 0000000..88a540f --- /dev/null +++ b/TOOHUCardAPI/Data/Services/UserService.cs @@ -0,0 +1,48 @@ +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using TOOHUCardAPI.Data.Models; +using TOOHUCardAPI.Data.Repositories; + +namespace TOOHUCardAPI.Data.Services +{ + public class UserService + { + private readonly ILogger _logger; + private readonly UserRepository _userRepository; + + public UserService(ILogger logger, UserRepository userRepository) + { + _logger = logger; + _userRepository = userRepository; + } + + public async Task LoginUser(string steamId) + { + _logger.LogInformation($"User {steamId} just logged in"); + return await _userRepository.GetOrCreateUser(steamId); + } + + public async Task SaveCardGroup(string steamId, string groupKey, string groupData) + { + User user = await _userRepository.GetUser(steamId); + + EncodedCardGroup group = user.EncodedCardGroups.FirstOrDefault(group => group.GroupKey == groupKey) ?? new EncodedCardGroup() + { + GroupKey = groupKey + }; + group.EncodedString = groupData; + user.EncodedCardGroups = user.EncodedCardGroups.Where(group2 => group.Id != group2.Id).Append(group).ToList(); + _logger.LogInformation($"{user.SteamId} just stored a card group"); + await _userRepository.UpdateUser(user); + } + + public async Task SavePetData(string steamId, string petModel, string petEffect) + { + User user = await _userRepository.GetUser(steamId); + user.PetModel = petModel; + user.PetEffect = petEffect; + _logger.LogInformation($"User {user.SteamId} saved new pet data with model: {petModel} and effect {petEffect}"); + } + } +} \ No newline at end of file diff --git a/TOOHUCardAPI/Startup.cs b/TOOHUCardAPI/Startup.cs index 5cb10b4..58fb9f9 100644 --- a/TOOHUCardAPI/Startup.cs +++ b/TOOHUCardAPI/Startup.cs @@ -39,6 +39,7 @@ namespace TOOHUCardAPI services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); services.AddAutoMapper(typeof(AutomapProfile)); services.AddSwaggerGen(c => {