using System.ComponentModel.DataAnnotations; namespace SPMS.Application.DTOs.Service; public class RegisterServiceRequestDto { [Required(ErrorMessage = "서비스명은 필수입니다.")] [StringLength(100, MinimumLength = 2, ErrorMessage = "서비스명은 2~100자여야 합니다.")] public string ServiceName { get; set; } = string.Empty; [StringLength(500, ErrorMessage = "설명은 500자 이내여야 합니다.")] public string? Description { get; set; } /// /// FCM 자격증명 (선택) /// public FcmCredentialDto? Fcm { get; set; } /// /// APNs 자격증명 (선택) /// public ApnsCredentialDto? Apns { get; set; } } public class FcmCredentialDto { [Required(ErrorMessage = "Service Account JSON은 필수입니다.")] public string ServiceAccountJson { get; set; } = string.Empty; } public class ApnsCredentialDto { [Required(ErrorMessage = "Bundle ID는 필수입니다.")] public string BundleId { get; set; } = string.Empty; [Required(ErrorMessage = "인증 타입은 필수입니다.")] [RegularExpression("^(p8|p12)$", ErrorMessage = "AuthType은 p8 또는 p12만 가능합니다.")] public string AuthType { get; set; } = "p8"; // p8 필드 [StringLength(10, MinimumLength = 10, ErrorMessage = "Key ID는 10자리여야 합니다.")] public string? KeyId { get; set; } [StringLength(10, MinimumLength = 10, ErrorMessage = "Team ID는 10자리여야 합니다.")] public string? TeamId { get; set; } public string? PrivateKey { get; set; } // p12 필드 public string? CertificateBase64 { get; set; } public string? CertPassword { get; set; } }