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();
}
}