using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using SVSim.Database; using SVSim.EmulatedEntrypoint.Models.Dtos.Common; using SVSim.EmulatedEntrypoint.Models.Dtos.Requests; namespace SVSim.EmulatedEntrypoint.Controllers; /// /// /config/* — viewer-scoped preference toggles. Persists to ViewerInfo; reads back through /// /load/index + /mypage/index user_config. /// public class ConfigController : SVSimController { private readonly SVSimDbContext _db; public ConfigController(SVSimDbContext db) => _db = db; [HttpPost("update_foil_preferred")] public async Task> UpdateFoilPreferred( ConfigUpdateFoilPreferredRequest request, CancellationToken ct) { if (!TryGetViewerId(out long viewerId)) return Unauthorized(); var viewer = await _db.Viewers.FirstOrDefaultAsync(v => v.Id == viewerId, ct); if (viewer is null) return Unauthorized(); viewer.Info.IsFoilPreferred = request.IsFoilPreferred != 0; await _db.SaveChangesAsync(ct); return new EmptyResponse(); } [HttpPost("update_prize_preferred")] public async Task> UpdatePrizePreferred( ConfigUpdatePrizePreferredRequest request, CancellationToken ct) { if (!TryGetViewerId(out long viewerId)) return Unauthorized(); var viewer = await _db.Viewers.FirstOrDefaultAsync(v => v.Id == viewerId, ct); if (viewer is null) return Unauthorized(); viewer.Info.IsPrizePreferred = request.IsPrizePreferred != 0; await _db.SaveChangesAsync(ct); return new EmptyResponse(); } }