package com.dbs.mplus.service.api;

import com.dbs.mplus.framework.api.model.ApiModel.ApiType;

/**
 * 대구파티마병원 API
 * 
 * 
 * 
 * @author siyoung.ahn
 *
 */
public enum MPlusApi {

	// 사용자관리 - 사용자 정보조회 
	USER_USERINFO_GETUSERINFO(ApiType.SQL, "/user/userinfo/getUserInfo", false), 	
	// 사용자관리 - 사용자 등록정보 조회 
	USER_USERINFO_GETLOGININFO(ApiType.SQL, "/user/userinfo/getLoginInfo", false),
	// 사용자 속성 조회 
	USER_USERINFO_GETUSERATTRLIST(ApiType.SQL, "/user/userinfo/getUserAttrList", true),
	// 사용자 정보 - 사용자 첫 화면 셋팅
	USER_USERINFO_UPDATEUSERSETUP(ApiType.WEB_SERVICE, "/user/userinfo/updateUserSetup", false),
	//USER_USE_ATTR_ORDER_UPDATE
	USER_USE_ATTR_ORDER_UPDATE(ApiType.SQL, "/user/userinfo/updateUseAttrOrder", false),
	// 사용자 정보 - 사용자 속성 추가
	USER_USERINFO_ADDUSERATTR(ApiType.SQL, "/user/userinfo/addUserAttr", false),
	// 사용자가 선택한 속성 순서 조회
	USER_USE_ATTR_GETUSEATTR(ApiType.SQL, "/user/userinfo/getUserAttrInfo", false),
	// 삭제시 순서 조정
	USER_USE_ATTR_UPDATEUSERATTRORDER(ApiType.SQL, "/user/userinfo/updateUserAttrOrder", false),
	/* 비슷한 api 구분선 ---------------------------------------------------------------------------------- */

	// 사용자관리 - 로그인 요청
	USER_LOGIN_LOGINSUBMIT(ApiType.WEB_SERVICE, "/user/login/loginSubmit", false),
	
	// 사용자관리 - 로그인실패횟수증가 
	USER_LOGIN_INCLOGINFAILCNT(ApiType.SQL, "/user/login/incLoginFailCnt", false), 
	// 사용자관리 - 로그인 실패횟수 초기화 
	USER_LOGIN_CLEARLOGINFAILCNT(ApiType.SQL, "/user/login/clearLoginFailCnt", false), 
	// 사용자관리 - 최근 로그인 조회 (배치) 
	USER_LOGIN_GETACCESSDAY(ApiType.SQL, "/user/login/getAccessDay", true), 
	/* 비슷한 api 구분선 ---------------------------------------------------------------------------------- */
	
	// 앱관리 - 버전확인 
	APP_CHECKAPPNAMEVERSION(ApiType.SQL, "/app/checkAppNameVersion", false), 
	/* 비슷한 api 구분선 ---------------------------------------------------------------------------------- */

	// 병원 일반 - 부서리스트
	HOSPITAL_GETDEPTLIST(ApiType.WEB_SERVICE, "/hospital/getDeptList", true),
	// 병원 일반 - 의사리스트
	HOSPITAL_GETDOCTORLIST(ApiType.WEB_SERVICE, "/hospital/getDoctorList", true),
	// 병원 일반 - 환자 정보 조회
	HOSPITAL_GETPATIENTINFO(ApiType.WEB_SERVICE, "/hospital/getPatientInfo", true),
	// 병원 일반 - 병동리스트
	HOSPITAL_GETWARDLIST(ApiType.WEB_SERVICE, "/hospital/getWardList", true),
	// 병원 일반 - 의사 서명 이미지 정보 조회
	HOSPITAL_GETSIGNIMAGE(ApiType.WEB_SERVICE, "/hospital/getSignImage", false),
	
	// 외래 - 외래 환자 리스트 조회
	OUT_GETOUTPATLIST(ApiType.WEB_SERVICE, "/out/getOutPatList", true),
	// 수술 - 수술 환자 리스트 조회
	OP_GETOPPATLIST(ApiType.WEB_SERVICE, "/op/getOpPatList", true), 
	// 응급 - 응급 환자 리스트 조회
	ER_GETERPATLIST(ApiType.WEB_SERVICE, "/er/getErPatList", true), 
	// 입원 - 입원 환자 리스트 조회
	IN_GETINPATLIST(ApiType.WEB_SERVICE, "/in/getInPatList", true),
	// 환자 검색
	SEARCH_GETSRPATLIST(ApiType.WEB_SERVICE, "/search/getSrPatList", true),
	
	// 동의서 세트 - 동의서 세트 조회
	CONSENT_SET_GETCONSENTSETLIST(ApiType.WEB_SERVICE, "/consent/set/getConsentSetList", true),
	// 동의서 세트 - 동의서 추가
	CONSENT_SET_SETUSERFORMSETLIST(ApiType.WEB_SERVICE, "/consent/set/setUserFormSetList", false),
	// 동의서 세트 - 동의서 삭제
	CONSENT_SET_DELUSERFORMSETLIST(ApiType.WEB_SERVICE, "/consent/set/delUserFormSetList", false),
	// 동의서 - 동의서 리스트 조회
	CONSENT_GETCONSENTLIST(ApiType.WEB_SERVICE, "/consent/getConsentList", true),
	// 동의서 - 주치의별 동의서 리스트 조회
	CONSENT_GETUNFINISHEDLISTPERDOCTOR(ApiType.WEB_SERVICE, "/consent/getUnfinishedListPerDoctor", true),
	// 동의서 - 동의서 검색
	CONSENT_GETCONSENTBYSEARCH(ApiType.WEB_SERVICE, "/consent/getConsentBySearch", true),
	// 동의서 - 동의서 카테고리 조회
	CONSENT_GETCATEGORYFORDROPDOWN(ApiType.WEB_SERVICE, "/consent/getCategoryForDropdown", true),
	// 동의서 - OCR Tag 획득
	CONSENT_GETOCRTAG(ApiType.WEB_SERVICE, "/consent/getOcrTag", false),
	// 동의서 - 동의서 이미지 정보 조회
	CONSENT_GETCONSENTIMAGE(ApiType.WEB_SERVICE, "/consent/getConsentImage", true),
	// 동의서 - 동의서 상태 체크
	CONSENT_CHECKCONSENTSTATE(ApiType.WEB_SERVICE, "/consent/checkConsentState", false),
	
	// 동의서 저장 - 동의서 데이터 임시 저장
	CONSENT_SAVE_SAVETEMPDATA(ApiType.WEB_SERVICE, "/consent/save/saveTempData", false),
	// 동의서 저장 - 동의서 데이터 완료 저장
	CONSENT_SAVE_SAVECOMPLETE(ApiType.WEB_SERVICE, "/consent/save/saveComplete", false),
	// 동의서 저장  - 기왕력 데이터 저장
	CONSENT_SAVE_SAVEMEDICALHISTORY(ApiType.WEB_SERVICE, "/consent/save/saveMedicalHistory", false),
	// 동의서 저장 - 파일 이름 가져오기
	CONSENT_SAVE_GETFILENAME(ApiType.WEB_SERVICE, "/consent/save/getFileName", false),
	// 동의서 저장 - 동의서 저장 데이터 입력
	CONSENT_SAVE_SAVEIMAGEUPLOADINFO(ApiType.WEB_SERVICE, "/consent/save/saveImageUploadInfo", false),
	// 동의서 저장 - 동의서 서명 데이터 입력
	CONSENT_SAVE_SAVEIMAGESIGNINFO(ApiType.WEB_SERVICE, "/consent/save/saveImageSignInfo", false),
	// 동의서 저장 - 동의서 삭제 데이터 입력
	CONSENT_SAVE_SAVEDELETE(ApiType.WEB_SERVICE, "/consent/save/saveDelete", false),
	
	
	/*------------------------------------- 현재 안쓰는 API들  ----------------------------------------------*/
	// 정리 예정 ?
	// 사용자관리 - 비밀번호 변경 
	USER_PASSWORD_RESETPWD(ApiType.SQL, "/user/password/resetPWD", false), 
	// 사용자관리 - 비밀번호 변경 
	USER_PASSWORD_TEMPRESETPWD(ApiType.SQL, "/user/password/tempResetPWD", false), 
	// 사용자관리 - 비밀번호 확인 
	USER_PASSWORD_CHECKPWD(ApiType.SQL, "/user/password/checkPWD", false), 
	/* 비슷한 api 구분선 ---------------------------------------------------------------------------------- */
	
	// PUSH - 탈퇴알림 
	HELPERPUSH_WITHDRAWAL(ApiType.SQL, "/helperpush/withdrawal", false),
	
	// 토큰관리 - 디바이스 토큰저장 
	USER_TOKEN_SAVEDEVICETOKEN(ApiType.SQL, "/user/tokens/saveDeviceToken", false), 
	// 토큰관리 - 디바이스 토큰확인 
	USER_TOKEN_CHECKDEVICETOKEN(ApiType.SQL, "/user/tokens/checkDeviceToken", false), 	
	// 토큰관리 - 사용자 토큰조회 
	USER_TOKEN_GETUSERDEVICETOKENS(ApiType.SQL, "/user/tokens/getUserDeviceTokens", true), 
	
	
	/* 비슷한 api 구분선 ---------------------------------------------------------------------------------- */
	
	// 토큰기준으로 정보 가져오기 
	USER_USERINFO_GETDEVICETOKENUSERLIST(ApiType.SQL, "/user/userinfo/getDeviceTokenUserList", true), 
	// 특정 토큰 삭제 
	USER_USERINFO_DELETEDEVICETOKENUSER(ApiType.SQL, "/user/userinfo/deleteDeviceTokenUser", false);

	/* 비슷한 api 구분선 ---------------------------------------------------------------------------------- */
	
	
	private ApiType apiType; 
	private String apiUrl; 
	// 결과가 list인지 여부 
	private boolean bList; 

	/**
	 * 생성자 
	 * @param apiType
	 * @param apiUrl
	 * @param bList 결과가 리스트인지 여부 
	 */
	private MPlusApi(ApiType apiType, String apiUrl, boolean bList) {
		this.apiType = apiType; 
		this.apiUrl = apiUrl; 
		this.bList = bList; 
	}
	/**
	 * Api유형 
	 * @return
	 */
	public ApiType getApiType() { 
		return this.apiType; 
	}
	/**
	 * Api URL 
	 * @return
	 */
	public String getApiUrl() { 
		return this.apiUrl; 
	}
	/**
	 * 결과가 list형인지 여부 
	 * @return
	 */
	public boolean isList() { 
		return this.bList; 
	}
	
	@Override 
	public String toString() { 
		StringBuilder builder = new StringBuilder(); 
		
		builder.append(this.name()).append(", "); 
		builder.append(this.apiType).append(", "); 
		builder.append(this.bList ? "LIST" : "MAP").append(", "); 
		builder.append(this.apiUrl);
		
		return builder.toString(); 
	}
}
