package com.takensoft.cms.dept.service;

import com.takensoft.cms.dept.vo.DeptMbrVO;
import com.takensoft.cms.dept.vo.DeptVO;
import com.takensoft.common.HierachyVO;

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

/**
 * @author  : takensoft
 * @since   : 2024.04.09
 *
 * 부서 정보 관련 인터페이스
 */
public interface DeptService {
    /**
     * @author takensoft
     * @since 2024.04.25
     * 부서 등록
     */
    public HashMap<String, Object> deptSave(DeptVO deptVO) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.29
     * 부서 사용자 등록
     */
    public int deptMbrSave(DeptMbrVO deptMbrVO) 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 takensoft
     * @since 2024.04.26
     * 부서 정보 조회
     */
    public Map<String, Object> findByDept(HashMap<String, Object> params) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.26
     * 부서 정보 수정
     */
    public int deptUpdate(DeptVO deptVO) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.26
     * 부서 정보 삭제
     */
    public int deptDelete(DeptVO deptVO) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.26
     * 부서 사용자 삭제
     */
    public int deptMbrDelete(List<DeptMbrVO> deptMbrList) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.29
     * 부서에 등록되지 않는 사용자 조회
     */
    public Map<String, Object> findByMbr(Map<String, String> params) 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, DeptVO upDeptVO) throws Exception;
}