using System.Text.Json; using System.Text.Json.Serialization; namespace TeleWave.Application.Programming.Templates; /// /// Откуда слот-повтор берёт содержимое: точка в уже записанной ленте того же канала. «Вечерний фильм /// утром в субботу» — это daysAgo = 1, time = 20:00. /// public sealed record RepeatSource(int DaysAgo, TimeOnly Time, int DurationMinutes) { private static readonly JsonSerializerOptions Options = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, Converters = { new JsonStringEnumConverter() }, }; public string ToJson() => JsonSerializer.Serialize(this, Options); public static RepeatSource? FromJson(string? json) { if (string.IsNullOrWhiteSpace(json)) return null; try { return JsonSerializer.Deserialize(json, Options); } catch (JsonException) { return null; } } }