package itn.let.sym.grd.web;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
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.LoginVO;
import itn.let.sym.grd.service.MberGrdService;
import itn.let.sym.grd.service.MberGrdVO;

@Controller
public class MberGrdMngController {

	@Resource(name = "mberGrdService")
	MberGrdService mberGrdService;
	
    /**
     * 등급제 관리자 화면
     * 
     * @param mberGrdVO
     * @param model
     * @return
     * @throws Exception
     */
    @RequestMapping("/sym/grd/selectMberGrdSetting.do")
    public String selectJoinSetting(MberGrdVO mberGrdVO, ModelMap model) throws Exception {
    	
    	List<MberGrdVO> mberGrdSettingList = mberGrdService.selectMberGrdSettingList(mberGrdVO);
    	
    	mberGrdVO = mberGrdService.selectMberSettingDetail(mberGrdVO);

    	model.addAttribute("grdNoti", mberGrdVO.getGrdNoti());
    	model.addAttribute("grdDate", mberGrdVO.getGrdDate());
    	model.addAttribute("mberGrdSettingList", mberGrdSettingList);
    	
    	return "/sym/grd/mberGrdSetting";
    }
    
	// 등급제 일괄 저장
	@RequestMapping(value = "/sym/grd/mberGrdSettingMassUpdateAjax.do")
	public ModelAndView mberGrdSettingMassUpdateAjax(
			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {

		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");

		boolean isSuccess = true;
		String msg = "";
		int updateMberCnt = 0;
		
    	// 로그인VO에서  사용자 정보 가져오기
    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
    	String frstRegisterId = loginVO == null ? "" : loginVO.getId();
    	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID

        try{
        	// Step1. 등급제 시행여부 변경
        	int updateCnt1 = mberGrdService.updateMberSetting(mberGrdVO);
        	if (updateCnt1 == 0) {
    			isSuccess = false;
    			msg = "등급제 시행여부 변경에 실패했습니다.";        		
        	}
        	else {
	        	// Step2. 등급제 단가 업데이트
	        	int updateCnt2 = mberGrdService.updateGrdSettingList(mberGrdVO);
	        	if (updateCnt2 == 0) {
	    			isSuccess = false;
	    			msg = "등급제 단가 변경에 실패했습니다.";        		
	        	}
	        	else {
	        		// Step3. 회원 등급 일괄변경
	        		updateMberCnt = mberGrdService.updateMberGrdAll(mberGrdVO);
	        	}
        	}
		}
		catch(Exception e) {
			isSuccess = false;
			msg = e.getMessage();
		}		

		modelAndView.addObject("isSuccess", isSuccess);
		modelAndView.addObject("msg", msg);
		modelAndView.addObject("updateMberCnt", updateMberCnt);
		
		return modelAndView;
	}
	
	// 회원별 등급 초기화
	@RequestMapping(value = "/sym/grd/mberGrdEndMassUpdateAjax.do")
	public ModelAndView mberGrdEndMassUpdateAjax(
			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {

		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");

		boolean isSuccess = true;
		String msg = "";
		int updateMberCnt = 0;
		
    	// 로그인VO에서  사용자 정보 가져오기
    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
    	String frstRegisterId = loginVO == null ? "" : loginVO.getId();
    	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID

        try{
        	
       		// 회원별 등급 초기화
       		updateMberCnt = mberGrdService.updateMberGrdEndAll(mberGrdVO);
       		
		}
		catch(Exception e) {
			isSuccess = false;
			msg = e.getMessage();
		}		

		modelAndView.addObject("isSuccess", isSuccess);
		modelAndView.addObject("msg", msg);
		modelAndView.addObject("updateMberCnt", updateMberCnt);
		
		return modelAndView;
	}		
    
	// 회원별 등급 적용 테스트
	@RequestMapping(value = "/sym/grd/mberGrdSaveAjax.do")
	public ModelAndView mberGrdSaveAjax(
			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {

		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");

		boolean isSuccess = true;
		String msg = "";
		
    	// 로그인VO에서  사용자 정보 가져오기
    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
    	String frstRegisterId = loginVO == null ? "" : loginVO.getId();
    	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID

        try{
        	
       		// 회원별 등급 적용
        	mberGrdVO.setAmt("0");			// 결제금액
        	mberGrdVO.setMberId("nopay");	// 결제자
       		mberGrdService.mberGrdSaveByUser(mberGrdVO);
       		
		}
		catch(Exception e) {
			isSuccess = false;
			msg = e.getMessage();
		}		

		modelAndView.addObject("isSuccess", isSuccess);
		modelAndView.addObject("msg", msg);
		
		return modelAndView;
	}			
	
    /**
     * 회원별 등급제 목록 화면
     * 
     * @param mberGrdVO
     * @param model
     * @return
     * @throws Exception
     */	
    @RequestMapping("/sym/grd/selectMberGrdList.do")
    public String selectMetaTagList(@ModelAttribute("searchVO") MberGrdVO mberGrdVO, ModelMap model) throws Exception{
    	
		/** paging */
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(mberGrdVO.getPageIndex());
		paginationInfo.setRecordCountPerPage(mberGrdVO.getPageUnit());
		paginationInfo.setPageSize(mberGrdVO.getPageSize());

		mberGrdVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
		mberGrdVO.setLastIndex(paginationInfo.getLastRecordIndex());
		mberGrdVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
    	
		if("".equals(mberGrdVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
			mberGrdVO.setSearchSortCnd("regDate");
			mberGrdVO.setSearchSortOrd("desc");
		}
		
		List<MberGrdVO> resultList = mberGrdService.selectMberGrdList(mberGrdVO);
		model.addAttribute("resultList", resultList);
		paginationInfo.setTotalRecordCount( resultList.size()> 0 ? resultList.get(0).getTotCnt() : 0);
		model.addAttribute("paginationInfo", paginationInfo);
    	
		return "/sym/grd/mberGrdList";
    }	
		
	// 등급제 적용여부 체크
	@RequestMapping(value = "/sym/grd/mberGrdChkAjax.do")
	public ModelAndView mberGrdChkAjax(
			@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {

		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");

		boolean isSuccess = true;
		String msg = "";
   		MberGrdVO rtnMberGrdVO = new MberGrdVO();
   		
    	// 로그인VO에서  사용자 정보 가져오기
    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
    	String frstRegisterId = loginVO == null ? "" : loginVO.getId();
    	mberGrdVO.setEditId(frstRegisterId);		// 최초등록자ID

        try{
       		rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId());
       		if (null != rtnMberGrdVO) {
       			// 등급제 적용

       		}
       		else {
    			isSuccess = false;
    			msg = "종료";       			
       		}
		}
		catch(Exception e) {
			isSuccess = false;
			msg = e.getMessage();
		}		

        modelAndView.addObject("rtnMberGrdVO", rtnMberGrdVO);
		modelAndView.addObject("isSuccess", isSuccess);
		modelAndView.addObject("msg", msg);
		
		return modelAndView;
	}			    
 
}
