Files
h-school/src/HSchool.Server/Api/SpeechRulesModels.cs
T

48 lines
1.2 KiB
C#

using HSchool.Content;
namespace HSchool.Server.Api;
internal sealed record SpeechRulesResponse(
string Students,
string Staff,
string? PendingStudents,
string? PendingStaff)
{
public static SpeechRulesResponse From(SchoolSpeechRules rules) =>
new(rules.Students, rules.Staff, rules.PendingStudents, rules.PendingStaff);
}
internal sealed record SetSpeechRulesRequest(string? Students, string? Staff);
internal enum SpeechRulesError
{
None,
UnknownSchool,
UnknownPolicy,
}
internal sealed record SpeechRulesOutcome(SpeechRulesError Error, SpeechRulesResponse? Rules)
{
public static SpeechRulesOutcome Ok(SchoolSpeechRules rules) =>
new(SpeechRulesError.None, SpeechRulesResponse.From(rules));
public static SpeechRulesOutcome Fail(SpeechRulesError error) => new(error, null);
}
internal static class SpeechRulesValidation
{
public static bool TryParse(string value, out string policy, out SpeechRulesError error)
{
if (!SpeechPolicies.IsKnown(value))
{
policy = "";
error = SpeechRulesError.UnknownPolicy;
return false;
}
policy = value;
error = SpeechRulesError.None;
return true;
}
}