Centralize admin validation rules
TaxBaik CI/CD / build-and-deploy (push) Successful in 3m4s

This commit is contained in:
2026-07-07 16:22:03 +09:00
parent cd7892e858
commit 4c2a13712b
4 changed files with 59 additions and 36 deletions
@@ -5,23 +5,23 @@ using System.ComponentModel.DataAnnotations;
public class SubmitInquiryDto
{
[Required(ErrorMessage = "이름을 입력하세요.")]
[StringLength(100, ErrorMessage = "이름은 최대 100자까지 입력 가능합니다.")]
[StringLength(ValidationRules.NameMaxLength, ErrorMessage = "이름은 최대 100자까지 입력 가능합니다.")]
public string Name { get; set; } = string.Empty;
[Required(ErrorMessage = "전화번호를 입력하세요.")]
[RegularExpression(
@"^(0(?:2|3[1-3]|4[1-4]|5[1-5]|6[1-4]|70|50[5-9]|[7-9](?:\d{1,2})?)\d{7,8}|0\d{9,10})$",
ValidationRules.KoreanPhonePattern,
ErrorMessage = "올바른 전화번호 형식이 아닙니다.")]
public string Phone { get; set; } = string.Empty;
[EmailAddress(ErrorMessage = "올바른 이메일 형식이 아닙니다.")]
public string? Email { get; set; }
[StringLength(50, ErrorMessage = "상담분야는 최대 50자까지 입력 가능합니다.")]
[StringLength(ValidationRules.ServiceTypeMaxLength, ErrorMessage = "상담분야는 최대 50자까지 입력 가능합니다.")]
public string ServiceType { get; set; } = string.Empty;
[Required(ErrorMessage = "문의 내용을 입력하세요.")]
[StringLength(5000, MinimumLength = 10, ErrorMessage = "문의 내용은 최소 10자, 최대 5000자까지 입력 가능합니다.")]
[StringLength(ValidationRules.MessageMaxLength, MinimumLength = ValidationRules.MessageMinLength, ErrorMessage = "문의 내용은 최소 10자, 최대 5000자까지 입력 가능합니다.")]
public string Message { get; set; } = string.Empty;
public bool SuppressNotification { get; set; }
@@ -5,28 +5,28 @@ using System.ComponentModel.DataAnnotations;
public class UpdateInquiryDto
{
[Required(ErrorMessage = "이름을 입력하세요.")]
[StringLength(100, ErrorMessage = "이름은 최대 100자까지 입력 가능합니다.")]
[StringLength(ValidationRules.NameMaxLength, ErrorMessage = "이름은 최대 100자까지 입력 가능합니다.")]
public string Name { get; set; } = string.Empty;
[Required(ErrorMessage = "전화번호를 입력하세요.")]
[RegularExpression(
@"^(0(?:2|3[1-3]|4[1-4]|5[1-5]|6[1-4]|70|50[5-9]|[7-9](?:\d{1,2})?)\d{7,8}|0\d{9,10})$",
ValidationRules.KoreanPhonePattern,
ErrorMessage = "올바른 전화번호 형식이 아닙니다.")]
public string Phone { get; set; } = string.Empty;
[EmailAddress(ErrorMessage = "올바른 이메일 형식이 아닙니다.")]
public string? Email { get; set; }
[StringLength(50, ErrorMessage = "상담분야는 최대 50자까지 입력 가능합니다.")]
[StringLength(ValidationRules.ServiceTypeMaxLength, ErrorMessage = "상담분야는 최대 50자까지 입력 가능합니다.")]
public string ServiceType { get; set; } = string.Empty;
[Required(ErrorMessage = "문의 내용을 입력하세요.")]
[StringLength(5000, MinimumLength = 10, ErrorMessage = "문의 내용은 최소 10자, 최대 5000자까지 입력 가능합니다.")]
[StringLength(ValidationRules.MessageMaxLength, MinimumLength = ValidationRules.MessageMinLength, ErrorMessage = "문의 내용은 최소 10자, 최대 5000자까지 입력 가능합니다.")]
public string Message { get; set; } = string.Empty;
[Required(ErrorMessage = "상태를 선택하세요.")]
public string Status { get; set; } = string.Empty;
[StringLength(1000, ErrorMessage = "관리 메모는 최대 1000자까지 입력 가능합니다.")]
[StringLength(ValidationRules.MemoMaxLength, ErrorMessage = "관리 메모는 최대 1000자까지 입력 가능합니다.")]
public string? AdminMemo { get; set; }
}
@@ -0,0 +1,22 @@
namespace TaxBaik.Application.DTOs;
public static class ValidationRules
{
public const int NameMaxLength = 100;
public const int PhoneMaxLength = 20;
public const int ServiceTypeMaxLength = 50;
public const int MessageMaxLength = 5000;
public const int MessageMinLength = 10;
public const int MemoMaxLength = 1000;
public const int TitleMaxLength = 100;
public const int QuestionMaxLength = 300;
public const int ContentMaxLength = 30000;
public const int TagsMaxLength = 500;
public const int SeoTitleMaxLength = 120;
public const int SeoDescriptionMaxLength = 300;
public const int ContractNumberMaxLength = 50;
public const int RiskLevelMaxLength = 20;
public const string KoreanPhonePattern =
@"^(0(?:2|3[1-3]|4[1-4]|5[1-5]|6[1-4]|70|50[5-9]|[7-9](?:\d{1,2})?)\d{7,8}|0\d{9,10})$";
}