package go.kr.project.login.model;

import go.kr.project.system.group.model.GroupVO;
import go.kr.project.system.menu.model.MenuVO;
import go.kr.project.system.role.model.RoleVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;
import java.util.List;

/**
 * packageName    : go.kr.project.login.model
 * fileName       : SessionVO
 * author         : 시스템 관리자
 * date           : 2025-05-13
 * description    : 세션 정보를 담는 VO 클래스
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2025-05-13        시스템 관리자       최초 생성
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class SessionVO implements Serializable {

    private static final long serialVersionUID = 1L;

    // 사용자 정보
    private LoginUserVO user;

    // 그룹 정보
    private GroupVO group;

    // 역할 정보 목록
    private List<RoleVO> roles;

    // 메뉴 정보 목록 (트리 구조)
    private List<MenuVO> menus;

    private List<MenuVO> treeMenus;

    // 방문자 역할 여부
    private boolean isVisitor = false;

    // 로그인 여부
    private boolean isLogin = false;

    // 시스템 관리자 여부
    private boolean isSystem = false;

    // 세션 생성 시간
    private long creationTime;

    // 마지막 접근 시간
    private long lastAccessedTime;
}