package itn.let.mjo.msgagent.web;

import java.util.List;

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

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.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import itn.com.cmm.ComDefaultCodeVO;
import itn.com.cmm.LoginVO;
import itn.com.cmm.service.CmmnDetailCode;
import itn.com.cmm.service.EgovCmmUseService;
import itn.com.cmm.util.RedirectUrlMaker;
import itn.com.cmm.util.StringUtil;
import itn.com.utl.fcc.service.EgovStringUtil;
import itn.let.mjo.conf.service.MjonConfService;
import itn.let.mjo.conf.service.MjonConfVO;
import itn.let.mjo.msgagent.service.MjonMsgAgentStsService;
import itn.let.mjo.msgagent.service.MjonMsgAgentStsVO;

@Controller
public class MjonMsgAgentStsController {

	/** cmmUseService */
	@Resource(name = "EgovCmmUseService")
	private EgovCmmUseService cmmUseService;
	
	@Resource(name = "mjonMsgAgentStsService")
	private MjonMsgAgentStsService mjonMsgAgentStsService;
	
	
	@Resource(name = "mjonConfService")
	private MjonConfService mjonConfService;
	
	
	/**
	* @Method Name : selectMjonMsgAgentStsDataView
	* @작성일 : 2022. 10. 6.
	* @작성자 :  WYH
	* @Method 설명 : 전송사별 전송 비율 설정 화면
	*/
	@RequestMapping(value={"/let/mjo/msgagent/selectMjonMsgAgentStsDataView.do"})
	public String selectMjonMsgAgentStsDataView(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{
		
		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
		
		if(StringUtil.isEmpty(userId)) {
			
			redirectAttributes.addFlashAttribute("message", "로그인 정보가 없습니다.");
			RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do");
			return redirectUrlMaker.getRedirectUrl();
			
		}
		
		 /* 공통코드 조회 */
		ComDefaultCodeVO vo = new ComDefaultCodeVO();
		vo.setCodeId("ITN019");
		List<CmmnDetailCode> frwrdAgent = cmmUseService.selectCmmCodeDetail(vo);
		model.addAttribute("frwrdAgent", frwrdAgent);
		
		List<MjonMsgAgentStsVO> agentList = mjonMsgAgentStsService.selectMjonMsgAgentStsList();
		model.addAttribute("agentList", agentList);

		MjonConfVO confVO = mjonConfService.selectConfDetail("CONF01");
		model.addAttribute("confVO", confVO);
		
		return "agent/MjonMsgAgentStsUpdate";
	}
	
	/**
	* @Method Name : updateMjonMsgAgentStsData
	* @작성일 : 2022. 10. 6.
	* @작성자 :  WYH
	* @Method 설명 : 전송사별 전송 비율 수정
	*/
	@RequestMapping(value={"/let/mjo/msgagent/updateMjonMsgAgentStsData.do"})
	public String updateMjonMsgAgentStsData(MjonMsgAgentStsVO mjonMsgAgentStsVO, RedirectAttributes redirectAttributes , ModelMap model) throws Exception{
		
		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
    	
    	if(StringUtil.isEmpty(userId)) {
    		
    		redirectAttributes.addFlashAttribute("message", "로그인 정보가 없습니다.");
    		RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do");
    		return redirectUrlMaker.getRedirectUrl();
    		
    	}
    	
    	mjonMsgAgentStsVO.setLastUpdusrId(userId);
		
		int result = mjonMsgAgentStsService.updateMjonMsgAgentStsData(mjonMsgAgentStsVO);
		
		if(result > 0) {
			redirectAttributes.addFlashAttribute("message", "수정이 완료되었습니다.");
		}else {
			redirectAttributes.addFlashAttribute("message", "수정이 실패되었습니다.");
		}
		RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/msgagent/selectMjonMsgAgentStsDataView.do");
		return redirectUrlMaker.getRedirectUrl();
	}
	
	/**
	* @Method Name : insertMjonMsgAgentStsDataAjax
	* @작성일 : 2022. 10. 6.
	* @작성자 :  WYH
	* @Method 설명 : 전송사별 전송비율 등록
	*/
	@RequestMapping(value = "/let/mjo/msgagent/insertMjonMsgAgentStsDataAjax.do")
	public ModelAndView insertMjonMsgAgentStsDataAjax(@ModelAttribute MjonMsgAgentStsVO mjonMsgAgentStsVO
		, Model model) throws Exception {
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
		
		try {
			LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
			String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
			if(StringUtil.isEmpty(userId)) {
				modelAndView.addObject("message", "로그인 정보가 없습니다.");
				modelAndView.addObject("result", "fail");
				modelAndView.setViewName("redirect:/uat/uia/EgovLoginUsr.do");
				return modelAndView;
			}
			mjonMsgAgentStsVO.setUserId(loginVO.getId());
			
			//등록전 문자발송 Agent 등록여부 확인
			int insertCheck = 0;
			insertCheck = mjonMsgAgentStsService.selectMjonMsgAgentStsData(mjonMsgAgentStsVO);
			if(insertCheck != 0) {
				String message = "이미 등록되어 있는 Agent입니다.";
				modelAndView.addObject("message", message);	
				modelAndView.addObject("result", "fail");
				return modelAndView;
			}else {
				mjonMsgAgentStsService.insertMjonMsgAgentStsData(mjonMsgAgentStsVO);
				modelAndView.addObject("result", "success");
			}
			
		}catch (Exception e) {
			modelAndView.addObject("message", "다시 시도 부탁드립니다.");
			modelAndView.addObject("result", "fail");
		}
		
		return modelAndView;
	}
	
	
	/**
	* @Method Name : selectMjonMsgAgentStsDataView
	* @작성일 : 2023. 02. 27.
	* @작성자 :  JSP
	* @Method 설명 : 전송사별 테스트 문자발송 화면
	*/
	@RequestMapping(value={"/let/mjo/msgagent/selectMjonMsgAgentSendView.do"})
	public String selectMjonMsgAgentSendView(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{
		
		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
		
		if(StringUtil.isEmpty(userId)) {
			
			redirectAttributes.addFlashAttribute("message", "로그인 정보가 없습니다.");
			RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do");
			return redirectUrlMaker.getRedirectUrl();
			
		}
		
		return "agent/MjonMsgAgentSend";
	}	
	
	
	/**
	* @Method Name : selectMjonMsgAgentStsDataView
	* @작성일 : 2023. 05. 22.
	* @작성자 :  Hans
	* @Method 설명 : 전송사별 전송 비율 다건 설정 화면
	*/
	@RequestMapping(value={"/let/mjo/msgagent/selectMjonMsgAgentStsMultiList.do"})
	public String selectMjonMsgAgentStsMultiList(@ModelAttribute("searchVO") MjonMsgAgentStsVO mjonMsgAgentStsVO, 
			HttpServletRequest request,
			ModelMap model) throws Exception{
	
	// public String selectMjonMsgAgentStsMultiList(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{
    	System.out.println("ctr mjonMsgAgentStsVO.getSearchUseYn()1:" + mjonMsgAgentStsVO.getSearchUseYn());
    	if (mjonMsgAgentStsVO.getSearchUseYn()==null )  // 최초 조회시 null 이고 , 전체 선택시 '-' 로 전달 됨. , 즉 최초 조회시에는 사용여부='Y'만 조회  
    	{
    		mjonMsgAgentStsVO.setSearchUseYn("Y");
    	} else if ("-".equals(mjonMsgAgentStsVO.getSearchUseYn().toString()))  // 전체 선택시 사용여부를 null로 하여 전체 조회 하도록 함. 
    	{
    		mjonMsgAgentStsVO.setSearchUseYn("");
    	}  
    	System.out.println("ctr mjonMsgAgentStsVO.getSearchUseYn()2:" + mjonMsgAgentStsVO.getSearchUseYn());    	
    	
		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
		
		if(StringUtil.isEmpty(userId)) {
			// redirectAttributes.addFlashAttribute("message", "로그인 정보가 없습니다.");
			RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do");
			return redirectUrlMaker.getRedirectUrl();
			
		}
		
		 /* 공통코드 조회 */
		ComDefaultCodeVO vo = new ComDefaultCodeVO();
		vo.setCodeId("ITN019");
		List<CmmnDetailCode> frwrdAgent = cmmUseService.selectCmmCodeDetail(vo);
		model.addAttribute("frwrdAgent", frwrdAgent);
		
		List<MjonMsgAgentStsVO> agentList = mjonMsgAgentStsService.selectMjonMsgAgentStsMultiList(mjonMsgAgentStsVO);
		model.addAttribute("agentList", agentList);

		MjonConfVO confVO = mjonConfService.selectConfDetail("CONF01");
		model.addAttribute("confVO", confVO);
		
		return "agent/MjonMsgAgentStsMultiUpdate";
	}	
	
	
	/**
	* @Method Name : updateMultiMjonMsgAgentStsData
	* @작성일 : 2023.05.19
	* @작성자 :  Hans
	* @Method 설명 : 전송사별 전송 비율 수정
	*/
	/*
	@RequestMapping(value={"/let/mjo/msgagent/updateMultiMjonMsgAgentStsDataAjax.do"})
	public ModelAndView updateMultiMjonMsgAgentStsDataAjax(@ModelAttribute("mjonMsgAgentStsVO") MjonMsgAgentStsVO mjonMsgAgentStsVO) throws Exception {
	//public ModelAndView updateMultiMjonMsgAgentStsData(@ModelAttribute MjonMsgAgentStsVO mjonMsgAgentStsVO, Model model) 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();
    	mjonMsgAgentStsVO.setLastUpdtPnttm("ss");	// 최초등록자ID
    	System.out.print("\n updateMultiMjonMsgAgentStsData 1==== \n");
    	System.out.print("updateMultiMjonMsgAgentStsData 2==== getSelectAgentCode:  " + mjonMsgAgentStsVO.getSelectAgentCode() + ":===end=== \n");       
    	System.out.print("mjonMsgAgentStsVO.getUseYns().size() 3==== :  " + mjonMsgAgentStsVO.getUseYns().size() + ":===end===\n");    	
    	System.out.print("mjonMsgAgentStsVO.getMsgTypes().get(0) 4==== :" + mjonMsgAgentStsVO.getMsgTypes().get(0)+ ":===end===\n");    	
    	System.out.print("mjonMsgAgentStsVO.getSelectAgentCode() 5==== :  " + mjonMsgAgentStsVO.getSelectAgentCode() + ":===end===\n");        	
    	System.out.print("mjonMsgAgentStsVO.getAgentCodes().size() 6  ==== :  " +mjonMsgAgentStsVO.getAgentCodes().get(0)  + ":===end===\n");        	

        try{
        	
        	
    	    for(int i = 0; i < mjonMsgAgentStsVO.getAgentCodes().size(); i++){
    	    	System.out.println("getAgentCodes: " + mjonMsgAgentStsVO.getAgentCodes().get(i));
    	    //	System.out.println("getMsgTypes: " + mjonMsgAgentStsVO.getMsgTypes().get(i)) ;     	    	
    	    }        	
        	// 제목, 해쉬태그 일괄변경
        	System.out.print("==== updateMultiMjonMsgAgentStsDataAjax controller  ==== \n");
        	mjonMsgAgentStsService.updateMjonMsgAgentStsDataList(mjonMsgAgentStsVO);        	
        	// letterService.updateHashTagList(mjonMsgAgentStsVO);
        	System.out.print("==== updateMultiMjonMsgAgentStsDataAjax controller try - catch ==== \n");        	
        	
		}
		catch(Exception e) {
			isSuccess = false;
			msg = e.getMessage();
		}		
		modelAndView.addObject("result", "success");
		modelAndView.addObject("isSuccess", isSuccess);
		modelAndView.addObject("msg", msg);
    	System.out.println("modelAndView.getViewName(): " + modelAndView.getViewName()) ;
    	
		return modelAndView;
	}
	
	*/
 
	
	
	
}
