package com.takensoft.cms.mber.dto;

import com.takensoft.cms.mber.vo.MberAuthorVO;
import lombok.*;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.ArrayList;
import java.util.List;
/**
 * @author takensoft
 * @since 2024.04.01
 * @modification
 *     since    |    author    | description
 *  2024.04.01  |  takensoft   | 최초 등록
 *
 * 회원 가입 관련 DTO
 */
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
public class JoinDTO {

    private String mbrId;                                   // 회원 아이디
    @NotBlank(message = "로그인 아이디는 필수 입력 값입니다.")
    @Size(min = 5, max = 50)
    private String lgnId;                                   // 로그인 아이디
    @NotBlank(message = "이름은 필수 입력 값입니다.")
    @Size(min = 2, max = 50)
    private String mbrNm;                                   // 회원 이름
    private String ncnm;                                    // 닉네임
    @NotBlank(message = "비밀번호는 필수 입력 값입니다.")
    private String pswd;                                    // 비밀번호
    private String mblTelno;                                // 휴대폰번호
    private String telno;                                   // 전화번호
    @Email(message = "이메일 형식에 맞지 않습니다.")
    private String eml;                                     // 이메일
    private String zip;                                     // 우편번호
    private String addr;                                    // 주소
    private String daddr;                                   // 상세주소
    private String mbrStts;                                 // 회원상태 0: 탈퇴, 1: 승인, 2: 승인대기, 3: 차단
    private String useYn;                                   // 사용여부
    private String cntrlDt;                                 // 차단일
    private String cntrlRsn;                                // 차단사유
    private String smsRcptnAgreYn;                          // 문자수신여부 0: 거부, 1: 허용
    private String emlRcptnAgreYn;                          // 이메일수신여부 0: 거부, 1: 허용
    private String prvcRlsYn;                               // 개인정보공개여부 0: 거부, 1: 허용
    private String mbrType;                                 // 회원형태 S: 시스템, K: 카카오, N: 네이버, G: 구글, F: 페이스북
    private String pswdChgDt;                               // 비밀번호 변경일
    private String frstRegIp;                               // 최초등록 아이디
    private String sysPvsnYn;                               // 시스템 제공 여부 -> 시스템에서 제공되는 데이터는 사용자가 제거하지 못하도록 하기 위한 설정값 0: 시스템, 1: 사용자
    private String rgtr;                                    // 등록자
    private String regDt;                                   // 등록일
    private String mdfr;                                    // 수정자
    private String mdfcnDt;                                 // 수정일
    @Builder.Default
    private List<MberAuthorVO> authorList = new ArrayList<MberAuthorVO>(); // 권한 정보
}
