package com.takensoft.cms.menu.service;

import com.takensoft.cms.author.vo.AuthorVO;
import com.takensoft.cms.contsType.vo.ContsTypeVO;
import com.takensoft.cms.menu.vo.MenuRequest;
import com.takensoft.cms.menu.vo.MenuStsfdgVO;
import com.takensoft.cms.menu.vo.MenuVO;
import com.takensoft.cms.menu.vo.SysMenuVO;
import com.takensoft.common.HierachyVO;

import java.util.HashMap;
import java.util.List;

/**
 * @author  : takensoft
 * @since   : 2024.04.01
 *
 * 메뉴 정보 관련 인터페이스
 */
public interface MenuService {
    /**
     * @author takensoft
     * @since 2024.04.08
     * 메뉴 등록
     */
    public int menuSave(MenuVO menuVO) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.08
     * 전체 메뉴 조회
     */
    public List<MenuVO> findAll() throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.08
     * 하위 메뉴 조회
     */
    public List<MenuVO> findByChildMenu(String menuId) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.08
     * 메뉴 조회
     */
    public MenuVO findByMenu(String menuId) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.09
     * 메뉴 수정
     */
    public int MenuUpdate(MenuVO menuVO) throws Exception;

    /************************************** Hierachy 전용 **************************************/
    /**
     * @author takensoft
     * @since 2024.04.25
     * 최상위 코드 조회
     */
    public List<HierachyVO> findByTopNode() throws Exception;
    /**
     * @author takensoft
     * @since 2024.04.25
     * 하위 코드 조회
     */
    public List<HierachyVO> findChildNode(String id) throws Exception;
    /************************************** Hierachy 전용 **************************************/

    /**
     * @author 박정하
     * @since 2024.04.29
     * 메뉴 정보 삭제
     */
    public int menuDelete(MenuVO menuVO) throws Exception;
    /**
     * @author takensoft
     * @since 2024.05.09
     * 메뉴 조회(시스템용)
     */
    public List<SysMenuVO> findByMenuWithRouter(MenuRequest menuRequest) throws Exception;

    /**
     * @author 박정하
     * @since 2024.05.09
     * 메뉴 목록 수정
     */
    public int updateList(List<HierachyVO> deptList) throws Exception;
    /**
     * @author 박정하
     * @since 2024.05.10
     * 하위 메뉴 수정
     */
    public int updateChildNode(List<HierachyVO> childList, MenuVO menuVO) throws Exception;
    /**
     * @author 방선주
     * @since 2024.06.07
     * 게시판 관리에서 게시판 삭제 시 게시판 메뉴 미노출로 변경
     */
    public int bbsMngMenuDelete(MenuVO menuVO) throws Exception;
}
