From 34de3d53adc22f1c2df85378230387592096954e Mon Sep 17 00:00:00 2001 From: gamer147 Date: Tue, 26 May 2026 22:04:10 -0400 Subject: [PATCH] feat(bp): add BattlePassSeasonEntry + BattlePassRewardEntry + BattlePassTrack enum --- SVSim.Database/Enums/BattlePassTrack.cs | 11 ++++++++++ .../Models/BattlePassRewardEntry.cs | 22 +++++++++++++++++++ .../Models/BattlePassSeasonEntry.cs | 20 +++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 SVSim.Database/Enums/BattlePassTrack.cs create mode 100644 SVSim.Database/Models/BattlePassRewardEntry.cs create mode 100644 SVSim.Database/Models/BattlePassSeasonEntry.cs diff --git a/SVSim.Database/Enums/BattlePassTrack.cs b/SVSim.Database/Enums/BattlePassTrack.cs new file mode 100644 index 0000000..8b4e073 --- /dev/null +++ b/SVSim.Database/Enums/BattlePassTrack.cs @@ -0,0 +1,11 @@ +namespace SVSim.Database.Enums; + +/// +/// Reward track on a battle pass season. Wire shape uses the section keys +/// "normal" and "premium" under reward_info. +/// +public enum BattlePassTrack +{ + Normal = 0, + Premium = 1, +} diff --git a/SVSim.Database/Models/BattlePassRewardEntry.cs b/SVSim.Database/Models/BattlePassRewardEntry.cs new file mode 100644 index 0000000..c226359 --- /dev/null +++ b/SVSim.Database/Models/BattlePassRewardEntry.cs @@ -0,0 +1,22 @@ +using SVSim.Database.Common; +using SVSim.Database.Enums; + +namespace SVSim.Database.Models; + +/// +/// One reward cell on a battle pass season (track × level). Capture shows at most one +/// reward per (season, track, level) — enforced by unique index in DbContext. +/// RewardType integers come from . +/// +public class BattlePassRewardEntry : BaseEntity +{ + public int SeasonId { get; set; } + public BattlePassTrack Track { get; set; } + public int Level { get; set; } + public int RewardType { get; set; } + public long RewardDetailId { get; set; } + public int RewardNumber { get; set; } + public bool IsAppealExclusion { get; set; } + + public BattlePassSeasonEntry Season { get; set; } = null!; +} diff --git a/SVSim.Database/Models/BattlePassSeasonEntry.cs b/SVSim.Database/Models/BattlePassSeasonEntry.cs new file mode 100644 index 0000000..314aef5 --- /dev/null +++ b/SVSim.Database/Models/BattlePassSeasonEntry.cs @@ -0,0 +1,20 @@ +using SVSim.Database.Common; + +namespace SVSim.Database.Models; + +/// +/// One battle pass season. Active season is resolved by time-window +/// (StartDate <= now < EndDate). Rewards are loaded via Rewards collection. +/// +public class BattlePassSeasonEntry : BaseEntity +{ + public string Name { get; set; } = ""; + public int MaxLevel { get; set; } + public DateTimeOffset StartDate { get; set; } + public DateTimeOffset EndDate { get; set; } + public bool CanPurchase { get; set; } + public int PriceCrystal { get; set; } + public string Description { get; set; } = ""; + + public List Rewards { get; set; } = new(); +}