package go.kr.project.system.menu.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

/**
 * packageName    : go.kr.project.system.menu.model
 * fileName       : MenuVO
 * author         : 시스템 관리자
 * date           : 2023-06-01
 * description    : 메뉴 정보를 담는 VO 클래스
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2023-06-01        시스템 관리자       최초 생성
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class MenuVO {

    private String menuId;

    private String menuNm;

    private String menuDc;

    private String upperMenuId;

    private Integer menuLevel;

    private Integer sortOrdr;

    private String menuUrl;

    private String urlPattern;

    private String menuIcon;

    private String useYn;

    private String viewYn = "Y";

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
    private LocalDateTime regDttm;

    private String rgtr;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
    private LocalDateTime mdfcnDttm;

    private String mdfr;

    // 상위 메뉴 이름 (조회용)
    private String upperMenuNm;

    // 자식 메뉴 목록 (트리 구조용)
    private java.util.List<MenuVO> children;

    // 메뉴 경로 (ID 기반)
    private String menuPath;

    // 메뉴 경로 (이름 기반)
    private String menuPathNm;

    // 메뉴 정렬용 필드
    private String menuAllSort;
}
