package incheon.com.menu.vo;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.ArrayList;
import java.util.List;

/**
 * 헤더 메뉴 VO
 * 서버사이드 렌더링용 간소화된 메뉴 정보
 */
@Getter
@Setter
@ToString
public class HeaderMenuVO {
    /**
     * 메뉴 코드
     */
    private String menuCd;

    /**
     * 메뉴명
     */
    private String menuNm;

    /**
     * 메뉴 URL 주소
     */
    private String menuUrlAddr;

    /**
     * 아이콘 경로
     */
    private String iconPathNm;

    /**
     * 메뉴 정렬 순서
     */
    private Integer menuSortSeq;

    /**
     * 상위 메뉴 코드
     */
    private String upMenuCd;

    /**
     * 하위 메뉴 목록 (2-depth)
     */
    private List<HeaderMenuVO> children = new ArrayList<>();

    /**
     * 첫 번째 리프 메뉴 URL (menuUrlAddr가 없을 때 사용)
     * 하위 메뉴 트리를 탐색하여 찾은 첫 번째 리프 노드의 URL
     */
    private String firstLeafUrl;

    /**
     * 하위 메뉴 존재 여부
     */
    public boolean hasChildren() {
        return children != null && !children.isEmpty();
    }
}
