SPMS_API/SPMS.Application/DTOs/Service/RegisterServiceRequestDto.cs
SEAN 4916488175 improvement: 서비스 통합 등록 플로우 구현 (#212)
- POST /v1/in/service/register 통합 등록 엔드포인트 추가
- RegisterServiceRequestDto/ResponseDto 신규 생성
- 서비스 생성 + FCM/APNs 자격증명을 트랜잭션으로 원자성 보장
- 검증 로직 private 메서드 추출 (기존 코드 재사용)
- 자격증명은 선택사항, 검증 실패 시 전체 롤백

Closes #212
2026-02-25 12:26:45 +09:00

47 lines
1.6 KiB
C#

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; }
/// <summary>
/// FCM 자격증명 (선택)
/// </summary>
public FcmCredentialDto? Fcm { get; set; }
/// <summary>
/// APNs 자격증명 (선택)
/// </summary>
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 = "Key ID는 필수입니다.")]
[StringLength(10, MinimumLength = 10, ErrorMessage = "Key ID는 10자리여야 합니다.")]
public string KeyId { get; set; } = string.Empty;
[Required(ErrorMessage = "Team ID는 필수입니다.")]
[StringLength(10, MinimumLength = 10, ErrorMessage = "Team ID는 10자리여야 합니다.")]
public string TeamId { get; set; } = string.Empty;
[Required(ErrorMessage = "Private Key는 필수입니다.")]
public string PrivateKey { get; set; } = string.Empty;
}