/****************************************************************************
* 직원 정보 상세 조회
****************************************************************************/
function fn_selectMember(){
	let formData = new FormData();
	formData.append("menuClass", menuClass);
	formData.append("muMemberId", muMemberId);
	
	$.ajax({
		url: encodeURI('/webmember/selectMember.do'),
		data: formData,
		dataType: "json",
		processData: false,
		contentType: false,
		type: 'POST',
		async: true,
		success: function(data){
			if('0'==data.msgCode){
				$("#memberCode").val(data.rows[0].memberCode);
				$("#loginId").val(data.rows[0].loginId);
				$("#memberName").val(data.rows[0].memberName);
				$("#phoneNumber").val(data.rows[0].phoneNumber);
				$("#email").val(data.rows[0].email);
				$("#orderNumber").val(data.rows[0].orderNumber);
				$("#btnUpdateMemberStatus").data('status','N'===data.rows[0].status?'Y':'N');
				$("input[name='type'][value='"+data.rows[0].type+"']").prop("checked", true);
				
				$('#li_'+data.rows[0].muGroupId).click();
				$('#li_'+data.rows[0].muDutyId).click();
				$('#li_'+data.rows[0].muAuthId).click();

				if('N'===data.rows[0].status){
					$('#btnUpdateMemberStatus').text("활성화").css('background','#3985EA');
				}
			}
			else{
				modalEvent.danger("조회 오류", data.msgDesc);
			}
		},
		error : function(xhr, status, error) {
			modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
		},
		beforeSend:function(){
			
		},
		complete:function(){
			
		}
	});
}

/****************************************************************************
* 직원 정보 수정
****************************************************************************/
function fn_updateMember(){
	let loginId          = $("#loginId").val();
	let memberName       = $("#memberName").val();
	let phoneNumber      = $("#phoneNumber").val();
	let email            = $("#email").val();
	let type             = $("input[name='type']:checked").val();
	let muGroupId        = $("#muGroupId").val();
	let muDutyId         = $("#muDutyId").val();
	let muAuthId         = $("#muAuthId").val();
	let orderNumber      = $("#orderNumber").val();

	let reg_email    = /^([0-9a-zA-Z_\.-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}$/;
	let reg_tel      = /^[0-9]{8,11}$/;
	let reg_password = /^(?=.*[a-zA-Z])(?=.*\d)/;
	
	
	if("Y"!=updateUseYn){
		modalEvent.warning("수정", "수정 권한이 없습니다.");
		return false;
	}
	
	if(true != fn_emptyCheck(muMemberId)){
		modalEvent.warning("수정", "직원 정보가 없습니다.");	
		return;
	}
	
	if(true != fn_emptyCheck(loginId)){
		modalEvent.warning("수정", "아이디 정보가 없습니다.");	
		return;
	}
	else{
		if(true != fn_lengthCheck(loginId, 255)) {
			modalEvent.warning("수정", "아이디 정보는 255자를 넘을 수 없습니다.");	
			return;
		}
	}
	
	if(true != fn_emptyCheck(memberName)){
		modalEvent.warning("수정", "이름을 입력하세요");
		return;
	}
	else{
		if(true != fn_lengthCheck(memberName, 35)) {
			modalEvent.warning("수정", "이름 정보는 35자를 넘을 수 없습니다.");
			return;
		}
	}
	
	if(true != fn_emptyCheck(phoneNumber)){
		modalEvent.warning("수정", "연락처 정보를 입력하세요");
		return;
	}
	else if(reg_tel.test(phoneNumber) != true){
		modalEvent.warning("수정", "연락처 정보는 숫자 8~11자리여야 합니다");
		return;
	}
	else{
		phoneNumber = phoneNumber.replace("-", "");
	}
	
	if(true != fn_emptyCheck(email)){
		modalEvent.warning("수정", "이메일 정보를 입력하세요");
		return;
	}
	else if(!reg_email.test(email)) {
		modalEvent.warning("수정", "이메일 정보를 형식에 맞게 입력해주세요");
		return ;
	}
		
	if(true != fn_emptyCheck(type)){
		modalEvent.warning("등록", "유형 정보를 입력하세요");
		return;
	}
	
	if(true != fn_emptyCheck(muGroupId)){
		modalEvent.warning("수정", "조직 정보를 선택하세요");
		return;
	}
	
	if(true != fn_emptyCheck(muDutyId)){
		modalEvent.warning("수정", "직무 정보를 선택하세요");
		return;
	}
	
	if(true != fn_emptyCheck(muAuthId)){
		modalEvent.warning("수정", "권한그룹 정보를 선택하세요");
		return;
	}
	if(true != fn_emptyCheck(orderNumber)){
		modalEvent.warning("수정", "정렬순서를 입력하세요");
		return;
	}

	modalEvent.info("수정", "직원 정보를 수정하시겠습니까?", function(){
		let formData = new FormData();
		formData.append("menuClass", menuClass);
		formData.append("muMemberId", muMemberId);
		formData.append("loginId", loginId);
		formData.append("memberName", memberName);
		formData.append("phoneNumber", phoneNumber);
		formData.append("email", email);
		formData.append("muGroupId", muGroupId);
		formData.append("muDutyId", muDutyId);
		formData.append("muAuthId", muAuthId);
		formData.append("type", type);
		formData.append("orderNumber", orderNumber);

		$.ajax({
			url: encodeURI('/webmember/updateMember.do'),
			data: formData,
			dataType: "json",
			processData: false,
			contentType: false,
			type: 'POST',
			async: true,
			success: function(data){
				if('0'==data.msgCode){
					modalEvent.success("비활성화 성공", data.msgDesc, function(){
						fn_memberOk();
					});
				}
				else{
					modalEvent.danger("비활성화 오류", data.msgDesc);
				}
			},
			error : function(xhr, status, error) {
				modalEvent.danger("비활성화 오류", "비활성화 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
			},
			beforeSend:function(){
				
			},
			complete:function(){
				
			}
		});
	});
}

/****************************************************************************
* 직원 비활성화
****************************************************************************/
function fn_updateMemberStatus(){
	if("Y"!=updateUseYn){
		modalEvent.warning("", "수정 권한이 없습니다.");
		return false;
	}
	
	if(!muMemberId){
		modalEvent.warning("", "직원 정보가 없습니다.");
		return false;
	}

	modalEvent.info("비활성화", `선택한 직원의 계정을 ${$("#btnUpdateMemberStatus").text()}하시겠습니까?`, function(){
		let formData = new FormData();
		formData.append("menuClass", menuClass);
		formData.append("selectId", muMemberId);
		formData.append("status", $("#btnUpdateMemberStatus").data('status'));

		$.ajax({
			url: encodeURI('/webmember/updateMemberStatus.do'),
			data: formData,
			dataType: "json",
			processData: false,
			contentType: false,
			type: 'POST',
			async: true,
			success: function(data){
				if('0'==data.msgCode){
					modalEvent.success("비활성화 성공", data.msgDesc, function(){
						fn_memberOk();
					});
				}
				else{
					modalEvent.danger("비활성화 오류", data.msgDesc);
				}
			},
			error : function(xhr, status, error) {
				modalEvent.danger("비활성화 오류", "비활성화 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
			},
			beforeSend:function(){
				
			},
			complete:function(){
				
			}
		});
	});
}

/****************************************************************************
* 조직 조회
****************************************************************************/
function fn_setGroupCombo(){
	// 대상
	const target = $("#muGroupId").siblings("ul.select_option_list");
	
	// 데이터 조회
	let comboData = fn_selectListGroupOption();
	
	// 조회 데이터 셋팅
	let comboHTML = '';
	for(let i = 0; i < comboData.length; i++){
		let muGroupId     = comboData[i].muGroupId;
		let groupName     = comboData[i].groupName;
		
		comboHTML += '<li id="li_'+muGroupId+'" class="option_list_item">'+groupName+'</li>';
	}
	target.empty().html(comboHTML).trigger("create");
	
	// 콤보 이벤트
	target.find("li.option_list_item").click(function () {
		let selectIdArr = $(this).prop("id").split('_');
		let selectId    = selectIdArr[1];
		let selectName  = $(this).text();
		
		$(this).parent().siblings("button").text(selectName);
		$(this).parent().siblings("input").val(selectId);
	});
}

/****************************************************************************
* 직무 옵션 조회
****************************************************************************/
function fn_setDutyCombo(){
	// 대상
	const target = $("#muDutyId").siblings("ul.select_option_list");
	
	// 초기화
	target.siblings("button").text("직무");
	target.siblings("input").val('');
	
	// 데이터 조회
	let comboData = fn_selectListDutyOption();
	
	// 조회 데이터 셋팅
	let comboHTML = '';
	for(let i = 0; i < comboData.length; i++){
		let muDutyId     = comboData[i].muDutyId;
		let dutyName     = comboData[i].dutyName;
		
		comboHTML += '<li id="li_'+muDutyId+'" class="option_list_item">'+dutyName+'</li>';
	}
	target.empty().html(comboHTML).trigger("create");
	
	// 콤보 이벤트
	target.find("li.option_list_item").click(function () {
		let selectIdArr = $(this).prop("id").split('_');
		let selectId    = selectIdArr[1];
		let selectName  = $(this).text();
		
		$(this).parent().siblings("button").text(selectName);
		$(this).parent().siblings("input").val(selectId);
	});
}

/****************************************************************************
* 권한 옵션 조회
****************************************************************************/
function fn_setAuthCombo(){
	// 대상
	const target = $("#muAuthId").siblings("ul.select_option_list");
	
	// 데이터 조회
	let comboData = fn_selectListAuthOption();
	
	// 조회 데이터 셋팅
	let comboHTML = '';
	for(let i = 0; i < comboData.length; i++){
		let muAuthId     = comboData[i].muAuthId;
		let authName     = comboData[i].authName;
		
		comboHTML += '<li id="li_'+muAuthId+'" class="option_list_item">'+authName+'</li>';
	}
	target.empty().html(comboHTML).trigger("create");
	
	// 콤보 이벤트
	target.find("li.option_list_item").click(function () {
		let selectIdArr = $(this).prop("id").split('_');
		let selectId    = selectIdArr[1];
		let selectName  = $(this).text();
		
		$(this).parent().siblings("button").text(selectName);
		$(this).parent().siblings("input").val(selectId);
	});
}

function fn_memberOk(){
	let pagingParam = "?menuClass="+menuClass;
	pagingParam    += "&memberSearchKeywordParam="+memberSearchKeywordParam;
	pagingParam    += "&memberSort="+memberSort;
	pagingParam    += "&memberDir="+memberDir;
	pagingParam    += "&memberStart="+memberStart;
	pagingParam    += "&memberLimit="+memberLimit;
	pagingParam    += "&memberSearchGroupId="+memberSearchGroupId;
	pagingParam    += "&memberSearchDutyId="+memberSearchDutyId;
	pagingParam    += "&memberSearchAuthId="+memberSearchAuthId;
	
	fn_leftFormAction("/webmember/selectListMemberIntro.do"+pagingParam);
}

function fn_memberCancel(){
	let pagingParam = "?menuClass="+menuClass;
	pagingParam    += "&memberSearchKeywordParam="+memberSearchKeywordParam;
	pagingParam    += "&memberSort="+memberSort;
	pagingParam    += "&memberDir="+memberDir;
	pagingParam    += "&memberStart="+memberStart;
	pagingParam    += "&memberLimit="+memberLimit;
	pagingParam    += "&memberSearchGroupId="+memberSearchGroupId;
	pagingParam    += "&memberSearchDutyId="+memberSearchDutyId;
	pagingParam    += "&memberSearchAuthId="+memberSearchAuthId;
	
	fn_leftFormAction("/webmember/selectListMemberIntro.do"+pagingParam);
}

function fn_updateMemberPassword(){
	if(true != fn_emptyCheck(muMemberId)){
		modalEvent.warning("수정", "직원 정보가 없습니다.");	
		return;
	}
	
	if("Y"==updateUseYn){
		let reqParam =  {
			"muMemberId" : muMemberId
		};
		
		// 수정가능
		memberPasswordModal.popup(function(obj, reqParam) {
			fn_memberOk();
		}, reqParam);
	}
	else{
		modalEvent.warning("수정", "수정 권한이 없습니다.");
		return;
	}
}

/****************************************************************************
* 페이지 init
****************************************************************************/
function fn_pageInit(){
	// 뒤로가기 버튼 이벤트 및 노출
	$(".back").removeAttr("onclick");
	$(".back").attr("onclick", "fn_memberCancel();");
	$(".back").show();

	$('#orderNumber').on('input', function() {
		// 입력된 키가 숫자가 아닌 경우 입력을 막음
		this.value = this.value.replace(/\D/g, '');
	});

	// 조직 조회
	fn_setGroupCombo();
	
	// 직무 조회
	fn_setDutyCombo();
	
	// 권한 조회
	fn_setAuthCombo();
	
	fn_selectMember();
}

/****************************************************************************
* 페이지 event
****************************************************************************/
function fn_pageEvent(){
	// 비밀번호 재설정 버튼
	$("#btnUpdateMemberPassword").click(function () {
		fn_updateMemberPassword();
	});
	
	// 저장 버튼
	$("#btnUpdateMember").click(function () {
		fn_updateMember();
	});
	
	// 비활성화 버튼
	$("#btnUpdateMemberStatus").click(function () {
		fn_updateMemberStatus();
	});
}

$(function(){
	// 페이지 init
	fn_pageInit();
	
	// 페이지 event
	fn_pageEvent();
});