using System; using System.Collections.Generic; using System.Linq; using AutoMapper; using Microsoft.EntityFrameworkCore; using TOOHUCardAPI.Data.Models; namespace TOOHUCardAPI.Data.Repositories { public class UserRepository { private readonly AppDbContext _appDbContext; private readonly IMapper _mapper; public UserRepository(AppDbContext appDbContext, IMapper mapper) { _appDbContext = appDbContext; _mapper = mapper; } private IQueryable GetAllUsersQuery() { return _appDbContext.Users.Include(u => u.EncodedCardGroups).AsQueryable(); } public User GetUser(string steamId) { return GetAllUsersQuery().FirstOrDefault(user => user.SteamId.Equals(steamId)); } public User CreateUser(string steamId) { User user = new User() { SteamId = steamId, Vip = true, EndTime = DateTime.MaxValue, LevelList = string.Empty, PetLevel = 1, EncodedCardGroups = new List() }; _appDbContext.Users.Add(user); _appDbContext.SaveChanges(); return user; } public User UpdateUser(User user) { var trackedUser = GetAllUsersQuery().FirstOrDefault(u => u.SteamId == user.SteamId); if (trackedUser == default) { return trackedUser; } _appDbContext.Update(user); _appDbContext.SaveChanges(); return user; } public User GetOrCreateUser(string steamId) { User user = GetUser(steamId) ?? CreateUser(steamId); return user; } } }