Files
API/TOOHUCardAPI/Data/Services/UserService.cs

65 lines
2.4 KiB
C#

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<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");
User user = await _userRepository.GetOrCreateUser(steamId);
if (user.LastDailyLoginBonus.AddDays(1) <= DateTime.Now)
{
user = await HandleDailyLoginBonus(user);
}
return user;
}
private async Task<User> HandleDailyLoginBonus(User user)
{
user.KeyTotal += AppSettings.DailyKeyBonus;
user.LastDailyLoginBonus = DateTime.Now;;
await _userRepository.UpdateUser(user);
_logger.LogInformation($"User {user.SteamId} received a daily login bonus. Keys earned: {AppSettings.DailyKeyBonus}. New Key total: {user.KeyTotal}");
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;
await _userRepository.UpdateUser(user);
_logger.LogInformation($"User {user.SteamId} saved new pet data with model: {petModel} and effect {petEffect}");
}
}
}