refactor(admin,item-purchase): migrate to IGameCalendarService

Swaps 6 JstPeriod.* callsites across AdminController (mission counter
resolution for the /admin catalog) and ItemPurchaseController (monthly
reset bucket key + all-time period).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-07-04 11:52:53 -04:00
parent 2b0cd516f0
commit 448153d592
2 changed files with 13 additions and 9 deletions

View File

@@ -24,12 +24,14 @@ public class ItemPurchaseController : SVSimController
private readonly SVSimDbContext _db;
private readonly IInventoryService _inv;
private readonly TimeProvider _time;
private readonly IGameCalendarService _calendar;
public ItemPurchaseController(SVSimDbContext db, IInventoryService inv, TimeProvider time)
public ItemPurchaseController(SVSimDbContext db, IInventoryService inv, TimeProvider time, IGameCalendarService calendar)
{
_db = db;
_inv = inv;
_time = time;
_calendar = calendar;
}
[HttpPost("info")]
@@ -43,7 +45,7 @@ public class ItemPurchaseController : SVSimController
.ToListAsync();
var now = _time.GetUtcNow();
var monthKey = JstPeriod.MonthKey(now);
var monthKey = _calendar.MonthKey(now);
var keys = catalog.Select(c => CounterKey(c.Id)).ToList();
var counters = await _db.ViewerEventCounters
.Where(c => c.ViewerId == viewerId && keys.Contains(c.EventKey))
@@ -104,7 +106,7 @@ public class ItemPurchaseController : SVSimController
return BadRequest(new { error = "unknown_purchase" });
var now = _time.GetUtcNow();
var period = entry.IsMonthlyReset ? JstPeriod.MonthKey(now) : JstPeriod.AllTime;
var period = entry.IsMonthlyReset ? _calendar.MonthKey(now) : GameCalendarService.AllTime;
var key = CounterKey(entry.Id);
var counter = await _db.ViewerEventCounters
@@ -162,7 +164,7 @@ public class ItemPurchaseController : SVSimController
private static int CounterCount(List<ViewerEventCounter> counters, ItemPurchaseCatalogEntry entry, string monthKey)
{
var period = entry.IsMonthlyReset ? monthKey : JstPeriod.AllTime;
var period = entry.IsMonthlyReset ? monthKey : GameCalendarService.AllTime;
return counters.FirstOrDefault(c => c.EventKey == CounterKey(entry.Id) && c.Period == period)?.Count ?? 0;
}
}