65 lines
2.1 KiB
C#
65 lines
2.1 KiB
C#
using MongoDB.Bson.Serialization.Attributes;
|
|
|
|
namespace QuestionsApi.Models;
|
|
|
|
public static class DailyMissionTypes
|
|
{
|
|
public const string DueReviews = "due_reviews";
|
|
public const string WeakSystemCorrect = "weak_system_correct";
|
|
public const string DifficultyFourCorrect = "difficulty_four_correct";
|
|
}
|
|
|
|
public sealed class DailyMission
|
|
{
|
|
public string Id { get; set; } = Guid.NewGuid().ToString("N");
|
|
public string Type { get; set; } = "";
|
|
public string Title { get; set; } = "";
|
|
public string Step3System { get; set; } = "";
|
|
public int DifficultyMin { get; set; }
|
|
public int Target { get; set; }
|
|
public int Progress { get; set; }
|
|
public DateTime StartsUtc { get; set; }
|
|
public DateTime? CompletedUtc { get; set; }
|
|
public List<string> AppliedEventIds { get; set; } = [];
|
|
}
|
|
|
|
public sealed class DailyMissionSet
|
|
{
|
|
[BsonId]
|
|
public string Id { get; set; } = "";
|
|
public string UserId { get; set; } = "";
|
|
public string DateUtc { get; set; } = "";
|
|
public List<DailyMission> Missions { get; set; } = [];
|
|
public List<DailyMission> ReplacementCandidates { get; set; } = [];
|
|
public bool ReplacementUsed { get; set; }
|
|
public bool ExpirationRecorded { get; set; }
|
|
public DateTime CreatedUtc { get; set; }
|
|
public DateTime ExpiresUtc { get; set; }
|
|
}
|
|
|
|
public sealed class DailyMissionResponse
|
|
{
|
|
public string Id { get; set; } = "";
|
|
public string Type { get; set; } = "";
|
|
public string Title { get; set; } = "";
|
|
public string Step3System { get; set; } = "";
|
|
public int DifficultyMin { get; set; }
|
|
public int Target { get; set; }
|
|
public int Progress { get; set; }
|
|
public bool Completed { get; set; }
|
|
}
|
|
|
|
public sealed class DailyMissionSetResponse
|
|
{
|
|
public string DateUtc { get; set; } = "";
|
|
public DateTime ExpiresUtc { get; set; }
|
|
public bool ReplacementAvailable { get; set; }
|
|
public List<DailyMissionResponse> Missions { get; set; } = [];
|
|
}
|
|
|
|
public sealed class DailyMissionEnvelope
|
|
{
|
|
public DailyMissionSetResponse State { get; set; } = new();
|
|
public List<CreditAward> CreditAwards { get; set; } = [];
|
|
}
|