package itn.let.uss.umt.web;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.ComDefaultCodeVO;
import itn.com.cmm.LoginVO;
import itn.com.cmm.service.EgovCmmUseService;
import itn.com.utl.fcc.service.EgovStringUtil;
import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.uss.umt.service.EgovMberCmpHstService;
import itn.let.uss.umt.service.MberCmpHstVO;

@Controller
public class EgovMberCmpHstController {

	@Resource(name = "egovMberCmpHstService")
	private EgovMberCmpHstService egovMberCmpHstService;

	@Resource(name = "EgovCmmUseService")
	private EgovCmmUseService cmmUseService;		
	
	@Resource(name = "MjonMsgDataService")
	private MjonMsgDataService mjonMsgDataService;	
	
	@Resource(name = "mjonMsgService")
	private MjonMsgService mjonMsgService;
	
	
	/**
	 * 기원회원 신청 목록 관리자페이지
	 * @param mberCmpHstVO
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/uss/umt/user/EgovMberCmpHstList.do")
	public String egovMberCmpHstList(@ModelAttribute("searchVO") MberCmpHstVO mberCmpHstVO,
			HttpServletRequest request ,
			ModelMap model) throws Exception {
		
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		
    	String hstSttus = request.getParameter("hstSttus");
    	model.addAttribute("hstSttus", hstSttus);		
		
		//기업유형
		ComDefaultCodeVO voComCode = new ComDefaultCodeVO();
		voComCode.setCodeId("ITN033");
		model.addAttribute("bizTypeList", cmmUseService.selectCmmCodeDetail(voComCode));		
		
		// 유형 코드조회
		voComCode.setCodeId("ITN048");
		model.addAttribute("hstTypeList", cmmUseService.selectCmmCodeDetail(voComCode));		

		// 처리상태 코드조회
		voComCode.setCodeId("ITN049");
		model.addAttribute("hstSttusList", cmmUseService.selectCmmCodeDetail(voComCode));		
		
		if(mberCmpHstVO.getPageUnit() != 10) {
			mberCmpHstVO.setPageUnit(mberCmpHstVO.getPageUnit());
		}
		
		/** paging */
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(mberCmpHstVO.getPageIndex());
		paginationInfo.setRecordCountPerPage(mberCmpHstVO.getPageUnit());
		paginationInfo.setPageSize(mberCmpHstVO.getPageSize());
		
		mberCmpHstVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
		mberCmpHstVO.setLastIndex(paginationInfo.getLastRecordIndex());
		mberCmpHstVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
		
		if("".equals(mberCmpHstVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
			mberCmpHstVO.setSearchSortCnd("frstRegistPnttm");
			mberCmpHstVO.setSearchSortOrd("desc");
		}
		
		List<MberCmpHstVO> mberCmpHstList = egovMberCmpHstService.selectMberCmpHstListByType(mberCmpHstVO);
		int totCnt = 0;
		
		 if(mberCmpHstList.size() > 0) {
				totCnt = mberCmpHstList.get(0).getTotCnt();
			}
		model.addAttribute("mberCmpHstList", mberCmpHstList);
		paginationInfo.setTotalRecordCount(totCnt);
		model.addAttribute("paginationInfo", paginationInfo);
		
		return "cmm/uss/umt/EgovMberCmpHstListByType";
	}
	
	/**
	 * 기원회원 신청 목록 전체 내역 팝업
	 * @param mberCmpHstVO
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/uss/umt/user/EgovMberCmpHstListPop.do")
	public String egovMberCmpHstListPop(@ModelAttribute("searchVO") MberCmpHstVO mberCmpHstVO,
			HttpServletRequest request ,
			ModelMap model) throws Exception {
		
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		
		
		//기업유형
		ComDefaultCodeVO voComCode = new ComDefaultCodeVO();
		voComCode.setCodeId("ITN033");
		model.addAttribute("bizTypeList", cmmUseService.selectCmmCodeDetail(voComCode));		
		
		// 유형 코드조회
		voComCode.setCodeId("ITN048");
		model.addAttribute("hstTypeList", cmmUseService.selectCmmCodeDetail(voComCode));		
		
		// 처리상태 코드조회
		voComCode.setCodeId("ITN049");
		model.addAttribute("hstSttusList", cmmUseService.selectCmmCodeDetail(voComCode));		
		
		if(mberCmpHstVO.getPageUnit() != 10) {
			mberCmpHstVO.setPageUnit(mberCmpHstVO.getPageUnit());
		}
		
		/** paging */
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(mberCmpHstVO.getPageIndex());
		paginationInfo.setRecordCountPerPage(mberCmpHstVO.getPageUnit());
		paginationInfo.setPageSize(mberCmpHstVO.getPageSize());
		
		mberCmpHstVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
		mberCmpHstVO.setLastIndex(paginationInfo.getLastRecordIndex());
		mberCmpHstVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
		
		if("".equals(mberCmpHstVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
			mberCmpHstVO.setSearchSortCnd("cmphstId");
			mberCmpHstVO.setSearchSortOrd("desc");
		}
		
		List<MberCmpHstVO> mberCmpHstList = egovMberCmpHstService.selectMberCmpHstList(mberCmpHstVO);
		int totCnt = 0;
		
		if(mberCmpHstList.size() > 0) {
			totCnt = mberCmpHstList.get(0).getTotCnt();
		}
		model.addAttribute("mberCmpHstList", mberCmpHstList);
		paginationInfo.setTotalRecordCount(totCnt);
		model.addAttribute("paginationInfo", paginationInfo);
		
		return "cmm/uss/umt/EgovMberCmpHstList";
	}
	
	/**
	 * 기원회원 신청 목록 전체 내역 팝업
	 * @param mberCmpHstVO
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/uss/umt/user/EgovMberCmpHstTaxListPop.do")
	public String egovMberCmpHstTaxListPop(@ModelAttribute("searchVO") MberCmpHstVO mberCmpHstVO,
			HttpServletRequest request ,
			ModelMap model) throws Exception {
		
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		
		
		//기업유형
		ComDefaultCodeVO voComCode = new ComDefaultCodeVO();
		voComCode.setCodeId("ITN033");
		model.addAttribute("bizTypeList", cmmUseService.selectCmmCodeDetail(voComCode));		
		
		// 유형 코드조회
		voComCode.setCodeId("ITN048");
		model.addAttribute("hstTypeList", cmmUseService.selectCmmCodeDetail(voComCode));		
		
		// 처리상태 코드조회
		voComCode.setCodeId("ITN049");
		model.addAttribute("hstSttusList", cmmUseService.selectCmmCodeDetail(voComCode));		
		
		if(mberCmpHstVO.getPageUnit() != 10) {
			mberCmpHstVO.setPageUnit(mberCmpHstVO.getPageUnit());
		}
		
		/** paging */
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(mberCmpHstVO.getPageIndex());
		paginationInfo.setRecordCountPerPage(mberCmpHstVO.getPageUnit());
		paginationInfo.setPageSize(mberCmpHstVO.getPageSize());
		
		mberCmpHstVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
		mberCmpHstVO.setLastIndex(paginationInfo.getLastRecordIndex());
		mberCmpHstVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
		
		if("".equals(mberCmpHstVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
			mberCmpHstVO.setSearchSortCnd("cmphstId");
			mberCmpHstVO.setSearchSortOrd("desc");
		}
		
		List<MberCmpHstVO> mberCmpHstList = egovMberCmpHstService.selectMberCmpHstList(mberCmpHstVO);
		int totCnt = 0;
		
		if(mberCmpHstList.size() > 0) {
			totCnt = mberCmpHstList.get(0).getTotCnt();
		}
		model.addAttribute("mberCmpHstList", mberCmpHstList);
		paginationInfo.setTotalRecordCount(totCnt);
		model.addAttribute("paginationInfo", paginationInfo);
		
		return "cmm/uss/umt/EgovMberCmpHstTaxList";
	}	
	
	/**
	 * 기원회원 신청 반려 팝업
	 * @param mberCmpHstVO
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/uss/umt/user/EgovMberCmpHstReturnPop.do")
	public String selectedUserView(@ModelAttribute MberCmpHstVO mberCmpHstVO,
			HttpServletRequest request, 
			Model model) throws Exception {
		
		mberCmpHstVO = egovMberCmpHstService.selectMberCmpHstDetail(mberCmpHstVO);
		model.addAttribute("mberCmpHstVO", mberCmpHstVO);
		
		return "cmm/uss/umt/EgovMberCmpHstReturnPop";
	}	
	/**
	 * 기원회원 신청 상세 관리자페이지
	 * @param mberCmpHstVO
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/uss/umt/user/EgovMberCmpHstDetailAjax.do")
	public String egovMberCmpHstDetailAjax(@ModelAttribute("searchVO") MberCmpHstVO mberCmpHstVO,
			HttpServletRequest request ,
			ModelMap model) throws Exception {
		
		if(mberCmpHstVO.getPageUnit() != 10) {
			mberCmpHstVO.setPageUnit(mberCmpHstVO.getPageUnit());
		}
		
		mberCmpHstVO = egovMberCmpHstService.selectMberCmpHstDetail(mberCmpHstVO);

		model.addAttribute("mberCmpHstVO", mberCmpHstVO);
		
		return "cmm/uss/umt/EgovMberCmpHstDetail";
	}	
	
	/**
	 * 기원회원 신청 승인 처리
	 * @param mberCmpHstVO
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/uss/umt/user/mberCmpHstStatusSaveAjax.do")
	public ModelAndView mberCmpHstStatusSaveAjax(@ModelAttribute("searchVO") MberCmpHstVO mberCmpHstVO 
			) throws Exception{
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
		
		boolean isSuccess = true;
		boolean isDone = false; //이미 처리건인지 확인 값
		int updtCnt = 0;
		String sttusMsg = "";
		if("02".equals(mberCmpHstVO.getHstSttus())){
			sttusMsg = "승인";
		}else {
			sttusMsg = "반려";
		}
		String msg = sttusMsg+" 처리되었습니다.";
		
		MberCmpHstVO statusChkVO = egovMberCmpHstService.selectMberCmpHstDetail(mberCmpHstVO);
		if(!"01".equals(statusChkVO.getHstSttus())) {
			isDone = true;
			if("02".equals(statusChkVO.getHstSttus())) {
				msg = "이미 승인했습니다.";
			}else if("03".equals(statusChkVO.getHstSttus())) {
				msg = "이미 반려했습니다.";
			}
			modelAndView.addObject("isSuccess", isSuccess);        		
			modelAndView.addObject("isDone", isDone);        		
			modelAndView.addObject("msg", msg);
			return modelAndView;
		}
		try {
			
			LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
	    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
	    	
        	if(userId.equals("")) {
        		isSuccess = false;
    			modelAndView.addObject("isSuccess", isSuccess);        		
        		modelAndView.addObject("msg", "로그인 후 이용이 가능합니다.");
    			return modelAndView;
        	}
        	mberCmpHstVO.setLastUpdusrId(userId);
        	// 기업회원 신청 승인/반려 처리
        	
        	updtCnt = egovMberCmpHstService.mberCmpHstStatusSaveAll(mberCmpHstVO);
    	}
		catch(Exception e) {
			isSuccess = false;
    		msg = "오류 : " + e.getMessage();
    	}
		
		System.out.println("############### 기업회원 승인 ###############");
		System.out.println("updtCnt : " + updtCnt);
		System.out.println("mberCmpHstVO.getHstType() : " + mberCmpHstVO.getHstType());
		
		//심사처리 완료 시 문자 발송 - 회원가입, 기업회원전환 안내만 발송되게 수정 220613
    	if(updtCnt == 1 && ("01".equals(mberCmpHstVO.getHstType()) || "02".equals(mberCmpHstVO.getHstType()))) { 
    		
    		try {
        	MjonMsgVO mjonMsgVO = new MjonMsgVO();
        	
        	String type = ""; //유형
        	if("01".equals(mberCmpHstVO.getHstType())) {
        		type = "기업회원 가입";
        	}else if("02".equals(mberCmpHstVO.getHstType())) {
        		type = "기업회원 전환";
        	}else{
        		type = "기업정보 변경";
        	}
        	String sttus = "";
        	if("02".equals(mberCmpHstVO.getHstSttus())) {
        		sttus = "승인";
        	}else {
        		sttus = "반려";
        	}
        	/*String contents = "고객님께서 신청하신 문자온 " + type + "이 "+ sttus + " 처리되었습니다.";
        	//반려 시 문자 내용 수정 220622 승인시 문구는 아직 미정
        	if("03".equals(mberCmpHstVO.getHstSttus())) {
        		contents = "고객님께서 신청하신 문자온 " + type + "이 서류미비로 보류된 상태입니다. 로그인하신 후 필요서류 확인바랍니다.";
        	}*/
        	
        	String contents = "";
        	if("02".equals(mberCmpHstVO.getHstSttus())) { //승인
        		if("01".equals(mberCmpHstVO.getHstType())) { //회원가입
        			contents = "[문자온] 기업회원 가입 신청이 승인되었습니다.";
            	}else if("02".equals(mberCmpHstVO.getHstType())) { //기업회원 전환
            		contents = "[문자온] 기업회원 전환이 승인되었습니다.";
            	}
        	}else { //반려
        		if("01".equals(mberCmpHstVO.getHstType())) { //회원가입
        			contents = mberCmpHstVO.getReturnCn();
            	}else if("02".equals(mberCmpHstVO.getHstType())) { //기업회원 전환
            		contents = mberCmpHstVO.getReturnCn();
            	}
        	}
        	
    		mjonMsgVO.setSmsTxt(contents); //문자 내용
    		mjonMsgVO.setReserveYn("N");//에약문자 N
    		mjonMsgVO.setCallFrom("15518011");//발신번호
    		mjonMsgVO.setUserId("system"); //ID
			mjonMsgVO.setBefCash("0.0");		//관리자가 발송하는 것이라서 0원으로 입력
			
			//문자열 길이 체크 후 단문 장문 설정
			String charset = "euc-kr";                   //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산
			String smsCont = contents;
			int FrBytes = smsCont.getBytes(charset).length;
			if(FrBytes > 90) {
				mjonMsgVO.setMsgType("6"); 	//장문
				mjonMsgVO.setMsgDiv("L");	// 장문	
			}else {
				mjonMsgVO.setMsgType("4"); 	//단문
				mjonMsgVO.setMsgDiv("S");	// 단문	
			}
			
    		// 문자타입별 대표전송사 정보
			MjonMsgVO mjonMsgVO2 = new MjonMsgVO();
			mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO);
			// 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술
        	mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택			
        	// 전송금액
			mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString());	//총금액
			mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString());	//한건 금액			
			
			//수신번호 배열 변환 작업
			//mjonMsgVO.setCallTo(mberManageVO.getMoblphonNo());
			String[] phone = new String[1];
			phone[0] = mberCmpHstVO.getMbtlNum();
			mjonMsgVO.setCallToList(phone);
			
    		//문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅
    		mjonMsgVO.setMsgKind("S");
    		mjonMsgVO.setFileCnt("0");//첨부이미지 갯수
    		
        	if(mjonMsgVO.getAgentCode().equals("03")) {	//아이엠오 전송사 문자 타입 설정해 주기
        		
        		// 단순 장문 문자는 neoType : 2, 그림 포함 : 4
        		if(mjonMsgVO.getFileCnt().equals("0")) { // 단순 장문 문자
        			
        			mjonMsgVO.setNeoType("2");
        			
        		}else{ // 그림포함 문자인경우
        			
        			mjonMsgVO.setNeoType("4");
        			
        		}
        		
        	}
        	
        	
        	//현재 고객의 보유 캐시가 문자 발송이 가능한 금액인지 체크
        	String userMoney = "0.0";
        	String userPoint = "0.0";
        	mjonMsgVO.setBefPoint(userPoint); //현재 보유 포인트 정보 저장
        	mjonMsgVO.setBefCash("0.0");		//관리자가 발송하는 것이라서 0원으로 입력
        	
			MjonMsgReturnVO returnVO = mjonMsgDataService.insertAdmToMberMsgDataInfo(mjonMsgVO); //실제 전송
			//MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO); //실제 전송
			
			/*// 시스템 발송 로그 - insertAdmToMberMsgDataInfo에서 처리
			SendLogVO sendLogVO = new SendLogVO();
			// SendType 1:문자로 발송 2:이메일로 발송
			sendLogVO.setSendId(returnVO.getMsgGroupId());
			sendLogVO.setSendType("1");
			sendLogVO.setFrstSendInfo(mjonMsgVO.getCallFrom());
			sendLogVO.setReceive(mjonMsgVO.getCallTo());
			sendLogVO.setContents(contents);

			mjonMsgDataService.insertSysMsgLog(sendLogVO);*/
			msg = msg += (System.lineSeparator()+"안내문자 발송 성공했습니다.");
    		}
    		catch(Exception e){
    			msg = msg += (System.lineSeparator() +"안내문자 발송 실패했습니다.");
    		}
			
    	}
		
		mberCmpHstVO.setMberId(""); //업데이트 처리 후 mberId 초기화 - 리스트 select 조건절에 mberId때문에 승인, 반려 처리 후 그 ID 목록만 조회되는 것 방지
			
		modelAndView.addObject("isSuccess", isSuccess);        		
		modelAndView.addObject("msg", msg);

		if(updtCnt == 0) {
			modelAndView.addObject("msg", "업데이트 실패");
		}
		return modelAndView;
	}    
	

	/**
	 * 반려 기업회원 삭제 처리
	 * @param mberCmpHstVO
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/uss/umt/user/mberCmpHstStatusDeleteAjax.do")
	public ModelAndView mberCmpHstStatusDeleteAjax(
			@ModelAttribute("searchVO") MberCmpHstVO mberCmpHstVO 
			) throws Exception{
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
		
		boolean isSuccess = true;
		int delCnt = 0;
		
		String msg = "삭제 처리되었습니다.";
		
		//로그인 여부 확인 후 삭제 처리
		try {		
			//로그인 여부 확인
			LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
	    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
	    	
        	if(userId.equals("")) {
        		isSuccess = false;
    			modelAndView.addObject("isSuccess", isSuccess);        		
        		modelAndView.addObject("msg", "로그인 후 이용이 가능합니다.");
    			return modelAndView;
        	}
        	
        	//삭제 처리
        	
        	delCnt = egovMberCmpHstService.mberCmpHstStatusDeleteAll(mberCmpHstVO);
    	}
		catch(Exception e) {
			isSuccess = false;
    		msg = "오류 : " + e.getMessage();
    	}
		
		
		mberCmpHstVO.setMberId(""); //업데이트 처리 후 mberId 초기화 - 리스트 select 조건절에 mberId때문에 승인, 반려 처리 후 그 ID 목록만 조회되는 것 방지
			
		modelAndView.addObject("isSuccess", isSuccess);        		
		modelAndView.addObject("msg", msg);

		if(delCnt <= 0) {
			modelAndView.addObject("msg", "삭제 실패");
		}
		return modelAndView;
	}    
	
	/**
	 * 기원회원 신청 일괄승인 처리
	 * @param mberCmpHstVO
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/uss/umt/user/mberCmpHstStatusYSaveAjax.do")
	public ModelAndView mberCmpHstStatusYSaveAjax(@RequestParam(value="cmphstIds[]") List<String> cmphstIds 
			) throws Exception{
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
		ModelMap model = new ModelMap();
		
		boolean isSuccess = true;
		int updtCnt = 0;
		String msg = "";
		
		MberCmpHstVO mberCmpHstVO = new MberCmpHstVO();

		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
    	
    	if(userId.equals("")) {
    		isSuccess = false;
			modelAndView.addObject("isSuccess", isSuccess);        		
    		modelAndView.addObject("msg", "로그인 후 이용이 가능합니다.");
			return modelAndView;
    	}
    	
		//승인처리 시작
		for(int i = 0; i < cmphstIds.size(); i++) {
			try {
				
					mberCmpHstVO.setCmphstId(cmphstIds.get(i));
					mberCmpHstVO = egovMberCmpHstService.selectMberCmpHstDetail(mberCmpHstVO);
		        	mberCmpHstVO.setLastUpdusrId(userId);
		    		//승인처리
		    		mberCmpHstVO.setHstSttus("02");
		        	updtCnt = egovMberCmpHstService.mberCmpHstStatusSaveAll(mberCmpHstVO);
		        	msg += mberCmpHstVO.getMberId() +" 승인 완료 \n";
			}catch(Exception e) {
				isSuccess = false;
	    		msg += mberCmpHstVO.getMberId() +" 오류 : " + e.getMessage()+"\n";
			}
			
			//승인 처리 문자 발송 - 회원가입, 기업회원전환 안내만 발송되게 수정 220613
	    	if(updtCnt == 1 && ("01".equals(mberCmpHstVO.getHstType()) || "02".equals(mberCmpHstVO.getHstType()))) { 
	    		
	    		try {
	        	MjonMsgVO mjonMsgVO = new MjonMsgVO();
	        	
	        	String type = ""; //유형
	        	if("01".equals(mberCmpHstVO.getHstType())) {
	        		type = "기업회원 가입";
	        	}else{
	        		type = "기업회원 전환";
	        	}
	        	String contents = "";
        		if("01".equals(mberCmpHstVO.getHstType())) { //회원가입
        			contents = "[문자온] 기업회원 가입 신청이 승인되었습니다.";
            	}else if("02".equals(mberCmpHstVO.getHstType())) { //기업회원 전환
            		contents = "[문자온] 기업회원 전환이 승인되었습니다.";
            	}
	        	
	    		mjonMsgVO.setSmsTxt(contents); //문자 내용
	    		mjonMsgVO.setReserveYn("N");//에약문자 N
	    		mjonMsgVO.setCallFrom("15518011");//발신번호
	    		mjonMsgVO.setUserId("system"); //ID
				mjonMsgVO.setBefCash("0.0");		//관리자가 발송하는 것이라서 0원으로 입력
				
				//문자열 길이 체크 후 단문 장문 설정
				String charset = "euc-kr";                   //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산
				String smsCont = contents;
				int FrBytes = smsCont.getBytes(charset).length;
				if(FrBytes > 90) {
					mjonMsgVO.setMsgType("6"); 	//장문
					mjonMsgVO.setMsgDiv("L");	// 장문	
				}else {
					mjonMsgVO.setMsgType("4"); 	//단문
					mjonMsgVO.setMsgDiv("S");	// 단문	
				}
				
	    		// 문자타입별 대표전송사 정보
				MjonMsgVO mjonMsgVO2 = new MjonMsgVO();
				mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO);
				// 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술
	        	mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택			
	        	// 전송금액
				mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString());	//총금액
				mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString());	//한건 금액							
				
				//수신번호 배열 변환 작업
				//mjonMsgVO.setCallTo(mberManageVO.getMoblphonNo());
				String[] phone = new String[1];
				phone[0] = mberCmpHstVO.getMbtlNum();
				mjonMsgVO.setCallToList(phone);
				
	    		//문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅
	    		mjonMsgVO.setMsgKind("S");
	    		mjonMsgVO.setFileCnt("0");//첨부이미지 갯수
	    		
	        	if(mjonMsgVO.getAgentCode().equals("03")) {	//아이엠오 전송사 문자 타입 설정해 주기
	        		
	        		// 단순 장문 문자는 neoType : 2, 그림 포함 : 4
	        		if(mjonMsgVO.getFileCnt().equals("0")) { // 단순 장문 문자
	        			
	        			mjonMsgVO.setNeoType("2");
	        			
	        		}else{ // 그림포함 문자인경우
	        			
	        			mjonMsgVO.setNeoType("4");
	        			
	        		}
	        		
	        	}
	        	
	        	
	        	//현재 고객의 보유 캐시가 문자 발송이 가능한 금액인지 체크
	        	String userMoney = "0.0";
	        	String userPoint = "0.0";
	        	mjonMsgVO.setBefPoint(userPoint); //현재 보유 포인트 정보 저장
	        	mjonMsgVO.setBefCash("0.0");		//관리자가 발송하는 것이라서 0원으로 입력
	        	
	        	
				MjonMsgReturnVO returnVO = mjonMsgDataService.insertAdmToMberMsgDataInfo(mjonMsgVO); //실제 전송
				/*msg = msg += (System.lineSeparator()+mberCmpHstVO.getMberId()+ "승인 완료");*/
	    		}
	    		catch(Exception e){
	    			msg = msg += (System.lineSeparator() +mberCmpHstVO.getMberId() + "에게 안내문자 발송 실패했습니다.");
	    		}
				
	    	}
		}
		mberCmpHstVO.setMberId(""); //업데이트 처리 후 mberId 초기화 - 리스트 select 조건절에 mberId때문에 승인, 반려 처리 후 그 ID 목록만 조회되는 것 방지
		
		modelAndView.addObject("isSuccess", isSuccess);        		
		modelAndView.addObject("msg", msg);
		return modelAndView;
	}
	/**
	 * 기원회원 신청 반려 처리
	 * @param mberCmpHstVO
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/uss/umt/user/mberCmpHstStatusReturnAjax.do")
	public ModelAndView mberCmpHstStatusReturnAjax(@ModelAttribute("searchVO") MberCmpHstVO mberCmpHstVO, 
			ModelMap model) throws Exception{
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
		
		boolean isSuccess = true;
		int updtCnt = 0;
		String sttusMsg = "";
		String msg = "반려 처리되었습니다.";
		
		MberCmpHstVO statusChkVO = egovMberCmpHstService.selectMberCmpHstDetail(mberCmpHstVO);
		if(!"01".equals(statusChkVO.getHstSttus())) {
			if("02".equals(statusChkVO.getHstSttus())) {
				msg = "이미 승인했습니다.";
			}else if("03".equals(statusChkVO.getHstSttus())) {
				msg = "이미 반려했습니다.";
			}
			modelAndView.addObject("isSuccess", isSuccess);        		
			modelAndView.addObject("msg", msg);
			return modelAndView;
		}
		
		try {
			
			LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
			String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
			
			if(userId.equals("")) {
				isSuccess = false;
				modelAndView.addObject("isSuccess", isSuccess);        		
				modelAndView.addObject("msg", "로그인 후 이용이 가능합니다.");
				return modelAndView;
			}
			mberCmpHstVO.setLastUpdusrId(userId);
			// 기업회원 신청 승인/반려 처리
			
			updtCnt = egovMberCmpHstService.mberCmpHstStatusSaveAll(mberCmpHstVO);
		}
		catch(Exception e) {
			isSuccess = false;
			msg = "오류 : " + e.getMessage();
		}
		
		System.out.println("############### 기업회원 반려 ###############");
		System.out.println("updtCnt : " + updtCnt);
		System.out.println("mberCmpHstVO.getHstType() : " + mberCmpHstVO.getHstType());
			
		//심사처리 완료 시 문자 발송 - 회원가입, 기업회원전환 안내만 발송되게 수정 220613
		if(updtCnt == 1 && ("01".equals(mberCmpHstVO.getHstType()) || "02".equals(mberCmpHstVO.getHstType()))) { 
			
			try {
				MjonMsgVO mjonMsgVO = new MjonMsgVO();
				
				String type = ""; //유형
				if("01".equals(mberCmpHstVO.getHstType())) {
					type = "기업회원 가입";
				}else if("02".equals(mberCmpHstVO.getHstType())) {
					type = "기업회원 전환";
				}else{
					type = "기업정보 변경";
				}
				String sttus = "";
				if("02".equals(mberCmpHstVO.getHstSttus())) {
					sttus = "승인";
				}else {
					sttus = "반려";
				}
				/*String contents = "고객님께서 신청하신 문자온 " + type + "이 "+ sttus + " 처리되었습니다.";
	        	//반려 시 문자 내용 수정 220622 승인시 문구는 아직 미정
	        	if("03".equals(mberCmpHstVO.getHstSttus())) {
	        		contents = "고객님께서 신청하신 문자온 " + type + "이 서류미비로 보류된 상태입니다. 로그인하신 후 필요서류 확인바랍니다.";
	        	}*/
				
	        	String contents = "";
	        	if("02".equals(mberCmpHstVO.getHstSttus())) { //승인
	        		if("01".equals(mberCmpHstVO.getHstType())) { //회원가입
	        			contents = "[문자온] 기업회원 가입 신청이 승인되었습니다.";
	            	}else if("02".equals(mberCmpHstVO.getHstType())) { //기업회원 전환
	            		contents = "[문자온] 기업회원 전환이 승인되었습니다.";
	            	}
	        	}else { //반려
	        		if("01".equals(mberCmpHstVO.getHstType())) { //회원가입
	        			contents = mberCmpHstVO.getReturnCn();
	            	}else if("02".equals(mberCmpHstVO.getHstType())) { //기업회원 전환
	            		contents = mberCmpHstVO.getReturnCn();
	            	}
	        	}
	        	
				mjonMsgVO.setSmsTxt(contents); //문자 내용
				mjonMsgVO.setReserveYn("N");//에약문자 N
				mjonMsgVO.setCallFrom("15518011");//발신번호
				mjonMsgVO.setUserId("system"); //ID
				mjonMsgVO.setBefCash("0.0");		//관리자가 발송하는 것이라서 0원으로 입력
				

				//문자열 길이 체크 후 단문 장문 설정
				String charset = "euc-kr";                   //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산
				String smsCont = contents;
				int FrBytes = smsCont.getBytes(charset).length;
				if(FrBytes > 90) {
					mjonMsgVO.setMsgType("6"); 	//장문
					mjonMsgVO.setMsgDiv("L");	// 장문	
				}else {
					mjonMsgVO.setMsgType("4"); 	//단문
					mjonMsgVO.setMsgDiv("S");	// 단문	
				}
				
	    		// 문자타입별 대표전송사 정보
				MjonMsgVO mjonMsgVO2 = new MjonMsgVO();
				mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO);
				// 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술
	        	mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택			
	        	// 전송금액
				mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString());	//총금액
				mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString());	//한건 금액						
				
				
				//수신번호 배열 변환 작업
				//mjonMsgVO.setCallTo(mberManageVO.getMoblphonNo());
				String[] phone = new String[1];
				phone[0] = mberCmpHstVO.getMbtlNum();
				mjonMsgVO.setCallToList(phone);
				
	    		//문자종류 관리자가 발송하는 것은 msgKind : S 로 셋팅
	    		mjonMsgVO.setMsgKind("S");
	    		mjonMsgVO.setFileCnt("0");//첨부이미지 갯수
	    		
	        	if(mjonMsgVO.getAgentCode().equals("03")) {	//아이엠오 전송사 문자 타입 설정해 주기
	        		
	        		// 단순 장문 문자는 neoType : 2, 그림 포함 : 4
	        		if(mjonMsgVO.getFileCnt().equals("0")) { // 단순 장문 문자
	        			
	        			mjonMsgVO.setNeoType("2");
	        			
	        		}else{ // 그림포함 문자인경우
	        			
	        			mjonMsgVO.setNeoType("4");
	        			
	        		}
	        		
	        	}
	        	
	        	
	        	//현재 고객의 보유 캐시가 문자 발송이 가능한 금액인지 체크
	        	String userMoney = "0.0";
	        	String userPoint = "0.0";
	        	mjonMsgVO.setBefPoint(userPoint); //현재 보유 포인트 정보 저장
	        	mjonMsgVO.setBefCash("0.0");		//관리자가 발송하는 것이라서 0원으로 입력
	        	
				MjonMsgReturnVO returnVO = mjonMsgDataService.insertAdmToMberMsgDataInfo(mjonMsgVO); //실제 전송
				//MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO); //실제 전송
				
				/*// 시스템 발송 로그 - insertAdmToMberMsgDataInfo에서 처리
				SendLogVO sendLogVO = new SendLogVO();
				// SendType 1:문자로 발송 2:이메일로 발송
				sendLogVO.setSendId(returnVO.getMsgGroupId());
				sendLogVO.setSendType("1");
				sendLogVO.setFrstSendInfo(mjonMsgVO.getCallFrom());
				sendLogVO.setReceive(mjonMsgVO.getCallTo());
				sendLogVO.setContents(contents);
				
				mjonMsgDataService.insertSysMsgLog(sendLogVO); */
				msg = msg += (System.lineSeparator()+"안내문자 발송 성공했습니다.");
			}
			catch(Exception e){
				msg = msg += (System.lineSeparator() +"안내문자 발송 실패했습니다.");
			}
			
		}
		
		mberCmpHstVO.setMberId(""); //업데이트 처리 후 mberId 초기화 - 리스트 select 조건절에 mberId때문에 승인, 반려 처리 후 그 ID 목록만 조회되는 것 방지
		
		modelAndView.addObject("isSuccess", isSuccess);        		
		modelAndView.addObject("msg", msg);
		
		if(updtCnt == 0) {
			modelAndView.addObject("msg", "업데이트 실패");
		}
		return modelAndView;
	}    


	
}
