package incheon.uis.ums.service;

import java.util.List;

import incheon.ags.ias.comCd.vo.ComCdVO;
import incheon.com.security.vo.LoginVO;

/**
 * UIS 사용자 권한 검증 Service
 *
 * 로그인객체가 갖고 있는 권한 코드를 이용해 접근 권한을 확인
 * 통합관리자 / UIS 시스템 업무 관리자 / 군구별 편집자 / 일반 사용자
 *
 */
public interface UisAccessService {

    /**
     * 접근 가능한 UIS 1depth 카테고리 코드 목록 조회
     * @return UIS 카테고리 코드
     */
    List<ComCdVO> getAccessibleRootGroupList();

    /**
     * groupCd로 사용자 접근 가능 카테고리(groupCd) 여부 확인
     * @param categoryId
     * @return
     */
    boolean hasAuthrtAccessByGroupCd(String groupCd);

    /**
     * prefix 여부 상관 없이 typeId로 해당 테이블 카테고리(groupCd) 찾기
     * @param categoryId
     * @return
     */
    boolean hasAuthrtAccessByTypeId(String typeId);

    /**
     * 기능 - edit 권한 여부 체크
     * @return
     */
    boolean hasEditAccess();

    /**
     * 기능 - 데이터 내보내기 권한 여부 체크
     * @return
     */
    boolean hasExportAccess();

    /**
     * 특정 카테고리(groupCd) edit 권한 체크
     * @return
     */
    boolean hasEditAccessByTypeId(String typeId);

    /**
     * 최상위 관리자 여부 확인
     * @param loginVO
     * @return
     */
    public boolean isSuperAdmin(LoginVO loginVO);

    /**
     * 
     * UIS 도시기반시설 관리시스템 관리자 여부 확인
     * @param loginVO
     * @return
     */
    public boolean isUisAdmin(LoginVO loginVO);

    /**
     * 특정 카테고리(groupCd) edit 가능 여부 체크
     * @param typeId
     * @return
     */
    boolean hasEditAbleByTypeId(String typeId);

}
