/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKA183SFLogic
 *	ソースファイル名：KKA183SFLogic.java
 *	作成者			：FJ)北村
 *	日付			：2018年03月09日
 *＜機能概要＞
 *   契約者情報照会(卸先事業者)(API)のビューロジックです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v37.00.00	2018/03/09	FJ)北村		【ANK-3366-00-00】eo光設備卸対応
 *
 **********************************************************************/
package eo.web.webview.KKA183SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.HashMap;
import java.util.Map;

import org.json.JSONException;
import org.json.JSONObject;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.common.JKKApiCommon;
import eo.web.webview.common.JKKApiCommonUtil;
import eo.web.webview.mapping.KKSV0896_KKSV0896OPDBMapper;

/**
 * KKA183のビューロジックです。
 * <p>
 * <br>
 * 
 * @author 富士通
 * 
 */
@SuppressWarnings("serial")
public class KKA183SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 契約者情報照会(卸先事業者)処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean init() throws Exception
	{

		// サービス結果格納用サービスフォームBean
		X31SDataBeanAccess bean = null;

		// リクエストパラメータ(JSONデータ)
		Map<String, Object> requestMap = null;

		// JSON形式のレスポンスデータ
		String jsonResponse = "";

		try
		{
			// サービス結果格納用サービスフォームBean取得
			bean = getServiceFormBean();

			// JSONデータ取得
			requestMap = JKKApiCommonUtil.getJsonDataFromOrs(getSessionId());
			
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();

			if (!JKKApiCommon.checkRequestRestriction(commonBean))
			{
				// 規制中の場合
				DEBUG_LOG.debug("■業務規制エラー");

				// 処理応答電文(エラー)を取得
				jsonResponse = JKKApiCommon.createJsonResponse(requestMap, JKKStrConst.RETURN_CD_8000, JKKStrConst.RETURN_MESSAGE_SYSTEM_TIME_OUT)
				.toString();
				// 応答電文に設定
				bean.sendMessageString(KKA183SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, JKKApiCommon.getResponseMsg(jsonResponse));
				return true;
			}
			
			// パラメータチェック
			jsonResponse = checkParameter(requestMap);
			if (!JKKApiCommon.isNull(jsonResponse))
			{
				// 応答電文に設定
				bean.sendMessageString(KKA183SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, JKKApiCommon.getResponseMsg(jsonResponse));
				return true;
			}

			// サービス呼び出し準備
			HashMap<String, Object> paramMap = new HashMap<String, Object>();
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0896");
			HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
			HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
			KKSV0896_KKSV0896OPDBMapper mapper = new KKSV0896_KKSV0896OPDBMapper();

			// 上りマッピング
			mapper.setKKSV089601CC(requestMap, inputMap, JPCModelConstant.FUNC_CD_1);
			// サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
			// 下りマッピング
			HashMap<String, Object> responseMap = new HashMap<String, Object>();
			mapper.getKKSV089601CC(responseMap, outputMap);

			// 共通項目を設定したJSONオブジェクトを生成する
			JSONObject jsonResObj = JKKApiCommonUtil.createJsonResponse(requestMap,
					(String)responseMap.get("returnCode"), (String)responseMap.get("returnMessage"));
			if ("0000".equals(responseMap.get("returnCode")))
			{
				// 個別項目設定
				jsonResObj.put("commonKey", JKKApiCommonUtil.getJsonValue(requestMap.get("commonKey")));
				jsonResObj.put("contractStateNet", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_kei_stat_net")));
				jsonResObj.put("serviceStartDateNet", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_sta_ymd_net")));
				jsonResObj.put("claimStartDateNet", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_chrg_staymd_net")));
				jsonResObj.put("router", JKKApiCommonUtil.getJsonValue(responseMap.get("takinort_sbt")));
				jsonResObj.put("tel", JKKApiCommonUtil.getJsonValue(responseMap.get("tel_kei")));
				jsonResObj.put("commonKeyTel", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_kei_no_tel")));
				jsonResObj.put("contractStateTel", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_kei_stat_tel")));
				jsonResObj.put("serviceStartDateTel", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_sta_ymd_tel")));
				jsonResObj.put("claimStartDateTel", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_chrg_staymd_tel")));
				jsonResObj.put("phoneNum1", JKKApiCommonUtil.getJsonValue(responseMap.get("telno1")));
				jsonResObj.put("portNum1", JKKApiCommonUtil.getJsonValue(responseMap.get("va_port_no1")));
				jsonResObj.put("phoneNum2", JKKApiCommonUtil.getJsonValue(responseMap.get("telno2")));
				jsonResObj.put("portNum2", JKKApiCommonUtil.getJsonValue(responseMap.get("va_port_no2")));
				jsonResObj.put("optionTel1", JKKApiCommonUtil.getJsonValue(responseMap.get("option_tel1")));
				jsonResObj.put("optionTel2", JKKApiCommonUtil.getJsonValue(responseMap.get("option_tel2")));
				jsonResObj.put("tv", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_kei")));
				jsonResObj.put("commonKeyTv", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_kei_no_tv")));
				jsonResObj.put("contractStateTv", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_kei_stat_tv")));
				jsonResObj.put("serviceStartDateTv", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_sta_ymd_tv")));
				jsonResObj.put("claimStartDateTv", JKKApiCommonUtil.getJsonValue(responseMap.get("svc_chrg_staymd_tv")));
				jsonResObj.put("stbType1", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_sbt1")));
				jsonResObj.put("stbName1", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_name1")));
				jsonResObj.put("tvCourse1", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course1")));
				jsonResObj.put("tvCourseName1", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course_name1")));
				jsonResObj.put("stbType2", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_sbt2")));
				jsonResObj.put("stbName2", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_name2")));
				jsonResObj.put("tvCourse2", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course2")));
				jsonResObj.put("tvCourseName2", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course_name2")));
				jsonResObj.put("stbType3", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_sbt3")));
				jsonResObj.put("stbName3", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_name3")));
				jsonResObj.put("tvCourse3", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course3")));
				jsonResObj.put("tvCourseName3", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course_name3")));
				jsonResObj.put("stbType4", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_sbt4")));
				jsonResObj.put("stbName4", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_name4")));
				jsonResObj.put("tvCourse4", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course4")));
				jsonResObj.put("tvCourseName4", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course_name4")));
				jsonResObj.put("stbType5", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_sbt5")));
				jsonResObj.put("stbName5", JKKApiCommonUtil.getJsonValue(responseMap.get("stb_name5")));
				jsonResObj.put("tvCourse5", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course5")));
				jsonResObj.put("tvCourseName5", JKKApiCommonUtil.getJsonValue(responseMap.get("tv_course_name5")));
				jsonResObj.put("tvGuideNum", JKKApiCommonUtil.getJsonValue(responseMap.get("cable_guide_mskm_cnt")));
				jsonResObj.put("constructionState", JKKApiCommonUtil.getJsonValue(responseMap.get("koji_prg")));
				jsonResObj.put("constructionPlanDate", JKKApiCommonUtil.getJsonValue(responseMap.get("taknikj_rsv_ymd")));
			}

			jsonResponse = jsonResObj.toString();
		}
		catch (Exception e)
		{
			DEBUG_LOG.debug("■致命的なエラー発生");

			// 例外トレースのログ出力
			JKKApiCommon.printDebugLog(e);

			// 処理応答電文(エラー)を取得
			jsonResponse = JKKApiCommonUtil.createJsonResponse(requestMap, JKKStrConst.RETURN_CD_9000,
					JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR).toString();
		}
		
		// 応答電文に設定
		bean.sendMessageString(KKA183SFConst.RSP_MSG, X31CWebConst.DATABEAN_SET_VALUE, JKKApiCommon.getResponseMsg(jsonResponse));
		return true;
	}

	/**
	 * パラメータチェックを行います。
	 * <br>
	 * @param requestMap リクエストパラメータ(JSONデータ)
	 * @return チェックエラーの場合は処理応答電文(エラー)、チェックエラーでない場合は空文字
	 * @throws JSONException JSON処理でエラーが発生した場合
	 */
	private String checkParameter(Map<String, Object> requestMap) throws JSONException
	{
		// 処理応答電文(エラー)
		String jsonErrorResponse = "";
		// リターンコード
		String returnCode = "";
		// リターンメッセージ
		String returnMessage = "";

		// コード値不整合チェック
		// サービスID
		if (!JKKStrConst.SERVICE_ID_WSALE030.equals((String)requestMap.get("serviceID")))
		{
			returnCode = JKKStrConst.RETURN_CD_1000;
			returnMessage = JKKStrConst.RETURN_MESSAGE_SERVICEID_CHECK_ERROR;
		}

		if (!JKKApiCommon.isNull(returnCode))
		{
			// 処理応答電文(エラー)を取得
			jsonErrorResponse = JKKApiCommon.createJsonResponse(requestMap, returnCode, returnMessage).toString();
		}

		return jsonErrorResponse;
	}
}
