/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKKA0100001TPMA
*	ソースファイル名：JEKKA0100001TPMA.java
*	作成者			：FJ）舘山
*	日付			：2022年01月20日
*＜機能概要＞
*	電子マネー特典適用依頼共通処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v57.00.00	2021/01/20	FJ）舘山	【ANK-4208-00-00】電子マネー特典導入
********************************************************************************/
package eo.ejb.cbs.mainproc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import eo.ejb.cbs.cbsmsg.EKKA0100001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0100001CBSMsg1List;
import gyomu.JKKcommonApiKKA0100001;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;
import com.k_opti.api_parts.client.constant.ApiClientConst;

public class JEKKA0100001TPMA implements TemplateMainHandler
{
	
	/**
	 * 特典適用依頼連携の実行
	 * <br>
	 * @param inCBSMsg
	 * @param inContext
	 */
	public static void executeKKIFE478(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		HashMap<String, Object> serviceMap = new HashMap<String,Object>();
		
		serviceMap.put(JKKcommonApiKKA0100001.IN_PARAM_CUST_ID, inCBSMsg.getString(EKKA0100001CBSMsg.CUSTID));
		serviceMap.put(JKKcommonApiKKA0100001.IN_PARAM_PRESENT_CD_SBT, inCBSMsg.getString(EKKA0100001CBSMsg.PRESENTCDSBT));
		serviceMap.put(JKKcommonApiKKA0100001.IN_PARAM_CAMPAIGN_NAME, inCBSMsg.getString(EKKA0100001CBSMsg.CAMPAIGNNAME));
		serviceMap.put(JKKcommonApiKKA0100001.IN_PARAM_KINGAK, inCBSMsg.getString(EKKA0100001CBSMsg.KINGAK));
		
		try
		{
			JKKcommonApiKKA0100001 instance = new JKKcommonApiKKA0100001();
			
			Map<String, Object> resposeMap = instance.callApiKKA0100001(serviceMap);
			// 結果を受信
			inCBSMsg.set(EKKA0100001CBSMsg.RESULTCODE, (String)resposeMap.get(ApiClientConst.IF_HEADER_RESULTCODE));
			inCBSMsg.set(EKKA0100001CBSMsg.RESULTDETAILCODE, (String)resposeMap.get(ApiClientConst.IF_HEADER_RESULTDETAILCODE));
			ArrayList<CAANMsg> errList = new ArrayList<CAANMsg>();
			ArrayList<?> gyoumErrorList = (ArrayList<?>)resposeMap.get(ApiClientConst.IF_HEADER_GYOMUERRORLIST);
			if (gyoumErrorList != null)
			{
				for (Object obj : gyoumErrorList)
				{
					if (obj instanceof HashMap)
					{
						CAANMsg msg = new CAANMsg(EKKA0100001CBSMsg1List.class.getName());
						HashMap<?, ?> errMap = (HashMap<?, ?>)obj;
						msg.set(EKKA0100001CBSMsg1List.ERRORCODE, toStingObj(errMap.get(JKKcommonApiKKA0100001.ERR_CODE)));
						msg.set(EKKA0100001CBSMsg1List.ERRORMESSAGE, toStingObj(errMap.get(JKKcommonApiKKA0100001.ERR_MESSAGE)));
						errList.add(msg);
					}
				}
				if (errList.size() > 0)
				{
					inCBSMsg.set(EKKA0100001CBSMsg.EKKA0100001CBSMSG1LIST, errList.toArray(new CAANMsg[0]));
				}
			}
			HashMap<?,?> bodyMap = (HashMap<?,?>)resposeMap.get(ApiClientConst.IF_BODY);
			if (bodyMap != null)
			{
				Object presentCd = bodyMap.get(JKKcommonApiKKA0100001.OUT_PARAM_PRESENT_CD);
				inCBSMsg.set(EKKA0100001CBSMsg.PRESENTCD, toStingObj(presentCd));
			}
		}
		catch (Exception e)
		{
			inCBSMsg.set(EKKA0100001CBSMsg.STATUS, StatusCodes.EXTERNAL_IF_ERR1);
		}
		
	}
	
	/**
	 * 文字に変換する。
	 * <br>
	 * @param obj 対象のオブジェクト
	 * @return 文字列
	 */
	private static String toStingObj(Object obj)
	{
		if (obj == null)
		{
			return "";
		}
		return obj.toString();
	}
}
