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

import go.kr.project.common.model.PagingVO;
import lombok.*;

import java.util.List;

/**
 * packageName    : go.kr.project.system.auth.model
 * fileName       : AuthVO
 * author         : 시스템 관리자
 * date           : 2023-06-15
 * description    : 권한 부여 관련 통합 정보를 담는 VO 클래스
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2023-06-15        시스템 관리자       최초 생성
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class AuthVO extends PagingVO {

    // 역할 관련 필드
    private String roleId;
    private String roleNm;
    private String roleDc;
    
    // 그룹 관련 필드
    private String groupId;
    private String groupNm;
    private String groupDc;
    
    // 메뉴 관련 필드
    private String menuId;
    private String menuNm;
    private String menuDc;
    private String menuUrl;
    private String menuIcon;
    private Integer menuLevel;
    private Integer sortOrdr;
    private String upperMenuId;
    private String upperMenuNm;
    
    // 프로그램 관련 필드
    private String programId;
    private String programNm;
    private String programDc;
    private String programUrl;
    
    // 사용자 관련 필드
    private String userId;
    private String userNm;
    private String userAcnt;
    
    // 권한 부여 관련 필드
    private List<String> roleIds;      // 선택된 역할 ID 목록
    private List<String> menuIds;      // 선택된 메뉴 ID 목록
    private List<String> programIds;   // 선택된 프로그램 ID 목록
    private List<String> groupIds;     // 선택된 그룹 ID 목록
    
    // 공통 필드
    private String useYn;
    private String rgtr;
    private String mdfr;
}