package com.fujitsu.futurity.bp.custom.common;

import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.model.base.CAANMsg;
import eo.ejb.cbs.cbsmsg.ECK0111B002CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0111D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0111D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0121B020CBSMsg;

public class JKKSIFECK0111Mapper extends JKKSIFMapperBase {

	/** ファミリー会員グループ一覧照会（SYSID） */
	private static final String TEMPLATE_ID_ECK0111B002 = "ECK0111B002";

	/** グループ登録 */
	private static final String TEMPLATE_ID_ECK0111D010 = "ECK0111D010";

	/**  グループ種別コード ファミリー */
	private static final String GRP_SBT_FMLY = "001";

	/**
	 * 共通初期処理
	 * @param template
	 */
	protected void init(CAANMsg template)
	{
		super.init(template);
	}
	
	/**
	 * ファミリー会員グループ一覧照会（SYSID）  入力マッピング
	 * <br>機能コード : 1
	 * @param sysid
	 * @return テンプレート
	 */
	public CAANMsg getMappedTemplateECK0111B002(String sysid)
	{
		CAANMsg template = new CAANMsg(ECK0111B002CBSMsg.class.getName());

		//nullを設定
		fillCAANMSGNullMapping(template, new ECK0111B002CBSMsg().getContents());

		// 共通初期処理
		init(template);
		
		// テンプレートID
		template.set(ECK0121B020CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0111B002);

		// 機能コード
		template.set(ECK0111B002CBSMsg.FUNC_CODE, FUNC_CD_1);

		// KEY_SYSID
		template.set(ECK0111B002CBSMsg.KEY_SYSID, sysid);
		
		return template;
	}
	
	/**
	 * 処理概要:グループ登録
	 * <br>機能コード : 1
	 * @param sysid sysid
	 * @param grp_tstaymd グループ適用開始年月日
	 * @param grp_tendymd グループ適用終了年月日
	 * @return サービスコンポーネント実行用CAANMsg
	 */
	public CAANMsg getMappedTemplateECK0111D010(String sysid, String grp_tstaymd, String grp_tendymd, String ck0011UpdDtm)
	{
		CAANMsg template = new CAANMsg(ECK0111D010CBSMsg.class.getName());

		//nullを設定
		fillCAANMSGNullMapping(template, new ECK0111D010CBSMsg().getContents());

		// 共通初期処理
		init(template);
		
		// テンプレートID
		template.set(ECK0111D010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0111D010);

		// 機能コード
		template.set(ECK0111D010CBSMsg.FUNC_CODE, FUNC_CD_1);

		// グループ種別コード
		// グループ種別コード（ファミリー）
		template.set(ECK0111D010CBSMsg.GRP_SBT_CD, GRP_SBT_FMLY);
		
		// グループ名
		template.setNull(ECK0111D010CBSMsg.GRP_NM);
		
		// グループリーダーSYSID
		if (sysid == null)
		{
			template.setNull(ECK0111D010CBSMsg.GRP_LEADER_SYSID);
		} else {
			template.set(ECK0111D010CBSMsg.GRP_LEADER_SYSID, sysid);
		}
		
		// グループ適用開始年月日
		template.set(ECK0111D010CBSMsg.GRP_TSTAYMD, grp_tstaymd);
		
		// グループ適用終了年月日
		if (grp_tendymd == null) {
			template.set(ECK0111D010CBSMsg.GRP_TENDYMD, "20991231");
		} else {
			template.set(ECK0111D010CBSMsg.GRP_TENDYMD, grp_tendymd);
		}
		
		// お客様グループ設定明細
		CAANMsg[] templateArray = null;
		templateArray = template.getCAANMsgList(ECK0111D010CBSMsg.ECK0111D010CBSMSG1LIST);

		if (templateArray == null) {
			templateArray = new CAANMsg[1];
		}

		CAANMsg childTemplate = templateArray[0];
		if (childTemplate == null) {
			childTemplate = new CAANMsg(ECK0111D010CBSMsg1List.class.getName());
		}

		if (sysid == null)
		{
			childTemplate.setNull(ECK0111D010CBSMsg1List.SYSID);
		} else {
			childTemplate.set(ECK0111D010CBSMsg1List.SYSID, sysid);
		}
		
		// グループ登録マップ.お客様グループ設定明細.グループ割引適用承認年月日
		childTemplate.setNull(ECK0111D010CBSMsg1List.GRP_WRIB_APLY_SHONIN_YMD);
		
		templateArray[0] = childTemplate;
		
		template.set(ECK0111D010CBSMsg.ECK0111D010CBSMSG1LIST, templateArray);
		
		//更新年月日時分秒（更新前）
		template.set(ECK0111D010CBSMsg.UPD_DTM_BF, ck0011UpdDtm);
		
		return template;
	}
}
