/*************************************************************************************************
 * 프로그램명 : HttpReportRegister.java 프로그램설명 : 집계 문서에대한 보고자 보고 또는 보고자 자료 변경에 사용 작성자 : 강원중 작성일 : 2004.01.12 변경일 : 2003.11.30
 **************************************************************************************************/

package kr.co.kihyun.beans.totsys.report;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.jdo.PersistenceManager;
import javax.jdo.Transaction;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.co.kihyun.beans.ecross.ECrossInterface;
import kr.co.kihyun.beans.ecross.VCMCCMC2016;

import kr.co.kihyun.beans.entity.AcceptanceCode;
import kr.co.kihyun.beans.entity.MDept;
import kr.co.kihyun.beans.entity.MUser;
import kr.co.kihyun.beans.entity.TotDoc;
import kr.co.kihyun.beans.entity.TotDoc.TotRange;
import kr.co.kihyun.beans.entity.TotReport;
import kr.co.kihyun.beans.entity.TotReportProcess;
import kr.co.kihyun.beans.entity.util.*;
import kr.co.kihyun.beans.totsys.doc.table.item.Item;
import kr.co.kihyun.beans.totsys.doc.table.item.ItemList;
import kr.co.kihyun.beans.totsys.menu.MenuBean;
import kr.co.kihyun.beans.user.HttpSSOLogin;
import kr.co.kihyun.io.FileUtil;
import kr.co.kihyun.io.MultipartRequest;
import kr.co.kihyun.lang.MInteger;
import kr.co.kihyun.lang.MLong;
import kr.co.kihyun.lang.MString;
import kr.co.kihyun.moumi.MoumiConfig;
import kr.co.kihyun.moumi.doc.table.InsertMTable;
import kr.co.kihyun.moumi.doc.table.item.MItem;
import kr.co.kihyun.moumi.report.MReportData;
import kr.co.kihyun.service.PrssReportsService;
import kr.co.kihyun.text.html.HtmlUtil;
import kr.co.kihyun.text.html.ServletUtil;
import org.datanucleus.ObjectManager;
import org.datanucleus.jdo.JDOPersistenceManager;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@WebServlet("/servlet/kr.co.kihyun.beans.totsys.report.HttpVCMCCMC2016Send")
public class HttpVCMCCMC2016Send extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private static final Logger LOG = LoggerFactory.getLogger(HttpVCMCCMC2016Send.class);

	@Override
	public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		doPost(req, res);
	}

	@Override
	public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		res.setContentType("text/html;charset=UTF-8");
		res.setHeader("Cache-Control","no-cache");
		res.setHeader("Pragma","no-cache");
		res.setDateHeader ("Expires", -1);
		PrintWriter out = res.getWriter();
		HttpSession session = req.getSession(true);

		/********** session내의 userId **********/
		String usID = HttpSSOLogin.getLoginID(req);

                String[] rptIds = String.valueOf(req.getParameter("reportID")).split("\\|");//20160419 추가
                Long docID = MLong.parseLong(req.getParameter("docID"));//20160503 추가
		MPersistenceManager moumiPm = new MPersistenceManager(PMF.get().getPersistenceManager());
		Transaction tx = moumiPm.currentTransaction();
		MPersistenceManager eCrossPm = new MPersistenceManager(PMF.get("ECROSS").getPersistenceManager());
		Transaction eCrossTx = eCrossPm.currentTransaction();
		ObjectManager om = ((JDOPersistenceManager) tx.getPersistenceManager()).getObjectManager(); // jeus 6 proplem
                Long rptIdTmp = null;//20160419 추가
                
		try {
                        for(String rptId : rptIds){//20160419 추가
                            rptIdTmp = MLong.parseLong(rptId);//20160419 추가
                            TotReport totReport = moumiPm.getObjectById(TotReport.class, rptIdTmp);//20160419 수정
                    
			eCrossTx.begin();
			VCMCCMC2016 eInterface = new VCMCCMC2016(totReport);
			tx.begin();
			eInterface.saveAll(moumiPm, eCrossPm, totReport.getTotDoc().getDept(moumiPm));
			tx.commit();
			eCrossTx.commit();
                        }    
                    
                        //20160503 IS REPORT 테이블 MANAGEMENT_CODE UPDATE 추가 시작
                        ReportDataUpdate rptDataupd = new ReportDataUpdate();
                        rptDataupd.update_is_tot_report(docID);
                        //20160503 IS REPORT 테이블 MANAGEMENT_CODE UPDATE 추가 끝
                        
                        out.println(ServletUtil.alert("교육부로 취합자료를 연계 전송하였습니다"));
                        //out.println(ServletUtil.getJavaScript("history.back();"));
                        
                        } catch (Exception ex) {
			ex.printStackTrace();
			LOG.error(MoumiConfig.getMessageBundle().getString("moumi.message.tot_report") + MoumiConfig.getMessageBundle().getString("moumi.message.tot_report.save")+ MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.fail") +" {}, {}, {}",
					new Object[] { usID, req.getRemoteAddr(), rptIdTmp });//20160419 수정
			out.println(ServletUtil.alert(MoumiConfig.getMessageBundle().getString("moumi.message.popup.saveFailAdmin")));
			out.println(ServletUtil.getJavaScript("history.back();"));
                        } finally {
			if (tx.isActive())
				tx.rollback();
			moumiPm.close();
			if (eCrossTx.isActive())
				eCrossTx.rollback();
			eCrossPm.close();
                        out.println(ServletUtil.getJavaScript("parent.fn_indiClose();"));//20160421 추가
		}
	}
}
