using Microsoft.EntityFrameworkCore; using SVSim.Database; using SVSim.Database.Enums; using SVSim.Database.Models; namespace SVSim.EmulatedEntrypoint.Services; public class DbCardPoolProvider : ICardPoolProvider { private readonly SVSimDbContext _db; public DbCardPoolProvider(SVSimDbContext db) { _db = db; } public IReadOnlyList GetPool(PackConfigEntry pack) { switch (pack.PackCategory) { case PackCategory.None: case PackCategory.LegendCardPack: return _db.CardSets .Where(s => s.Id == pack.BasePackId) .SelectMany(s => s.Cards) .Where(c => !c.IsFoil) .ToList(); case PackCategory.SpecialCardPack: case PackCategory.LimitedSpecialCardPack: return _db.CardSets .Where(s => s.IsInRotation) .SelectMany(s => s.Cards) .Where(c => !c.IsFoil) .Distinct() .ToList(); default: return Array.Empty(); } } public ShadowverseCardEntry? TryGetFoilTwin(long baseCardId) => _db.Cards.FirstOrDefault(c => c.Id == baseCardId + 1 && c.IsFoil); }