package egovframework.com.cmm.web;

import egovframework.com.cmm.util.EgovDoubleSubmitHelper;
import egovframework.com.cmm.util.RedirectUrlMaker;
import egovframework.rte.fdl.property.EgovPropertyService;
import nl.captcha.Captcha;

import java.util.HashMap;

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

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

/**
 * 공통유틸리티성 작업을 위한 Controller 클래스
 * @author 공통 서비스 개발팀 JJY
 * @since 2009.03.02
 * @version 1.0
 * @see
 *
 * <pre>
 * << 개정이력(Modification Information) >>
 *
 *   수정일      수정자          수정내용
 *  -------    --------    ---------------------------
 *  2009.03.02  JJY            최초 생성
 *  2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
 *
 *  </pre>
 */
@Controller
public class EgovComUtlController {

	/** EgovPropertyService */
	@Resource(name = "propertiesService")
	protected EgovPropertyService propertiesService;

	/**
	 * JSP 호출작업만 처리하는 공통 함수
	 */
	@RequestMapping(value = "/EgovPageLink.do")
	public String moveToPage(@RequestParam("link") String linkPage, HttpSession session, 
			@RequestParam(value = "baseMenuNo", required = false) String baseMenuNo,
			@RequestParam(value = "baseMenuNm", required = false) String baseMenuNm,
			Model model , HttpServletRequest request ) {
		String link = linkPage;
		// service 사용하여 리턴할 결과값 처리하는 부분은 생략하고 단순 페이지 링크만 처리함
		if (linkPage == null || linkPage.equals("")) {
			link = "cmm/egovError";
		} else {
			if (link.indexOf(",") > -1) {
				link = link.substring(0, link.indexOf(","));
			}
		}
		// 선택된 메뉴정보를 세션으로 등록한다.
		if (baseMenuNo != null && !baseMenuNo.equals("") && !baseMenuNo.equals("null")) {
			session.setAttribute("baseMenuNo", baseMenuNo);
		}else if(null != request.getAttribute("baseMenuNo")){
			session.setAttribute("baseMenuNo", (String)request.getAttribute("baseMenuNo"));
		}
		// 선택된 메뉴정보를 상단 이름을 세션으로 등록한다.
		if (baseMenuNm != null && !baseMenuNm.equals("") && !baseMenuNm.equals("null")) {
			session.setAttribute("baseMenuNm", baseMenuNm);
		}else if(null != request.getAttribute("baseMenuNm")){
			session.setAttribute("baseMenuNm", (String)request.getAttribute("baseMenuNm"));
		}
		
		if(request.getRequestURI().contains("/WEB-INF/jsp/main/EgovMainView.jsp")){//메인페이지일 경우, 상단 버튼 색상 default로, 이름을 
			session.setAttribute("baseMenuNo", null);
			session.setAttribute("baseMenuNm", "관리자 메인페이지");
		}	
		return link;
	}

	/**
	 * JSP 호출작업만 처리하는 공통 함수
	 */
	@RequestMapping(value = "/EgovPageLink.action")
	public String moveToPage_action(@RequestParam("link") String linkPage) {
		String link = linkPage;
		// service 사용하여 리턴할 결과값 처리하는 부분은 생략하고 단순 페이지 링크만 처리함
		if (linkPage == null || linkPage.equals("")) {
			link = "cmm/egovError";
		}
		return link;
	}

	/**
	 * validation rule dynamic java script
	 */
	@RequestMapping("/validator.do")
	public String validate() {
		return "cmm/validator";
	}

	
	/**
	 * 상단 링크시 파라미터 삭제 후 페이지 호출
	 */
	@RequestMapping(value = "/EgovTopPageLink")
	public String EgovTopPageLink(@RequestParam("link") String linkPage , @RequestParam("baseMenuNo") String baseMenuNo ,
			@RequestParam(value = "baseMenuNm", required = false) String baseMenuNm,
			ModelMap model, RedirectAttributes redirectAttributes, HttpServletRequest req)
			 throws Exception{
		String link = linkPage;
		// service 사용하여 리턴할 결과값 처리하는 부분은 생략하고 단순 페이지 링크만 처리함
		if (linkPage == null || linkPage.equals("")) {
			link = "cmm/egovError";
		}
		
		//linkPage  = linkPage+"?baseMenuNo=" + baseMenuNo ;
		redirectAttributes.addFlashAttribute("baseMenuNo", baseMenuNo); //파라미터숨기기
		redirectAttributes.addFlashAttribute("baseMenuNm", baseMenuNm); //파라미터숨기기
		RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker(link);
		return redirectUrlMaker.getRedirectUrl();
		
	}

	
}