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}"); } } }