	/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：CHIFE532
*   ソースファイル名：CHIFE532.java
*   作成者          ：富士通
*   日付            ：2023年10月20日
*＜機能概要＞
*   外部I/F：「CHIFE532_請求料金お得額照会(CMP)」受付処理クラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v68.00.00   2023/10/20   FJ)吉田あ  【ANK-4500-00-00】ANK-4500-00-00_eoマイページへのお得額表示・プラン見直しシミュレーション機能実装
*   v72.00.00   2024/12/10   FJ)三角    【ANK-4628-00-00】eoアプリのお得額表示・お得提案対応
**********************************************************************/
package local.gyomu.api;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;

import local.gyomu.ApiServerLocalBase;

import com.k_opti.api_parts.server._parts.exception.ApiServerExceptionGyomuCheck;
import com.k_opti.api_parts.server.bean.ApiServerPartsBean;
import com.k_opti.api_parts.server.constant.ApiServerConst;

/**
 * 外部I/F：「CHIFE532_請求料金お得額照会(CMP)(CHIFE532)」受付処理クラスです。<br>
 */
@Path("CHIFE532")
public class CHIFE532 extends ApiServerLocalBase {

	/**
	 * APIID
	 */
	private static final String APIID = "CHIFE532";

	/**
	 * 呼び出す業務サービスID
	 */
	private static final String SERVICE_ID = "CHSV0096";

	/**
	 * 相手先システムID(ＣＭＰ)
	 */
	private static final String SYSTEM_ID = "CMP1";
// ANK-4628-00-00 ADD START

	/**
	 * 相手先システムID(eoアプリ(モバイルアプリ))
	 */
	private static final String SYSTEM_ID_EOAPP = "EAM1";
// ANK-4628-00-00 ADD END

	/**
	 * JOBID
	 */
	private static final String JOB_ID = "CHIFE532";
// ANK-4629-00-00 ADD START
	
	/**
	 * AUTHID(eoアプリ(モバイルアプリ))
	 */
	private static final String AUTH_ID_EOAPP = "eoforeama";
// ANK-4629-00-00 ADD END
	
	/**
	 * 公開メソッド
	 *
	 * @pram pRequest リクエスト
	 * @pram pContext コンテキスト
	 * @return Response レスポンス
	 * @throws Exception
	 */
	@POST
	public Response execute(@Context final HttpServletRequest pRequest,
			@Context final ServletContext pContext) throws Exception {

		/************************************************************
		 * ■■■基盤ロジック呼出■■■■■■■■■■■■■■■■■
		 ***********************************************************/
		// API共通部品呼出
    	Response response = super.exec(APIID, pRequest, pContext);
    	return response;
	}

	/**
	 * 業務ロジック処理
     *
	 * @param reqPartsBean サーバ業務AP連携データ(リクエスト)
	 * @return ApiServerPartsBean サーバ業務AP連携データ(レスポンス)
	 * @throws Exception
	 */
	@Override
	protected ApiServerPartsBean run(ApiServerPartsBean reqPartsBean) throws Exception {
        
		// レスポンスデータ生成
		ApiServerPartsBean resPartsBean
			= this.logicExecute(reqPartsBean);

		/************************************************************
		 * ■■■基盤ロジック呼出■■■■■■■■■■■■■■■■■
		 ***********************************************************/
		return resPartsBean;
	}

	/**
	 * 業務ロジックメイン処理
	 * 指定されたサービスを呼び出し、結果をレスポンス情報に設定します。
	 *
	 * @param reqPartsBean サーバ業務AP連携データ(リクエスト)
	 * @return ApiServerPartsBean サーバ業務AP連携データ(レスポンス)
	 * @throws Exception
	 */
	private ApiServerPartsBean logicExecute(ApiServerPartsBean reqPartsBean) throws Exception {
		
		// サービス呼び出し
		String serviceId = SERVICE_ID;
// ANK-4628-00-00 ADD START
		String systemId = null;
		
		if(AUTH_ID_EOAPP.equals(reqPartsBean.getHeader().get("authId")))
		{
			systemId = SYSTEM_ID_EOAPP;
		}
		else
		{
			systemId = SYSTEM_ID;
		}
		
// ANK-4628-00-00 ADD END
// ANK-4628-00-00 MOD START
//		Map<String, Object> outMap = callBpService(serviceId, reqPartsBean, JOB_ID, SYSTEM_ID);
		Map<String, Object> outMap = callBpService(serviceId, reqPartsBean, JOB_ID, systemId);
// ANK-4628-00-00 MOD END
		
        // サービス処理の結果
		Map<String, Object> resultMap = (Map<String, Object>)outMap.get(serviceId + _01CC);
		Map<String, Object> bodyMap = (Map<String, Object>)resultMap.get("BODY_INFO");
    	
		// レスポンス情報をセット
		ApiServerPartsBean resPartsBean = new ApiServerPartsBean();
		resPartsBean.setBody(bodyMap);

		return resPartsBean;
	}

}
