Add clinical progression ranks and records
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Bson.Serialization.Attributes;
|
||||
|
||||
namespace QuestionsApi.Models;
|
||||
|
||||
public sealed class UserProgression
|
||||
{
|
||||
[BsonId, BsonRepresentation(BsonType.ObjectId)] public string? Id { get; set; }
|
||||
public string UserId { get; set; } = "";
|
||||
public int HighestRankOrdinal { get; set; }
|
||||
public DateTime TrackingStartedUtc { get; set; }
|
||||
public bool BaselineApplied { get; set; }
|
||||
public Dictionary<string, DateTime> EarnedRanksUtc { get; set; } = [];
|
||||
public int CurrentHardStreak { get; set; }
|
||||
public int BestHardStreak { get; set; }
|
||||
public DateTime? BestHardStreakUtc { get; set; }
|
||||
public PersonalRecordValue BestTimedBlock { get; set; } = new();
|
||||
public PersonalRecordValue SystemsAdvancedWeek { get; set; } = new();
|
||||
public PersonalRecordValue ReviewQueueReduction { get; set; } = new();
|
||||
public PersonalRecordValue WeakSystemImprovement { get; set; } = new();
|
||||
public DateTime UpdatedUtc { get; set; }
|
||||
}
|
||||
|
||||
public sealed class PersonalRecordValue
|
||||
{
|
||||
public int Value { get; set; }
|
||||
public int SampleSize { get; set; }
|
||||
public string Detail { get; set; } = "";
|
||||
public DateTime? AchievedUtc { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ProgressionWeeklySnapshot
|
||||
{
|
||||
[BsonId] public string Id { get; set; } = "";
|
||||
public string UserId { get; set; } = "";
|
||||
public DateTime WeekStartUtc { get; set; }
|
||||
public List<ProgressionSystemSnapshot> OpeningSystems { get; set; } = [];
|
||||
public List<ProgressionSystemSnapshot> LatestSystems { get; set; } = [];
|
||||
public int OpeningPendingReviews { get; set; }
|
||||
public int LatestPendingReviews { get; set; }
|
||||
public DateTime UpdatedUtc { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ProgressionSystemSnapshot
|
||||
{
|
||||
public string System { get; set; } = "";
|
||||
public int StateOrdinal { get; set; }
|
||||
public int MasteryScore { get; set; }
|
||||
public int DistinctQuestions { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ProgressionRequirementResponse
|
||||
{
|
||||
public string Key { get; set; } = "";
|
||||
public string Label { get; set; } = "";
|
||||
public int Current { get; set; }
|
||||
public int Required { get; set; }
|
||||
public bool Complete => Current >= Required;
|
||||
}
|
||||
|
||||
public sealed class ProgressionRecordResponse
|
||||
{
|
||||
public string Key { get; set; } = "";
|
||||
public string Label { get; set; } = "";
|
||||
public string Definition { get; set; } = "";
|
||||
public int Value { get; set; }
|
||||
public int SampleSize { get; set; }
|
||||
public string Detail { get; set; } = "";
|
||||
public DateTime? AchievedUtc { get; set; }
|
||||
public bool TrackingFromLaunch { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ProgressionResponse
|
||||
{
|
||||
public int RankOrdinal { get; set; }
|
||||
public int QualifiedRankOrdinal { get; set; }
|
||||
public string RankName { get; set; } = "Case Scout";
|
||||
public string Division { get; set; } = "III";
|
||||
public string DisplayName => $"{RankName} {Division}";
|
||||
public DateTime TrackingStartedUtc { get; set; }
|
||||
public List<string> EarnedBadges { get; set; } = [];
|
||||
public Dictionary<string, DateTime> EarnedRanksUtc { get; set; } = [];
|
||||
public List<ProgressionRankResponse> Ladder { get; set; } = [];
|
||||
public string? NextRankName { get; set; }
|
||||
public string? NextDivision { get; set; }
|
||||
public List<ProgressionRequirementResponse> NextRequirements { get; set; } = [];
|
||||
public List<ProgressionRecordResponse> Records { get; set; } = [];
|
||||
}
|
||||
|
||||
public sealed class ProgressionRankResponse
|
||||
{
|
||||
public int Ordinal { get; set; }
|
||||
public string RankName { get; set; } = "";
|
||||
public string Division { get; set; } = "";
|
||||
public bool Earned { get; set; }
|
||||
public DateTime? EarnedUtc { get; set; }
|
||||
public string RequirementSummary { get; set; } = "";
|
||||
}
|
||||
Reference in New Issue
Block a user