/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JEKKA0100002TPMA
 *	ソースファイル名：JEKKA0100002TPMA.java
 *	作成者			：
 *	日付			：2022年01月24日
 *＜機能概要＞
 *	ギフトコード発行依頼(MVNO)共通処理部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
*   v57.00.00   2022/01/24  FJ)北村    ANK-4208-00-00_電子マネー特典導入
 ********************************************************************************/
package eo.ejb.cbs.mainproc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
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;

import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EKKA0100002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0100002CBSMsg1List;
import gyomu.JKKcommonApiKKA0100002;



public class JEKKA0100002TPMA implements TemplateMainHandler
{
	/**
	 * ギフトコード発行依頼(MVNO)の実行
	 * <br>
	 * @param inCBSMsg
	 * @param inContext
	 */
	public static void executeKKIFE479(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		HashMap<String, Object > serviceMap = new HashMap<String, Object>();
		
		//お客さまID
		serviceMap.put(JKKcommonApiKKA0100002.IN_PARAM_CUST_ID, JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0100002CBSMsg.CUSTID)));
		//プレゼントコード
		serviceMap.put(JKKcommonApiKKA0100002.IN_PARAM_PRESENT_CD, JKKStringUtil.nullToBlank(inCBSMsg.getString(EKKA0100002CBSMsg.PRESENTCD)));
		
		try
		{
			JKKcommonApiKKA0100002 instance = new JKKcommonApiKKA0100002();
			
			Map<String, Object> resposeMap = instance.callApiKKA0100002(serviceMap);
			// 結果を受信
			inCBSMsg.set(EKKA0100002CBSMsg.RESULTCODE, (String)resposeMap.get(ApiClientConst.IF_HEADER_RESULTCODE));
			inCBSMsg.set(EKKA0100002CBSMsg.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(EKKA0100002CBSMsg1List.class.getName());
						HashMap<?, ?> errMap = (HashMap<?, ?>)obj;
						msg.set(EKKA0100002CBSMsg1List.ERRORCODE, toStingObj(errMap.get(JKKcommonApiKKA0100002.ERR_CODE)));
						msg.set(EKKA0100002CBSMsg1List.ERRORMESSAGE, toStingObj(errMap.get(JKKcommonApiKKA0100002.ERR_MESSAGE)));
						errList.add(msg);
					}
				}
				if (errList.size() > 0)
				{
					inCBSMsg.set(EKKA0100002CBSMsg.EKKA0100002CBSMSG1LIST, errList.toArray(new CAANMsg[0]));
				}
			}
			
			//レスポンスbodyはリクエストbodyと同じなので何もしない
		}
		catch (Exception e)
		{
			inCBSMsg.set(EKKA0100002CBSMsg.STATUS, StatusCodes.EXTERNAL_IF_ERR1);
		}
		
	}
	
	/**
	 * 文字に変換する。
	 * <br>
	 * @param obj 対象のオブジェクト
	 * @return 文字列
	 */
	private static String toStingObj(Object obj)
	{
		if (obj == null)
		{
			return "";
		}
		return obj.toString();
	}
}
