using System.ComponentModel.DataAnnotations; using System.Text.Json; using Tiku.Application.PlatformAdmin; using Tiku.Domain.Common; using Tiku.Domain.Platform; namespace Tiku.Api.Contracts; public sealed record SavePlatformConfigurationDraftDto( [Required][MaxLength(120)] string DefinitionCode, [Required][MaxLength(80)] string Environment, JsonElement? Value, [MaxLength(300)] string? SecretRef, [Required][MaxLength(1000)] string Reason) { public SavePlatformConfigurationDraftCommand ToCommand() { return new SavePlatformConfigurationDraftCommand(DefinitionCode, Environment, Value, SecretRef, Reason); } } public sealed record PlatformRollbackDto([Required][MaxLength(1000)] string Reason); public sealed record UpsertPlatformNotificationTemplateDto( Guid? Id, [Required][MaxLength(120)] string Code, [Required][MaxLength(200)] string Name, PlatformNotificationChannel Channel, [Required][MaxLength(500)] string SubjectTemplate, [Required][MaxLength(8000)] string BodyTemplate, bool Enabled, JsonElement? Variables) { public UpsertPlatformNotificationTemplateCommand ToCommand() { return new UpsertPlatformNotificationTemplateCommand(Id, Code, Name, Channel, SubjectTemplate, BodyTemplate, Enabled, Variables?.Clone() ?? JsonDefaults.Array()); } } public sealed record SendPlatformNotificationDto( Guid TemplateId, [MinLength(1)] IReadOnlyCollection RoleCodes, IReadOnlyDictionary? Variables, [Required][MaxLength(200)] string IdempotencyKey) { public SendPlatformNotificationCommand ToCommand() { return new SendPlatformNotificationCommand(TemplateId, RoleCodes, Variables ?? new Dictionary(), IdempotencyKey); } }