package com.takensoft.cms.mber.dao;

import com.takensoft.cms.mber.dto.AdmMbrDTO;
import com.takensoft.cms.mber.dto.JoinDTO;
import com.takensoft.cms.mber.vo.MberAuthorVO;
import com.takensoft.cms.mber.vo.MberVO;
import com.takensoft.common.Pagination;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;

import java.util.HashMap;
import java.util.List;
/**
 * @author 박정하
 * @since 2024.06.21
 * @modification
 *     since    |    author    | description
 *  2024.06.21  |    박정하     | 최초 등록
 *
 * 회원정보 관련 Mapper
 */
@Mapper("admMbrDAO")
public interface AdmMbrDAO {

    /**
     * @param pagination - 페이징 정보
     * @return int - 회원정보 목록 갯수 결과
     *
     * 회원정보 목록 갯수 조회
     */
    public int mbrListCnt(Pagination pagination);

    /**
     * @param pagination - 페이징 정보
     * @return List<AdmMbrDTO> - 회원정보 관련 목록 조회 결과
     *
     * 회원정보 목록 조회
     */
    public List<AdmMbrDTO> mbrList(Pagination pagination);

    /**
     * @param mbrId - 회원 아이디
     * @return AdmMbrDTO - 회원정보 상세 조회 결과
     *
     * 회원정보 상세 조회
     */
    public AdmMbrDTO mbrDetail(String mbrId);

    /**
     * @param admMbrDTO - 회원정보 관련 DTO
     * @return int - 회원정보 수정 결과
     *
     * 회원정보 수정
     */
    public int updateMbr(AdmMbrDTO admMbrDTO);

    /**
     * @param mbrId - 회원 아이디
     * @return int - 회원정보 권한 목록 삭제 결과
     *
     * 회원정보 권한 목록 삭제 (mbrId 사용)
     */
    public int deleteAuthorListByMbrId(String mbrId);

    /**
     * @param mberAuthorVO - 사용자 권한 관련 VO
     * @return int - 회원 권한 목록 삭제 결과
     *
     * 회원 권한 목록 삭제 (mbrId 사용)
     */
    public int insertAuthor(MberAuthorVO mberAuthorVO);

    /**
     * @param joinDTO - 회원 가입 관련 DTO
     * @return int - 회원정보 등록 결과
     *
     * 회원정보 등록
     */
    public int mbrInsert(JoinDTO joinDTO);

    /**
     * @param mbrVO - 회원 정보 관련 VO
     * @return String - 로그인 아이디
     *
     * 아이디 찾기 (로그인 아이디)
     */
    public String lgnIdSearch(MberVO mbrVO);

    /**
     * @param admMbrDTO - 회원정보 관련 DTO
     * @return String - 회원 아이디
     *
     * 아이디 찾기 (회원 아이디)
     */
    public String mbrIdSearch(AdmMbrDTO admMbrDTO);
}