package itn.let.schdlr.service.web;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;

import egovframework.rte.fdl.property.EgovPropertyService;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.EgovMessageSource;
import itn.com.cmm.LoginVO;
import itn.com.cmm.service.EgovCmmUseService;
import itn.com.cmm.service.EgovFileMngService;
import itn.com.cmm.service.EgovFileMngUtil;
import itn.com.cmm.service.FileVO;
import itn.let.schdlr.service.SchdlrManageService;
import itn.let.schdlr.service.SchdlrVO;

/**
 * 민원 관리를 처리하는 Controller Class 구현
 * 
 * @since 2009.04.10
 * @see
 * <pre>
 * << 개정이력(Modification Information) >>
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *  2019.06.28  신명섭          최초 생성
 * </pre>
 * @author 신명섭
 * @version 1.0
 */
@Controller
public class SchdlrManageController {
	
	/** userManageService */
	@Resource(name = "SchdlrManageService")
	private SchdlrManageService schdlrManageService;
	
	/** EgovPropertyService */
	@Resource(name = "propertiesService")
	protected EgovPropertyService propertiesService;
	
	/** EgovMessageSource */
	@Resource(name = "egovMessageSource")
	EgovMessageSource egovMessageSource;
	
	@Resource(name="EgovFileMngUtil")
	private EgovFileMngUtil fileUtil;
	
	@Resource(name="EgovFileMngService")
    private EgovFileMngService fileMngService;
	
	/** cmmUseService */
	@Resource(name = "EgovCmmUseService")
	private EgovCmmUseService cmmUseService;
	

	// 스케줄관리 메뉴 클릭
	@RequestMapping(value="/web/uss/itsm/schdlr/SchdlrManage.do")
	public String SchdlrManage(@RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		//schdlrVO.setSchdlrCfgUserId(loginVO.getId());
		
		SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO); // 스케줄 환경설정
		String schdlrOpenCd = configVO.getSchdlrOpenCd();
		String returnUrl = "";
		
		// 관리자 유무
		List<String> authorities = EgovUserDetailsHelper.getAuthorities();
		String tmpCmplntUserTy = "U";
		for (String authority : authorities)  if (authority.equals("ROLE_ADMIN")) tmpCmplntUserTy = "A";
		
		String logCmd = "";
		if (("U").equals(tmpCmplntUserTy)) logCmd = "USR";
		else logCmd = "ADM";
		
		// 스케줄 메뉴 첫화면
		if (schdlrOpenCd == null) schdlrOpenCd = "01";
		if (schdlrOpenCd.equals("01")) returnUrl = "/web/uss/itsm/schdlr/selectSchdlrList.do"; // 월별
		else if (schdlrOpenCd.equals("02")) returnUrl = "/web/uss/itsm/schdlr/schdlrWeekList.do"; // 주별
		else if (schdlrOpenCd.equals("03")) returnUrl = "/web/uss/itsm/schdlr/schdlrDayList.do"; // 일별
		
		return "redirect:" + returnUrl + "?logCmd=" + logCmd;
	}

	// 스케줄관리 일정화면(월)
	@RequestMapping(value="/web/uss/itsm/schdlr/selectSchdlrList.do")
	public String selectSchdlrList(@RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setSchdlrCfgUserId(loginVO.getId());
		
		SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO);
		model.addAttribute("configVO", configVO);
		
		return "/uss/itsm/schdlr/schdlrList";
	}
	
	
	// 스케줄관리 일정화면(주별)
	@RequestMapping(value="/web/uss/itsm/schdlr/schdlrWeekList.do")
	public String selectSchdlrWeekList(@RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setSchdlrCfgUserId(loginVO.getId());

		SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO);
		model.addAttribute("configVO", configVO);
		
		return "/uss/itsm/schdlr/schdlrWeekList";
	}
	

	// 스케줄관리 일정화면(일별 )
	@RequestMapping(value="/web/uss/itsm/schdlr/schdlrDayList.do")
	public String selectSchdlrDayList(@RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setSchdlrCfgUserId(loginVO.getId());
		
		SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO);
		model.addAttribute("configVO", configVO);
		return "/uss/itsm/schdlr/schdlrDayList";
	}
	
	
	// 스케줄관리 일정목록
	@RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/schdlrSchList.do")
	public String selectSchdlrSchList(@PathVariable("siteId") String siteId, @RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setFrstRegisterId(loginVO.getId());

		schdlrVO.setSchdlrCfgUserId(loginVO.getId());
		SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO);
		model.addAttribute("configVO", configVO);
		
		if (("").equals(schdlrVO.getSchdlrBgnDatetime()) || ("").equals(schdlrVO.getSchdlrEndDatetime())) {
			Calendar cal = Calendar.getInstance();
			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
			schdlrVO.setSchdlrBgnDatetime(dateFormat.format(cal.getTime()) + "-" + "01");
			schdlrVO.setSchdlrEndDatetime(dateFormat.format(cal.getTime()) + "-" + cal.getActualMaximum(Calendar.DAY_OF_MONTH));
		}
		
		/** pageing */
		schdlrVO.setPageUnit(10);
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(schdlrVO.getPageIndex());
		paginationInfo.setRecordCountPerPage(schdlrVO.getPageUnit());
		paginationInfo.setPageSize(schdlrVO.getPageSize());

		schdlrVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
		schdlrVO.setLastIndex(paginationInfo.getLastRecordIndex());
		schdlrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
		
		// 일정 목록 조회
		List<SchdlrVO> schList = schdlrManageService.selectSchList(schdlrVO);
		int totCnt = 0;
		if (schList.size() > 0 ) totCnt = schList.get(0).getTotCnt();
		
		paginationInfo.setTotalRecordCount(totCnt);
		model.addAttribute("paginationInfo", paginationInfo);
		model.addAttribute("schList", schList);
		
		String siteIdUrl = "/" + siteId + "/web";
		model.addAttribute("siteId", siteId);
		return "/uss/itsm/schdlr/schdlrSchList";
	}
	
	
	// 스케줄관리 일정 데이터를 조회한다.(월) 
	@SuppressWarnings("unchecked")
	@RequestMapping(value="/web/uss/itsm/schdlr/selectSchdlrListAjax.do")
	public ModelAndView selectSchdlrListAjax(@RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setFrstRegisterId(loginVO.getId());
		schdlrVO.setSchdlrDeptId(loginVO.getId()); // !부서 ID set 필요
		
		// 관리자 유무
		List<String> authorities = EgovUserDetailsHelper.getAuthorities();
		String userAuthTy = "U";
		for (String authority : authorities)  if (authority.equals("ROLE_ADMIN")) userAuthTy = "A";
		schdlrVO.setUserAuthTy(userAuthTy);
		
		String searchYear = (String) commandMap.get("searchYear");
		String searchMonth = (String) commandMap.get("searchMonth");
		
		if (("").equals(searchYear) || ("").equals(searchMonth)) {
			Calendar cal = Calendar.getInstance();
			int iYear = cal.get(java.util.Calendar.YEAR); int iMonth = cal.get(java.util.Calendar.MONTH);
			
			searchYear = Integer.toString(iYear);
			searchMonth = (iMonth+1) < 10 ? "0" + Integer.toString(iMonth+1) : Integer.toString(iMonth+1);
		}
		
		// !개인 스케줄러 설정 조회 필요
		// bgnDayOfWeek 주시작요일
		
		// 스케줄조회 월별
//		schdlrVO.setSearchDate("20191001"); // 임시 화면단에서 전송 필요
		List<SchdlrVO> selectSchdlrList = schdlrManageService.selectSchdlrList(schdlrVO);
		
		// 조회 결과 파싱
		JSONObject resultList = new JSONObject();
        resultList.put("searchYear", searchYear);
        resultList.put("searchMonth", searchMonth);
        
        // 날짜별
        for (SchdlrVO vo : selectSchdlrList) {
        	JSONArray infoArr = new JSONArray();
        	
//			StringTokenizer strTk = new StringTokenizer(exRoomArr[i], "//");
//			String tmpExRoom = strTk.hasMoreTokens() ? strTk.nextToken() : "";
        	
        	String[] testa = ("").split("\\|");
        	String[] testb = ("aa").split("\\|");
        	//System.out.println(testa.length);
        	//System.out.println(testb.length);
        	
			String[] schdlrIdArr = vo.getSchdlrIds().split("\\|");
			String[] schdlrTyCdArr = vo.getSchdlrTyCd().split("\\|");
			String[] schdlrTitleArr = vo.getSchdlrTitles().split("\\|");
			String[] schdlrBgnDatetimeArr = vo.getSchdlrBgnDatetimes().split("\\|");
			String[] schdlrEndDatetimeArr = vo.getSchdlrEndDatetimes().split("\\|");
			String[] schdlrDtSecArr = vo.getSchdlrDtSecs().split("\\|");
        	
			// 날짜 해당 일정별
			for (int i=0; i < schdlrIdArr.length; i++) {
				JSONObject infoJson = new JSONObject();
				infoJson.put("schdlrId", schdlrIdArr[i]);
				infoJson.put("schdlrTyCd", schdlrTyCdArr[i]);
				infoJson.put("schdlrTitle", schdlrTitleArr[i]);
				infoJson.put("schdlrBgnDatetime", schdlrBgnDatetimeArr[i]);
				infoJson.put("schdlrEndDatetime", schdlrEndDatetimeArr[i]);
				infoJson.put("schdlrDtSec", schdlrDtSecArr[i]);
				infoArr.add(infoJson);
			}
			
			resultList.put(vo.getStrDate(), infoArr);
        }
		
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
        modelAndView.addObject("resultList", resultList);
		return modelAndView;
	}
	

	// 스케줄관리 일정 데이터를 조회한다.(주별, 일별)
	@SuppressWarnings("unchecked")
	@RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/schdlrWeekListAjax.do")
	public ModelAndView schdlrWeekListAjax(@PathVariable("siteId") String siteId, @RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setFrstRegisterId(loginVO.getId());
		schdlrVO.setSchdlrDeptId(loginVO.getId()); // !부서 ID set 필요
		
		// 관리자 유무
		List<String> authorities = EgovUserDetailsHelper.getAuthorities();
		String userAuthTy = "U";
		for (String authority : authorities)  if (authority.equals("ROLE_ADMIN")) userAuthTy = "A";
		schdlrVO.setUserAuthTy(userAuthTy);
		
		String searchYear = (String) commandMap.get("searchYear");
		String searchMonth = (String) commandMap.get("searchMonth");
		
		String searchDay = (String) commandMap.get("searchDay");
		String searchBgnDt = (String) commandMap.get("searchBgnDt");
		String searchEndDt = (String) commandMap.get("searchEndDt");
		
		if (("").equals(searchYear) || ("").equals(searchMonth)) {
			Calendar cal = Calendar.getInstance();
			int iYear = cal.get(java.util.Calendar.YEAR); int iMonth = cal.get(java.util.Calendar.MONTH);
			
			searchYear = Integer.toString(iYear);
			searchMonth = (iMonth+1) < 10 ? "0" + Integer.toString(iMonth+1) : Integer.toString(iMonth+1);
		}
		
		// 스케줄조회 월별
//		schdlrVO.setSearchDate("20191001"); // 임시 화면단에서 전송 필요
		List<SchdlrVO> selectSchdlrList = schdlrManageService.selectSchdlrList(schdlrVO);
		
		// 조회 결과 파싱
		JSONObject resultList = new JSONObject();
		resultList.put("searchYear", searchYear);
		resultList.put("searchMonth", searchMonth);
		resultList.put("searchDay", searchDay);
		resultList.put("searchBgnDt", searchBgnDt);
		resultList.put("searchEndDt", searchEndDt);
		
		// 날짜별
		for (SchdlrVO vo : selectSchdlrList) {
			JSONArray infoArr = new JSONArray();
			
//			StringTokenizer strTk = new StringTokenizer(exRoomArr[i], "//");
//			String tmpExRoom = strTk.hasMoreTokens() ? strTk.nextToken() : "";
			
			String[] testa = ("").split("\\|");
			String[] testb = ("aa").split("\\|");
			//System.out.println(testa.length);
			//System.out.println(testb.length);
			
			String[] schdlrIdArr = vo.getSchdlrIds().split("\\|");
			String[] schdlrTyCdArr = vo.getSchdlrTyCd().split("\\|");
			String[] schdlrTitleArr = vo.getSchdlrTitles().split("\\|");
			String[] schdlrBgnDatetimeArr = vo.getSchdlrBgnDatetimes().split("\\|");
			String[] schdlrEndDatetimeArr = vo.getSchdlrEndDatetimes().split("\\|");
			String[] schdlrBgnTimeArr = vo.getSchdlrBgnTimes().split("\\|");
			String[] schdlrEndTimeArr = vo.getSchdlrEndTimes().split("\\|");
			String[] schdlrDtSecArr = vo.getSchdlrDtSecs().split("\\|");
			
			// 날짜 해당 일정별
			for (int i=0; i < schdlrIdArr.length; i++) {
				JSONObject infoJson = new JSONObject();
				infoJson.put("schdlrId", schdlrIdArr[i]);
				infoJson.put("schdlrTyCd", schdlrTyCdArr[i]);
				infoJson.put("schdlrTitle", schdlrTitleArr[i]);
				infoJson.put("schdlrBgnDatetime", schdlrBgnDatetimeArr[i]);
				infoJson.put("schdlrEndDatetime", schdlrEndDatetimeArr[i]);
				infoJson.put("schdlrBgnTime", schdlrBgnTimeArr[i]);
				infoJson.put("schdlrEndTime", schdlrEndTimeArr[i]);
				infoJson.put("schdlrDtSec", schdlrDtSecArr[i]);
				infoArr.add(infoJson);
			}
			
			resultList.put(vo.getStrDate(), infoArr);
		}
		
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
		modelAndView.addObject("resultList", resultList);
		return modelAndView;
	}
	
	
	// 스케줄 상세 화면
	@RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/schdlrDetail.do")
	public String selectSchdlrDetail(@PathVariable("siteId") String siteId, @RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setSchdlrCfgUserId(loginVO.getId());
		model.addAttribute("loginId", loginVO.getId());
		
		SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO);
		model.addAttribute("configVO", configVO);
		
		SchdlrVO result = schdlrManageService.selectSchdlrDetail(schdlrVO);
		model.addAttribute("result", result);
		
		List<SchdlrVO> share = schdlrManageService.selectSchdlrShare(schdlrVO);
		model.addAttribute("share", share);
		
		if (!("").equals(result.getSchdlrAtchFileId())) { // 기 첨부파일
			FileVO fileVO = new FileVO();
			fileVO.setAtchFileId(result.getSchdlrAtchFileId());
			List<FileVO> cmplntReqFileList = fileMngService.selectFileInfs(fileVO);
			model.addAttribute("schdlrReqFileList", cmplntReqFileList);
		}
		
		return "/uss/itsm/schdlr/schdlrDetail";
	}
	
	
	// 스케줄관리 등록/수정 화면
	@RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/schdlrUpdate.do")
	public String schdlrUpdate(@PathVariable("siteId") String siteId, @RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		String siteIdUrl = "/" + siteId + "/web";
		
		if (!("").equals(schdlrVO.getSchdlrId())) { // 상세
			SchdlrVO result = schdlrManageService.selectSchdlrDetail(schdlrVO);
			model.addAttribute("result", result);
			
			if (!result.getFrstRegisterId().equals(loginVO.getId())) { // 본인 확인
				model.addAttribute("resultMsg", "self_fail");
				return "forward:"+siteIdUrl+"/uss/itsm/schdlr/schdlrDetail.do";
			}
			
			List<SchdlrVO> share = schdlrManageService.selectSchdlrShare(schdlrVO);
			model.addAttribute("share", share);
			
			if (!("").equals(result.getSchdlrAtchFileId())) { // 기 첨부파일
				FileVO fileVO = new FileVO();
				fileVO.setAtchFileId(result.getSchdlrAtchFileId());
				List<FileVO> cmplntReqFileList = fileMngService.selectFileInfs(fileVO);
				model.addAttribute("schdlrReqFileList", cmplntReqFileList);
			}
		}
		
		model.addAttribute("siteId", siteId);
		return "/uss/itsm/schdlr/schdlrUpdate";
	}
	
	
	// 스케줄 등록
	@RequestMapping("/{siteId}/web/uss/itsm/schdlr/schdlrInsertAjax.do")
	public ModelAndView insertSchdlrInsertAjax(@PathVariable("siteId") String siteId, @RequestParam Map<?, ?> commandMap, SchdlrVO schdlrVO
			,final MultipartHttpServletRequest multiRequest) throws Exception {
		List<String> authorities = EgovUserDetailsHelper.getAuthorities();
		
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setFrstRegisterId(loginVO.getId());
		schdlrVO.setFrstRegisterNm(loginVO.getId());
		schdlrVO.setLastUpdusrId(loginVO.getId());
		schdlrVO.setLastUpdusrNm(loginVO.getName());
		
		String result = "success";
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
		
		// 첨부파일
		String atchFileId = schdlrVO.getSchdlrAtchFileId();
			
		final Map<String, MultipartFile> files = multiRequest.getFileMap();
		if (!files.isEmpty()) {
			if ("".equals(atchFileId)) {
				List<FileVO> fileResult = fileUtil.parseFileInf(files, "SCHDLR_", 0, atchFileId, "", "");
				atchFileId = fileMngService.insertFileInfs(fileResult);
			} else {
				FileVO fvo = new FileVO();
				fvo.setAtchFileId(atchFileId);
				int cnt = fileMngService.getMaxFileSN(fvo);
				List<FileVO> fileResult = fileUtil.parseFileInf(files, "SCHDLR_", cnt, atchFileId, "", "");
				fileMngService.updateFileInfs(fileResult);
			}
		}
		
		schdlrVO.setSchdlrAtchFileId(atchFileId);
		
		try {
			schdlrManageService.schdlrInsert(schdlrVO);
		} catch (Exception e) {
			result = "fail";
		}
		
		modelAndView.addObject("result", result);
		return modelAndView;
	}
	
	
	// 스케줄 수정
	@RequestMapping("/{siteId}/web/uss/itsm/schdlr/schdlrUpdateAjax.do")
	public ModelAndView updateSchdlrUpdateAjax(@PathVariable("siteId") String siteId, @RequestParam Map<?, ?> commandMap, SchdlrVO schdlrVO
			,final MultipartHttpServletRequest multiRequest) throws Exception {
		List<String> authorities = EgovUserDetailsHelper.getAuthorities();
		
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setLastUpdusrId(loginVO.getId());
		schdlrVO.setLastUpdusrNm(loginVO.getName());
		
		String result = "success";
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
		
		SchdlrVO resultVO = schdlrManageService.selectSchdlrDetail(schdlrVO);
		
		if (!resultVO.getFrstRegisterId().equals(loginVO.getId())) { // 본인 확인
			result = "self_fail";
			modelAndView.addObject("result", result);
			return modelAndView;
		}
		
		// 첨부파일
		String atchFileId = schdlrVO.getSchdlrAtchFileId();
		
		final Map<String, MultipartFile> files = multiRequest.getFileMap();
		if (!files.isEmpty()) {
			if ("".equals(atchFileId)) {
				List<FileVO> fileResult = fileUtil.parseFileInf(files, "SCHDLR_", 0, atchFileId, "", "");
				atchFileId = fileMngService.insertFileInfs(fileResult);
			} else {
				FileVO fvo = new FileVO();
				fvo.setAtchFileId(atchFileId);
				int cnt = fileMngService.getMaxFileSN(fvo);
				List<FileVO> fileResult = fileUtil.parseFileInf(files, "SCHDLR_", cnt, atchFileId, "", "");
				fileMngService.updateFileInfs(fileResult);
			}
		}
		
		schdlrVO.setSchdlrAtchFileId(atchFileId);
		
		try {
			schdlrManageService.schdlrUpdate(schdlrVO);
		} catch (Exception e) {
			result = "fail";
		}
		
		modelAndView.addObject("result", result);
		return modelAndView;
	}
	
	
	// 환경설정 상세 화면
	@RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/selectSchConfigDetail.do")
	public String selectSchConfigDetail(@PathVariable("siteId") String siteId, @RequestParam Map <String, Object> commandMap
			,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setSchdlrCfgUserId(loginVO.getId());
		
		// 관리자 유무
		List<String> authorities = EgovUserDetailsHelper.getAuthorities();
		String authTy = "U";
		for (String authority : authorities)  if (authority.equals("ROLE_ADMIN")) authTy = "A";
		
		SchdlrVO result = schdlrManageService.selectSchConfigDetail(schdlrVO);
		model.addAttribute("result", result);
		
		model.addAttribute("result", result);
		model.addAttribute("authTy", authTy);
		String siteIdUrl = "/" + siteId + "/web";
		model.addAttribute("siteId", siteId);
		return "/uss/itsm/schdlr/schConfigDetail";
	}

	
	// 환경설정 수정
	@RequestMapping("/{siteId}/web/uss/itsm/schdlr/updateSchConfigAjax.do")
	public ModelAndView updateSchConfigAjax(@PathVariable("siteId") String siteId, @RequestParam Map<?, ?> commandMap, SchdlrVO schdlrVO
			,final MultipartHttpServletRequest multiRequest) throws Exception {
		LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		schdlrVO.setSchdlrCfgUserId(loginVO.getId());
		
		String result = "success";
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("jsonView");
		
		SchdlrVO resultVO = schdlrManageService.selectSchConfigDetail(schdlrVO);
		
		if (!resultVO.getSchdlrCfgUserId().equals(loginVO.getId())) { // 본인 확인
			result = "self_fail";
			modelAndView.addObject("result", result);
			return modelAndView;
		}
		
		try {
			schdlrManageService.updateSchConfig(schdlrVO);
		} catch (Exception e) {
			result = "fail";
		}
		
		modelAndView.addObject("result", result);
		return modelAndView;
	}
	
}