55 lines
1.8 KiB
C#
55 lines
1.8 KiB
C#
using MongoDB.Bson.Serialization.Attributes;
|
|
|
|
namespace QuestionsApi.Models;
|
|
|
|
public static class WeeklyRemediationTypes
|
|
{
|
|
public const string Reviews = "reviews";
|
|
public const string HardCorrect = "hard_correct";
|
|
}
|
|
|
|
public sealed class WeeklyGoal
|
|
{
|
|
[BsonId] public string Id { get; set; } = "";
|
|
public string UserId { get; set; } = "";
|
|
public DateTime WeekStartUtc { get; set; }
|
|
public DateTime ExpiresUtc { get; set; }
|
|
public string RemediationType { get; set; } = WeeklyRemediationTypes.Reviews;
|
|
public int RemediationTarget { get; set; }
|
|
public List<string> EligibleSystems { get; set; } = [];
|
|
public DateTime CreatedUtc { get; set; }
|
|
public DateTime? CompletedUtc { get; set; }
|
|
public bool RewardIssued { get; set; }
|
|
public int RewardAmount { get; set; }
|
|
public bool ExpirationRecorded { get; set; }
|
|
}
|
|
|
|
public sealed class WeeklyGoalComponentResponse
|
|
{
|
|
public string Type { get; set; } = "";
|
|
public string Label { get; set; } = "";
|
|
public int Progress { get; set; }
|
|
public int Target { get; set; }
|
|
public bool Completed { get; set; }
|
|
}
|
|
|
|
public sealed class WeeklyGoalResponse
|
|
{
|
|
public DateTime WeekStartUtc { get; set; }
|
|
public DateTime ExpiresUtc { get; set; }
|
|
public bool Completed { get; set; }
|
|
public string RemediationType { get; set; } = "";
|
|
public List<string> EligibleSystems { get; set; } = [];
|
|
public string SuggestedSystem { get; set; } = "";
|
|
public int RewardAmount { get; set; }
|
|
public int RewardMaximum { get; set; } = 10;
|
|
public List<WeeklyGoalComponentResponse> Components { get; set; } = [];
|
|
}
|
|
|
|
public sealed class WeeklyGoalEnvelope
|
|
{
|
|
public WeeklyGoalResponse State { get; set; } = new();
|
|
public CreditStatusResponse? Credits { get; set; }
|
|
public List<CreditAward> CreditAwards { get; set; } = [];
|
|
}
|