/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0246_FUSV0246OPDBMapper
*	ソースファイル名：FUSV0246_FUSV0246OPDBMapper.java
*	作成者			：富士通
*	日付			：2012年07月06日
*＜機能概要＞
*	BP（引越しナビ住所変更申込照会(電話入力チェック)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00		2012/07/06	FJ)岡井		【ANK-0274-00-00】Web受付引越し受付：新規作成
*  v72.00       2024/05/10  FJ) 美濃原  【ANK-4494-00-00】【eo定期】双方向番ポ対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;
import eo.web.webview.FUW10401SF.FUW10401SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 * <p>
 * <BR>
 * @author 富士通
 */

public class FUSV0246_FUSV0246OPDBMapper
{
	// ■ CC名
	/** FUSV024601CC */
	private static final String FUSV024601CC = "FUSV024601CC";

	// ■ CCリスト
	/** 電話番号一意照会明細 */
	private static final String TEL_NO_LIST = "tel_no_list";

	// ■ 項目ID
	/** 電話番号 */
	private static final String TEL_NO = "tel_no";
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	// ■ その他
	/** 汎用コード */
	private static final String CODE_3 = "3";

	// 番ポ電話番号登録可否チェック用
	/** 電話番号 */
	private static final String KEY_TEL_NO1 = "key_telno1";
	/** 電話番号 */
	private static final String KEY_TEL_NO2 = "key_telno2";
	/** 郵便番号（前） */
	private static final String KEY_PDC_BF = "key_pcd_bf";
	/** 郵便番号（後） */
	private static final String KEY_PDC_AF = "key_pcd_af";

	/**
	 * コンストラクタです。
	 */
	public FUSV0246_FUSV0246OPDBMapper()
	{
	}

	/**
	 * 番ポ電話番号登録可否チェックCCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @return 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV024601CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 機能コード
		parentMap.put(FUNC_CODE, func_code);

		// 返却リスト
		ArrayList telNoList = new ArrayList();

		// データBeanから入力された電話番号を取得し、設定する
		X31SDataBeanAccessArray telSvcBeanArray = bean[0].getDataBeanArray(FUW10401SFConst.TEL_SVC_LIST);
		for (int i = 0; i < telSvcBeanArray.getCount(); i++)
		{
			HashMap childMap = new HashMap();
			X31SDataBeanAccess telSvcDataBean = telSvcBeanArray.getDataBean(i);

			// 利用選択値
			String useSelVal = telSvcDataBean.sendMessageString(FUW10401SFConst.SEL_USE_04, X31CWebConst.DATABEAN_GET_VALUE);
			// 電話番号
			String telNo = telSvcDataBean.sendMessageString(FUW10401SFConst.BMP_TELNO_ALL_04, X31CWebConst.DATABEAN_GET_VALUE);

			// 利用選択値が「3」(番ポ利用)以外の場合、電話番号を空文字とする
			if(!CODE_3.equals(useSelVal))
			{
				telNo = JFUStrConst.EMPTY;
			}

			// 電話番号が入力されていない場合、次の繰り返し処理に移行する
			if(telNo == null || telNo.length() == 0)
			{
				continue;
			}

			// 電話番号を設定
			childMap.put(TEL_NO, telNo);
			telNoList.add(childMap);
		}

		// リストに設定
		parentMap.put(TEL_NO_LIST, telNoList);

		// ■利用場所情報
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		String stateCity = bean[0].sendMessageString(FUW10401SFConst.INP_STATE_CITY, X31CWebConst.DATABEAN_GET_VALUE);
		String aza = bean[0].sendMessageString(FUW10401SFConst.INP_AZ, X31CWebConst.DATABEAN_GET_VALUE);
		String cho = bean[0].sendMessageString(FUW10401SFConst.INP_CHO, X31CWebConst.DATABEAN_GET_VALUE);

		// 都道府県・市区町村
		parentMap.put("state_city", stateCity);
		// 字
		parentMap.put("aza", aza);
		// 丁目・番地等
		parentMap.put("chome_bnchi", cho);

		// ■番ポ可否チェックCC（旧：同番移転可能エリアチェックCC）
		// データBeanから入力された電話番号を取得し、設定する
		for (int i = 0; i < telSvcBeanArray.getCount(); i++)
		{
			X31SDataBeanAccess telSvcDataBean = telSvcBeanArray.getDataBean(i);

			// 利用選択値
			String useSelVal = telSvcDataBean.sendMessageString(FUW10401SFConst.SEL_USE_04, X31CWebConst.DATABEAN_GET_VALUE);
			// 電話番号
			String telNo = telSvcDataBean.sendMessageString(FUW10401SFConst.BMP_TELNO_ALL_04, X31CWebConst.DATABEAN_GET_VALUE);

			// 利用選択値が「3」(番ポ利用)以外の場合、電話番号を空文字とする
			if (!CODE_3.equals(useSelVal))
			{
				continue;
			}

			// 電話番号が入力されていない場合、次の繰り返し処理に移行する
			if (JFUWebCommon.isNull(telNo))
			{
				continue;
			}

			// 電話番号を設定
			if (parentMap.containsKey(KEY_TEL_NO1))
			{
				parentMap.put(KEY_TEL_NO2, telNo);
			}
			else
			{
				parentMap.put(KEY_TEL_NO1, telNo);
			}
		}
		// 郵便番号
		String pcd_bf = bean[0].sendMessageString(FUW10401SFConst.INP_PCD_KAMI, X31CWebConst.DATABEAN_GET_VALUE);
		String pcd_af = bean[0].sendMessageString(FUW10401SFConst.INP_PCD_SHIMO, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put(KEY_PDC_BF, pcd_bf);
		parentMap.put(KEY_PDC_AF, pcd_af);

		// 返却マップに設定
		outputMap.put(FUSV024601CC, parentMap);

		return outputMap;
	}

}
