using Lieb.Models; using Lieb.Models.GuildWars2; using Microsoft.EntityFrameworkCore; namespace Lieb.Data { public class UserService { private readonly IDbContextFactory _contextFactory; public UserService(IDbContextFactory contextFactory) { _contextFactory = contextFactory; } public async Task GetLiebUser(ulong discordId) { if (discordId > 0) { using var context = _contextFactory.CreateDbContext(); return await context.LiebUsers .Include(u => u.GuildWars2Accounts) .ThenInclude(a => a.EquippedBuilds) .ThenInclude(b => b.GuildWars2Build) .Include(u => u.RoleAssignments) .ThenInclude(r => r.LiebRole) .FirstOrDefaultAsync(u => u.DiscordUserId == discordId); } else return new LiebUser(); } public LiebUser GetLiebUserSmall(ulong discordId) { if (discordId > 0) { using var context = _contextFactory.CreateDbContext(); return context.LiebUsers .Include(u => u.GuildWars2Accounts) .FirstOrDefault(u => u.DiscordUserId == discordId); } else return new LiebUser(); } public async Task GetLiebUserId(ulong discordId) { if (discordId > 0) { using var context = _contextFactory.CreateDbContext(); return (await context.LiebUsers.FirstOrDefaultAsync(u => u.DiscordUserId == discordId)).LiebUserId; } else return -1; } public async Task EditUser(LiebUser user) { using var context = _contextFactory.CreateDbContext(); LiebUser? userToChange = context.LiebUsers .Include(u => u.GuildWars2Accounts) .FirstOrDefault(u => u.LiebUserId == user.LiebUserId); if(userToChange != null) { userToChange.Name = user.Name; userToChange.Pronouns = user.Pronouns; userToChange.Birthday = user.Birthday; } await context.SaveChangesAsync(); } } }