Finished playerdata endpoint aside from donation stuff and bug testing, moved what controllers use out to services
This commit is contained in:
@@ -27,18 +27,28 @@ namespace TOOHUCardAPI.Controllers
|
|||||||
public class PlayerDataController : MethodBasedController<PlayerDataController>
|
public class PlayerDataController : MethodBasedController<PlayerDataController>
|
||||||
{
|
{
|
||||||
private readonly ILogger<PlayerDataController> _logger;
|
private readonly ILogger<PlayerDataController> _logger;
|
||||||
private readonly UserRepository _userRepository;
|
private readonly UserService _userService;
|
||||||
private readonly IMapper _mapper;
|
private readonly IMapper _mapper;
|
||||||
private readonly StoreService _storeService;
|
private readonly StoreService _storeService;
|
||||||
|
|
||||||
public PlayerDataController(ILogger<PlayerDataController> logger, UserRepository userRepository, IMapper mapper, StoreService storeService)
|
public PlayerDataController(ILogger<PlayerDataController> logger, UserService userService, IMapper mapper, StoreService storeService)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_userRepository = userRepository;
|
_userService = userService;
|
||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
_storeService = storeService;
|
_storeService = storeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[EndpointHandler("save_pet_custom")]
|
||||||
|
private async Task<IActionResult> SavePetData(string body)
|
||||||
|
{
|
||||||
|
PlayerDataSavePetCustomRequest
|
||||||
|
request = JsonConvert.DeserializeObject<PlayerDataSavePetCustomRequest>(body);
|
||||||
|
await _userService.SavePetData(request.SteamId, request.PetModel, request.PetEffect);
|
||||||
|
return Ok(new OkResponse());
|
||||||
|
}
|
||||||
|
|
||||||
|
[EndpointHandler("save_power_max")]
|
||||||
private async Task<IActionResult> SavePowerMax(string body)
|
private async Task<IActionResult> SavePowerMax(string body)
|
||||||
{
|
{
|
||||||
PlayerDataSavePowerMaxTotalRequest request =
|
PlayerDataSavePowerMaxTotalRequest request =
|
||||||
@@ -74,15 +84,7 @@ namespace TOOHUCardAPI.Controllers
|
|||||||
private async Task<IActionResult> SaveKeyCount(string body)
|
private async Task<IActionResult> SaveKeyCount(string body)
|
||||||
{
|
{
|
||||||
PlayerDataSaveKeyCountRequest request = JsonConvert.DeserializeObject<PlayerDataSaveKeyCountRequest>(body);
|
PlayerDataSaveKeyCountRequest request = JsonConvert.DeserializeObject<PlayerDataSaveKeyCountRequest>(body);
|
||||||
User user = await _userRepository.GetUser(request.SteamId);
|
await _storeService.SaveKeyTotal(request.SteamId, request.KeyTotal, request.KeyUseCount);
|
||||||
if (user == null)
|
|
||||||
{
|
|
||||||
throw new InvalidUserException();
|
|
||||||
}
|
|
||||||
|
|
||||||
user.KeyTotal = request.KeyTotal;
|
|
||||||
user.KeyUseCount = request.KeyUseCount;
|
|
||||||
await _userRepository.UpdateUser(user);
|
|
||||||
return Ok(new OkResponse());
|
return Ok(new OkResponse());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,15 +106,7 @@ namespace TOOHUCardAPI.Controllers
|
|||||||
{
|
{
|
||||||
PlayerDataSaveCardGroupRequest request =
|
PlayerDataSaveCardGroupRequest request =
|
||||||
JsonConvert.DeserializeObject<PlayerDataSaveCardGroupRequest>(body);
|
JsonConvert.DeserializeObject<PlayerDataSaveCardGroupRequest>(body);
|
||||||
User user = await _userRepository.GetUser(request.SteamId);
|
await _userService.SaveCardGroup(request.SteamId, request.GroupKey, request.GroupData);
|
||||||
|
|
||||||
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);
|
|
||||||
return Ok(new OkResponse());
|
return Ok(new OkResponse());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +114,7 @@ namespace TOOHUCardAPI.Controllers
|
|||||||
private async Task<IActionResult> Get(string body)
|
private async Task<IActionResult> Get(string body)
|
||||||
{
|
{
|
||||||
PlayerDataGetRequestObject requestObject = JsonConvert.DeserializeObject<PlayerDataGetRequestObject>(body);
|
PlayerDataGetRequestObject requestObject = JsonConvert.DeserializeObject<PlayerDataGetRequestObject>(body);
|
||||||
IEnumerable<User> users = await Task.WhenAll(requestObject.Ids.Values.Select(val => _userRepository.GetOrCreateUser(val)));
|
IEnumerable<User> users = await Task.WhenAll(requestObject.Ids.Values.Select(val => _userService.LoginUser(val)));
|
||||||
IEnumerable<string> queriedUserSteamIds = requestObject.Ids.Select(i => i.Value);
|
IEnumerable<string> queriedUserSteamIds = requestObject.Ids.Select(i => i.Value);
|
||||||
IEnumerable<PlayerDataGetResponseObjectPlayer> responsePlayers = users
|
IEnumerable<PlayerDataGetResponseObjectPlayer> responsePlayers = users
|
||||||
.Where(user => queriedUserSteamIds.Contains(user.SteamId))
|
.Where(user => queriedUserSteamIds.Contains(user.SteamId))
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ namespace TOOHUCardAPI.DTO.PlayerData
|
|||||||
[JsonProperty("is_first_win")]public int IsFirstWin { get; set; }
|
[JsonProperty("is_first_win")]public int IsFirstWin { get; set; }
|
||||||
[JsonProperty("key_use_count")] public int KeyUseCount { get; set; }
|
[JsonProperty("key_use_count")] public int KeyUseCount { get; set; }
|
||||||
[JsonProperty("power_max_total")] public int PowerMaxTotal { 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<string, object> ToDynamicProperties()
|
public Dictionary<string, object> ToDynamicProperties()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,6 +20,8 @@ namespace TOOHUCardAPI.Data.Models
|
|||||||
public int Point { get; set; }
|
public int Point { get; set; }
|
||||||
public DateTime LastFirstWin { get; set; }
|
public DateTime LastFirstWin { get; set; }
|
||||||
public int PowerMaxTotal { get; set; }
|
public int PowerMaxTotal { get; set; }
|
||||||
|
public string PetModel { get; set; }
|
||||||
|
public string PetEffect { get; set; }
|
||||||
public List<EncodedCardGroup> EncodedCardGroups { get; set; }
|
public List<EncodedCardGroup> EncodedCardGroups { get; set; }
|
||||||
public List<CardLevel> CardLevels { get; set; }
|
public List<CardLevel> CardLevels { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,16 @@ namespace TOOHUCardAPI.Data.Services
|
|||||||
_logger.LogInformation($"User with steamid {user.SteamId} was given {points} points. New total: {user.Point}");
|
_logger.LogInformation($"User with steamid {user.SteamId} was given {points} points. New total: {user.Point}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<User> 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<int> ChangePowerMaxTotal(string steamId, int amt)
|
public async Task<int> ChangePowerMaxTotal(string steamId, int amt)
|
||||||
{
|
{
|
||||||
User user = await _userRepository.GetUser(steamId);
|
User user = await _userRepository.GetUser(steamId);
|
||||||
|
|||||||
48
TOOHUCardAPI/Data/Services/UserService.cs
Normal file
48
TOOHUCardAPI/Data/Services/UserService.cs
Normal file
@@ -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<UserService> _logger;
|
||||||
|
private readonly UserRepository _userRepository;
|
||||||
|
|
||||||
|
public UserService(ILogger<UserService> logger, UserRepository userRepository)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
_userRepository = userRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<User> 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}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,6 +39,7 @@ namespace TOOHUCardAPI
|
|||||||
services.AddScoped<UserRepository>();
|
services.AddScoped<UserRepository>();
|
||||||
services.AddScoped<StoreService>();
|
services.AddScoped<StoreService>();
|
||||||
services.AddScoped<CardRepository>();
|
services.AddScoped<CardRepository>();
|
||||||
|
services.AddScoped<UserService>();
|
||||||
services.AddAutoMapper(typeof(AutomapProfile));
|
services.AddAutoMapper(typeof(AutomapProfile));
|
||||||
services.AddSwaggerGen(c =>
|
services.AddSwaggerGen(c =>
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user