package itn.let.uss.umt.service;
import java.util.List;
import java.util.Map;

import itn.let.fax.user.service.FaxGroupDataVO;
import itn.let.sym.site.service.SiteManagerVO;

/**
 * 사용자관리에 관한 인터페이스클래스를 정의한다.
 * @author 공통서비스 개발팀 조재영
 * @since 2009.04.10
 * @version 1.0
 * @see
 *
 * <pre>
 * << 개정이력(Modification Information) >>
 *
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *   2009.04.10  조재영          최초 생성
 *   2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
 *
 * </pre>
 */
public interface EgovUserManageService  {

	/**
	 * 입력한 사용자아이디의 중복여부를 체크하여 사용가능여부를 확인
	 * @param checkId 중복여부 확인대상 아이디
	 * @return 사용가능여부(아이디 사용회수 int)
	 * @throws Exception
	 */
	public int checkIdDplct(String checkId) throws Exception;

	/**
	 * 화면에 조회된 사용자의 정보를 데이터베이스에서 삭제
	 * @param checkedIdForDel 삭제대상 업무사용자아이디
	 * @throws Exception
	 */
	public void deleteUser(String checkedIdForDel) throws Exception;

	/**
	 * @param userManageVO 업무사용자 등록정보
	 * @return result 등록결과
	 * @throws Exception
	 */
	public String insertUser(UserManageVO userManageVO) throws Exception;

	/**
	 * 기 등록된 사용자 중 검색조건에 맞는 사용자의 정보를 데이터베이스에서 읽어와 화면에 출력
	 * @param emplyrId 상세조회대상 업무사용자 아이디
	 * @return userManageVO 업무사용자 상세정보
	 * @throws Exception
	 */
	public UserManageVO selectUser(String emplyrId) throws Exception;

	/**
	 * 기 등록된 특정 사용자의 정보를 데이터베이스에서 읽어와 화면에 출력
	 * @param userSearchVO 검색조건
	 * @return List<UserManageVO> 업무사용자 목록정보
	 * @throws Exception
	 */
	public List<?> selectUserList(UserDefaultVO userSearchVO) throws Exception;

	/**
	 * 기 등록된 특정 사용자목록의 전체수를 확인
	 * @param userSearchVO 검색조건
	 * @return 총사용자갯수(int)
	 * @throws Exception
	 */
	public int selectUserListTotCnt(UserDefaultVO userSearchVO) throws Exception;

	/**
	 * 화면에 조회된 사용자의 기본정보를 수정하여 항목의 정합성을 체크하고 수정된 데이터를 데이터베이스에 반영
	 * @param userManageVO 업무사용자 수정정보
	 * @throws Exception
	 */
	public void updateUser(UserManageVO userManageVO) throws Exception;

	/**
	 * 사용자정보 수정시 히스토리 정보를 추가
	 * @param userManageVO 업무사용자 수정정보
	 * @return result 등록결과
	 * @throws Exception
	 */
	public String insertUserHistory(UserManageVO userManageVO) throws Exception;

	/**
	 * 업무사용자 암호 수정
	 * @param userManageVO 업무사용자 수정정보(비밀번호)
	 * @throws Exception
	 */
	public void updatePassword(UserManageVO userManageVO) throws Exception;

	/**
	 * 사용자가 비밀번호를 기억하지 못할 때 비밀번호를 찾을 수 있도록 함
	 * @param passVO 업무사용자 암호 조회조건정보
	 * @return userManageVO 업무사용자 암호정보
	 * @throws Exception
	 */
	public UserManageVO selectPassword(UserManageVO passVO) throws Exception;
	
	
	public List<UserManageVO> selectUserIdAjax(UserManageVO userManageVO) throws Exception;
	
	public int selectAdminIdAjax(UserManageVO userManageVO) throws Exception;
	
	public List<UserManageVO> selectUserIdAjax2(UserManageVO userManageVO) throws Exception;
	
	public int selectUserPWAjax(UserManageVO userManageVO) throws Exception;
	
	public void updateUserPWAjax(UserManageVO userManageVO) throws Exception;

	public void updateUserSttusCode(UserManageVO userManageVO) throws Exception;

	public void deleteMemberSchedule(SiteManagerVO tempSiteManagerVO) throws Exception;

	public void deleteAdminLogSchedule(SiteManagerVO tempSiteManagerVO) throws Exception;

	public UserManageVO selectRecentSearchWord(UserManageVO userManageVO) throws Exception;
	
	// 관리자 모바일환경 비번 저장여부
	public UserManageVO selectAdminMobilePwSaveCheck(UserManageVO userManageVO) throws Exception;	

	public void insertUpdateSearchWord(UserManageVO userManageVO) throws Exception;
	
	public UserDefaultVO selectUserCount() throws Exception;

	public void updateLocInfo(UserManageVO userManageVO) throws Exception;

	public void insertLocInfo(UserManageVO userManageVO) throws Exception;
	
	public UserManageVO selectUserPw2Ajax(UserManageVO userManageVO) throws Exception;
	
	public UserManageVO selectAdminUserSmsCertCheck(UserManageVO userManageVO) throws Exception;
	
	public UserManageVO selectAddrRequestMsgAjax(UserManageVO userManageVO) throws Exception;
	
	//관리자가 사용자의 비밀번호를 변경해주는 서비스
	public UserManageVO selectUserPwByAdminAjax(UserManageVO userManageVO) throws Exception;
	
	//마이페이지 정보 조회
	public MberManageVO selectUserInfo(MberManageVO mberManageVO) throws Exception;
	
	//마이페이지 정보 수정
	public void updateUserInfo(MberManageVO mberManageVO) throws Exception;
	
	//마이페이지 발송결과 수정
	public void updateSandResul(MberManageVO mberManageVO) throws Exception;
	
	//마이페이지 발송결과 수정
	public void updateNoticet(MberManageVO mberManageVO) throws Exception;
	
	//마이페이지 회원탈퇴
	public void updateDeleteInfo(MberManageVO mberManageVO) throws Exception;
	
	//발신번호 관리 본인인증 DI 값 받아오기
	public String selectUserMblDnById(String mberId) throws Exception;

	void updateCrtfcDnValue(UserManageVO userManageVO) throws Exception;

	public int selectAdminDiChk(UserManageVO userManageVO);
	
	public boolean selectUserStatusInfo(String userId) throws Exception;

	// 결제 여부
	public int selectPayCountByUser(UserManageVO userManageVO);
	
	// 후불결제여부
	public int selectUserAfterPayInfo(String userId) throws Exception;
	
	public UserManageVO selectAdminSmsNoticeYn(UserManageVO userManageVO) throws Exception;

	public void updateUserAdminSmsNoticeYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception;
	
	public void updateUserVIPYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception;
	
	public UserManageVO selectSmishingYnUserInfo(UserManageVO userManageVO) throws Exception;
	
	// 스미싱의심 온/오프
	public void updateUserSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception;
	
	// 스미싱의심 온/오프 - 상세에서 단일로
	public void updateOneUserSmishingYn(UserManageVO userManageVO) throws Exception;
    
	// 후불제 여부 저장
	public void updateUserPrePaymentYn(UserManageVO userManageVO) throws Exception;
	
	// 월 충전 한도금액 저장
	public void updateUserAutoCash(UserManageVO userManageVO) throws Exception;
	
	// 후불제 회원 목록
	public List<UserManageVO> selectUserPrePaymentYnList(UserManageVO userManageVO) throws Exception;

	// 후불제 회원 월 충전 한도금액 만큼 Cash, Point 충전하기
	public void updateUserCashByAutoCash() throws Exception;

	public Map<String, Object> selectFaxSendList(FaxGroupDataVO faxGroupDataVO);	
    
}