package itn.let.solr.sys.web;

import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.bind.annotation.ResponseBody;

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.solr.sys.service.ResearchService;
import itn.let.solr.sys.service.ResearchVO;

@Controller
public class ResearchController {
	
    @Resource(name = "researchService")
    protected ResearchService researchService;
    
	@RequestMapping("/uss/research/researchList.do")
    public String selectResearchList(@ModelAttribute("researchVO") ResearchVO searchVO,
    		Model model)
            throws Exception {
    	
		LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		
        /** 프로퍼티 데이터 에서 페이지정보 셋팅 */       
       	//searchVO.setPageUnit(propertiesService.getInt("researchPageUnit"));
    	//searchVO.setPageSize(propertiesService.getInt("researchPageSize"));
    	 	
    
		/** pageing */
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(searchVO.getPageIndex());
		paginationInfo.setRecordCountPerPage(searchVO.getPageUnit());
		paginationInfo.setPageSize(searchVO.getPageSize());
		
		searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
		searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
		searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
		
		List<ResearchVO> researchList = researchService.selectResearchList(searchVO);
    	model.addAttribute("researchList",researchList);
    	
		int totCnt = researchService.selectResearchListTotCnt(searchVO);
		paginationInfo.setTotalRecordCount(totCnt);
		/** 페이지정보  */
        model.addAttribute("paginationInfo", paginationInfo);   
        
    	//List<?> researchList = researchService.selectResearchList(searchVO);
    	
   	
        return "/sym/research/researchList";
    } 
	
	/*단일만족도*/
	@RequestMapping("/uss/research/researchResult.do")
	public String selectResearchResult(@ModelAttribute("researchVO") ResearchVO searchVO, 	Model model) throws Exception {

		ResearchVO tempSearchVO = new ResearchVO();
		
		tempSearchVO = researchService.selectResearchResultCnt(searchVO);
		//searchVO.setMcIdx(mcIdx);
		//searchVO.setMcTitle(mcTitle);	
		
		model.addAttribute("researchResultCnt",tempSearchVO);
		
		//searchVO.setPageIndex(pageIndex);
		
		Calendar now = Calendar.getInstance();
		int year, yearMin, yearMax;

		year = now.get(Calendar.YEAR);
		yearMin = 2014;
		yearMax = now.get(Calendar.YEAR);
		
		model.addAttribute("yearMin",yearMin);
		model.addAttribute("yearMax",yearMax);		
		
		List<?> researchResult = researchService.selectResearchResult(searchVO);
		model.addAttribute("researchResult",researchResult);		
		
		return  "/sym/research/researchResult";
	}
	
	/*단일도 사용자 테스트 페이지*/
	@RequestMapping("/sys/research/userResearch.do")
	public String userResearch(Model model, HttpServletRequest request ) throws Exception {
		selectNaviList(3, model);
		return  "/sym/research/userResearch";
	}
	
	/*하단 만족도 IMPORT 파일*/
	@RequestMapping("/web/research/userResearchImport.do")
	public String userResearchImport(@RequestParam Map<String, Object> commandMap, Model model) throws Exception {
		String mcIdx = (String) commandMap.get("mcIdx");
		selectNaviList(Integer.parseInt(mcIdx), model);
		return  "/sym/research/userResearchImport";
	}
	
	/**
	 * NAVI리스트
	 */
	public boolean selectNaviList(Integer mcIdx, Model model) throws Exception {
		
		if(mcIdx == null || mcIdx < 1)
			mcIdx = 0;
		
		/*List<?> naviList = researchService.selectNaviList(mcIdx);
		
		model.addAttribute("naviList", naviList);
		
		List<?> naviSubList = researchService.selectNaviSubList(mcIdx);
		
		model.addAttribute("naviSubList", naviSubList);
		
		ThemesVO themesVO = researchService.selectThemesVO(mcIdx);
		
		model.addAttribute("themesVO", themesVO);
		
		ManagerVO managerVO = researchService.selectManagerVO(mcIdx);
		
		model.addAttribute("managerVO", managerVO);*/
		
		List<?> url =  researchService.selectMcUrl(mcIdx);
		model.addAttribute("mcUrl", url);
		model.addAttribute("mcIdx", mcIdx);
		
 		return true;
	}
	
	
	 /**
  	 * 만족도조사를 입력한다.
  	 * @param paramMap - 만족도조사정보정보가 담겨있는 paramMap
  	 * @param model
     * @param insertResearchVO 
  	 * @return model
  	 * @exception Exception
  	 */
    @RequestMapping(value="/user/insertResearch.do")
    public @ResponseBody  Map<?, ?> insertResearch(@RequestParam Map<String, Object> paramMap, ModelMap model, HttpServletRequest request , Model model1)  throws Exception {
    	String requestIP = request.getRemoteAddr();
 	    String research_val = (String)paramMap.get("research_val");
 	    String sfUrl = (String)paramMap.get("mcUrl");
 	    int mcIdx = Integer.parseInt((String) paramMap.get("mcIdx"));
 
 	    ResearchVO tempSearchVO = new ResearchVO();
 	   
 	    tempSearchVO.setSfIp(requestIP);
 	    tempSearchVO.setSfResearch(research_val);
 	    tempSearchVO.setSfUrl(sfUrl);
 	    tempSearchVO.setMcIdx(mcIdx);
    	
 	    researchService.insertResearch(tempSearchVO);
 	    Map<String, Object> resultMap = new HashMap<String, Object>();
 	    resultMap.put("message", "정상으로 입력되었습니다." ) ;
        return resultMap;
    }
    
}
