package incheon.res.rdm.com.attachfile.web;

import incheon.res.rdm.com.attachfile.service.RdmComAttachfileService;
import incheon.res.rdm.com.attachfile.vo.RdmComAttachfileVO;
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.bind.annotation.RequestParam;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Controller
public class RdmFileMngController {

    @Resource
    private RdmComAttachfileService fileService;

    /**
     * 첨부파일에 대한 목록을 조회한다.
     */
    @RequestMapping("/rdm/com/attachfile/selectFileInfs.do")
    public String selectFileInfs(@ModelAttribute("searchVO") RdmComAttachfileVO fileVO, Map<String, Object> commandMap, ModelMap model) throws Exception {

		String datSeq = commandMap.get("datSeq")==null?fileVO.getDatSeq():(String)commandMap.get("datSeq");
		String tblNam = commandMap.get("tblNam")==null?fileVO.getTblNam():(String)commandMap.get("tblNam");
		String atfCde = commandMap.get("atfCde")==null?fileVO.getAtfCde():(String)commandMap.get("atfCde");
		BigDecimal subSeq = commandMap.get("subSeq")==null?fileVO.getSubSeq():(BigDecimal)commandMap.get("subSeq");
		String updateFlag = commandMap.get("updateFlag")==null?fileVO.getUpdateFlag()==null?"N":fileVO.getUpdateFlag():(String)commandMap.get("updateFlag");

		String atfCdes[] = new String[]{atfCde};

		fileVO.setDatSeq(datSeq);
		fileVO.setTblNam(tblNam);

		if(null == atfCdes[0] || atfCdes[0].equals("") || atfCdes[0].equals("null")){
			fileVO.setInCheck("");
		}else{
			fileVO.setAtfCdeSe(atfCdes);
			fileVO.setInCheck("Y");
		}

		if(null != subSeq && !subSeq.equals("null") && !subSeq.equals("") ){
			fileVO.setSubSeq(subSeq);
		}

		List<RdmComAttachfileVO> result = fileService.selectAttachfileList(fileVO);
	
		model.addAttribute("fileList", result);
		model.addAttribute("updateFlag", updateFlag);
		model.addAttribute("fileListCnt", result.size());
		model.addAttribute("datSeq", datSeq);
		model.addAttribute("tblNam", tblNam);

		return "res/rdm/com/frm/EgovFileList";
    }

    /**
     * 첨부파일 변경을 위한 수정페이지로 이동한다.
     */
    @RequestMapping("/rdm/com/attachfile/selectFileInfsForTable.do")
    public String selectFileInfsForUpdate(@ModelAttribute("searchVO") RdmComAttachfileVO fileVO, Map<String, Object> commandMap,
	    ModelMap model) throws Exception {

		String datSeq = commandMap.get("datSeq")==null?fileVO.getDatSeq():(String)commandMap.get("datSeq");
		String tblNam = commandMap.get("tblNam")==null?fileVO.getTblNam():(String)commandMap.get("tblNam");
		String atfCde = commandMap.get("atfCde")==null?fileVO.getAtfCde():(String)commandMap.get("atfCde");
		BigDecimal subSeq = commandMap.get("subSeq")==null?fileVO.getSubSeq():(BigDecimal)commandMap.get("subSeq");
		String updateFlag = commandMap.get("updateFlag")==null?fileVO.getUpdateFlag()==null?"N":fileVO.getUpdateFlag():(String)commandMap.get("updateFlag");

		String atfCdes[] = new String[]{atfCde};

		fileVO.setDatSeq(datSeq);
		fileVO.setTblNam(tblNam);

		if(null == atfCdes[0] || atfCdes[0].equals("") || atfCdes[0].equals("null")){
			fileVO.setInCheck("");
		}else{
			fileVO.setAtfCdeSe(atfCdes);
			fileVO.setInCheck("Y");
		}

		if(null != subSeq && !subSeq.equals("null") && !subSeq.equals("") ){
			fileVO.setSubSeq(subSeq);
		}

		List<RdmComAttachfileVO> result = fileService.selectAttachfileList(fileVO);
		
		model.addAttribute("fileList", result);
		model.addAttribute("updateFlag", updateFlag);
		model.addAttribute("fileListCnt", result.size());
		model.addAttribute("datSeq", datSeq);
		model.addAttribute("tblNam", tblNam);
		
		return "res/rdm/com/frm/EgovFileList2";
    }
    

    /**
     * 첨부파일 변경을 위한 수정페이지로 이동한다.(팝업창 업로드)
     */
    @RequestMapping("/rdm/com/attachfile/selectFileInfsForUpdate3.do")
    public String selectFileInfsForUpdate3(@ModelAttribute("searchVO") RdmComAttachfileVO fileVO, Map<String, Object> commandMap,
	    ModelMap model) throws Exception {

		String datSeq = commandMap.get("datSeq")==null?fileVO.getDatSeq():(String)commandMap.get("datSeq");
		String tblNam = commandMap.get("tblNam")==null?fileVO.getTblNam():(String)commandMap.get("tblNam");
		String atfCde = commandMap.get("atfCde")==null?fileVO.getAtfCde():(String)commandMap.get("atfCde");
		BigDecimal subSeq = commandMap.get("subSeq")==null?fileVO.getSubSeq():(BigDecimal)commandMap.get("subSeq");
		String target = commandMap.get("target")==null?fileVO.getTarget():(String)commandMap.get("target");
		
		String atfCdes[] = new String[]{atfCde};

		fileVO.setDatSeq(datSeq);
		fileVO.setTblNam(tblNam);

		if(null == atfCdes[0] || atfCdes[0].equals("") || atfCdes[0].equals("null")){
			fileVO.setInCheck("");
		}else{
			fileVO.setAtfCdeSe(atfCdes);
			fileVO.setInCheck("Y");
		}

		if(null != subSeq && !subSeq.equals("null") && !subSeq.equals("") ){
			fileVO.setSubSeq(subSeq);
		}

		List<RdmComAttachfileVO> result = fileService.selectAttachfileList(fileVO);
		
		model.addAttribute("fileList", result);
		model.addAttribute("updateFlag", "Y");
		model.addAttribute("fileListCnt", result.size());
		model.addAttribute("datSeq", datSeq);
		model.addAttribute("tblNam", tblNam);
		model.addAttribute("target",target);
		
		return "res/rdm/com/frm/EgovFileList3";
    }
    
    /**
     * 첨부파일에 대한 삭제를 처리한다.
     */
    @RequestMapping("/rdm/com/attachfile/deleteFileInfs.do")
    public String deleteFileInf(@ModelAttribute("searchVO") RdmComAttachfileVO fileVO, @RequestParam("returnUrl") String returnUrl,
	    HttpServletRequest request,
	    ModelMap model) throws Exception {

		//Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
    	Boolean isAuthenticated = true; //TODO 추후 세션 칼럼 표준화 완료후 원복필요
		if (isAuthenticated) {
		   fileService.deleteAttachfileIdn(fileVO);
		}
		
		if ("".equals(request.getContextPath()) || "/".equals(request.getContextPath())) {
		    return "forward:" + returnUrl;
		}
		
		if (returnUrl.startsWith(request.getContextPath())) {
		    return "forward:" + returnUrl.substring(returnUrl.indexOf("/", 1));
		} else {
		    return "forward:" + returnUrl;
		}
    }

}
