package com.madeu.crm.settings.medicalcategory.mapper;

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

import org.apache.ibatis.annotations.Mapper;

import com.madeu.crm.settings.medicalcategory.dto.MedicalCategoryDTO;

@Mapper
public interface MedicalCategoryMapper {

    /**
     * 진료유형 리스트 전체 또는 조건 조회
     * 
     * @param paramMap (store_pid, list_use 등 검색조건)
     * @return 카테고리 계층 리스트
     */
    List<Map<String, Object>> getMedicalCategoryList(HashMap<String, Object> paramMap);

    /**
     * 특정 카테고리 상세 정보 조회
     * 
     * @param paramMap (pid)
     * @return 카테고리 상세
     */
    Map<String, Object> getMedicalCategory(HashMap<String, Object> paramMap);

    /**
     * 카테고리 신규 등록
     * 
     * @param dto
     * @return
     */
    int insertMedicalCategory(MedicalCategoryDTO dto);

    /**
     * 카테고리 정보 수정
     * 
     * @param dto
     * @return
     */
    int updateMedicalCategory(MedicalCategoryDTO dto);

    /**
     * 카테고리 삭제 처리 (실제 삭제 or 논리적 삭제(list_use='n'))
     * 
     * @param paramMap (pid)
     * @return
     */
    int deleteMedicalCategory(HashMap<String, Object> paramMap);

    /**
     * 하위 카테고리 목록 존재 여부/수량 확인 (삭제 시 방어 로직 등에 사용)
     * 
     * @param paramMap (divi_parent)
     * @return
     */
    int getChildCategoryCount(HashMap<String, Object> paramMap);

    /**
     * 카테고리 정보 부분 수정 (인라인 에디팅)
     * 
     * @param paramMap
     * @return
     */
    int updatePartialMedicalCategory(HashMap<String, Object> paramMap);

    /**
     * 거래처 목록 조회 (Depth 3 매핑용)
     * 
     * @return 거래처 리스트
     */
    List<Map<String, Object>> getCustList(HashMap<String, Object> paramMap);
}
