using System; 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"); User user = await _userRepository.GetOrCreateUser(steamId); if (user.LastDailyLoginBonus.AddDays(1) <= DateTime.Now) { user = await HandleDailyLoginBonus(user); } return user; } private async Task HandleDailyLoginBonus(User user) { user.KeyTotal += AppSettings.DailyKeyBonus; await _userRepository.UpdateUser(user); return user; } 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}"); } } }