48 lines
1.2 KiB
C#
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;
|
|
}
|
|
}
|