/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹構築
*	モジュール名	：FUSV0006_FUSV0006OPDBMapper
*	ソースファイル名：FUSV0006_FUSV0006OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年07月22日
*＜機能概要＞
*	BP（住所情報入力（追加）入力チェック）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/22	FJ			新規作成
*	v4.00.00	2012/06/13	FJ)池田		PJReliefエラー対応
*	v39.00		2018/11/28	FJ)岡井		【ANK-3477-00-00】eoマイページからのお客さま情報変更自動反映
**********************************************************************/
package eo.web.webview.mapping;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JFUStrConst;
import eo.web.webview.FUW00102SF.FUW00102SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 * @author 富士通
 */
public class FUSV0006_FUSV0006OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public FUSV0006_FUSV0006OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：住所情報入力
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000601SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 連絡先・お電話番号 → 連絡先登録マップ.電話番号
		String tel1 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTTELAREA, X31CWebConst.DATABEAN_GET_VALUE); //連絡先・お電話番号（市外局番）
		String tel2 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTTELLOCAL, X31CWebConst.DATABEAN_GET_VALUE); //連絡先・お電話番号（市内局番）
		String tel3 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTTELSUBSCRIBER, X31CWebConst.DATABEAN_GET_VALUE); //連絡先・お電話番号（局番）
		String tel_no = tel1 + tel2 + tel3;
		parentMap.put("telno", tel_no);
		// ＦＡＸ連絡ご希望・ＦＡＸ番号 → 連絡先登録マップ.FAX番号
		String fax1 = bean[0].sendMessageString(FUW00102SFConst.HOPEFAXAREA, X31CWebConst.DATABEAN_GET_VALUE); //ＦＡＸ連絡ご希望・ＦＡＸ番号（市外局番）
		String fax2 = bean[0].sendMessageString(FUW00102SFConst.HOPEFAXLOCAL, X31CWebConst.DATABEAN_GET_VALUE); //ＦＡＸ連絡ご希望・ＦＡＸ番号（市内局番）
		String fax3 = bean[0].sendMessageString(FUW00102SFConst.HOPEFAXSUBSCRIBER, X31CWebConst.DATABEAN_GET_VALUE); //ＦＡＸ連絡ご希望・ＦＡＸ番号（局番）
		String fax_no = fax1 + fax2 + fax3;
		parentMap.put("fax_no", fax_no);

		outputMap.put("FUSV000601SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(住所情報分割CC（現住所）)
	 * 
	 * @param bean [0]：住所情報入力
	 * @param outputMap サービスマップ
	 * @param func_code 機能コード
	 * @param mskmKbn 申込区分
	 * @return outputMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000602CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String mskmKbn)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		String genAdSelBtnDspFlg = bean[0].sendMessageString(FUW00102SFConst.GENADSELBTNDSPFLG, X31CWebConst.DATABEAN_GET_VALUE);
		String genAdChangeJk = bean[0].sendMessageString(FUW00102SFConst.GENADCHANGEJK, X31CWebConst.DATABEAN_GET_VALUE);

		if(!JFUStrConst.MSKM_KBN_ADD.equals(mskmKbn) || !"1".equals(genAdSelBtnDspFlg) || !"2".equals(genAdChangeJk))
		{
			// 以下の条件に1つでも一致した場合は実行しない
			// 申込区分が「2：追加」以外
			// 現住所選択ボタンが表示されていない
			// ご契約者住所（現住所）の変更状況が「2：その他住所」以外の場合は処理しない
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 都道府県・市区町村(サービス追加/回線追加)
		parentMap.put("state_city", bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTPREFADD, X31CWebConst.DATABEAN_GET_VALUE));
		// 字(サービス追加/回線追加)
		parentMap.put("aza", bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN1ADD, X31CWebConst.DATABEAN_GET_VALUE));
		// 丁目・番地等(サービス追加/回線追加)
		parentMap.put("chome_bnchi", bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN2ADD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV000602CC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(お客様＜個人＞内容変更)
	 * 
	 * @param bean [0]：住所情報入力
	 * @param outputMap サービスマップ
	 * @param func_code 機能コード
	 * @param mskmKbn 申込区分
	 * @param keiSbt 契約種別
	 * @return outputMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000603SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String mskmKbn, String keiSbt)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		String genAdSelBtnDspFlg = bean[0].sendMessageString(FUW00102SFConst.GENADSELBTNDSPFLG, X31CWebConst.DATABEAN_GET_VALUE);
		String genAdChangeJk = bean[0].sendMessageString(FUW00102SFConst.GENADCHANGEJK, X31CWebConst.DATABEAN_GET_VALUE);

		if(!JFUStrConst.MSKM_KBN_ADD.equals(mskmKbn) || !"1".equals(genAdSelBtnDspFlg) || !"2".equals(genAdChangeJk)
				|| !JFUStrConst.KEI_SBT_KOJINCD.equals(keiSbt))
		{
			// 以下の条件に1つでも一致した場合は実行しない
			// 申込区分が「2：追加」以外
			// 現住所選択ボタンが表示されていない
			// ご契約者住所（現住所）の変更状況が「2：その他住所」以外の場合は処理しない
			// 契約種別が「1：個人」以外は処理しない
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 契約者郵便番号
		String pcd1 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDFRONTADD, X31CWebConst.DATABEAN_GET_VALUE);
		String pcd2 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDBACKADD, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("keisha_pcd", pcd1 + pcd2);

		// 契約者番地号
		parentMap.put("keisha_bnchigo", bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN2ADD, X31CWebConst.DATABEAN_GET_VALUE));
		// 契約者住所補記・建物名
		parentMap.put("keisha_adrttm", bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTMANSIONADD, X31CWebConst.DATABEAN_GET_VALUE));
		// 契約者住所補記・部屋番号
		parentMap.put("keisha_adrrm", bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTROOMADD, X31CWebConst.DATABEAN_GET_VALUE));

		// 契約者住所補記・部屋番号
		String telNo1 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELAREAADD, X31CWebConst.DATABEAN_GET_VALUE);
		String telNo2 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELLOCALADD, X31CWebConst.DATABEAN_GET_VALUE);
		String telNo3 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELSUBSCRIBERADD, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("keisha_telno", telNo1 + telNo2 + telNo3);

		outputMap.put("FUSV000603SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(お客様＜法人＞内容変更)
	 * 
	 * @param bean [0]：住所情報入力
	 * @param outputMap サービスマップ
	 * @param func_code 機能コード
	 * @param mskmKbn 申込区分
	 * @param keiSbt 契約種別
	 * @return outputMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV000604SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String mskmKbn, String keiSbt)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		String genAdSelBtnDspFlg = bean[0].sendMessageString(FUW00102SFConst.GENADSELBTNDSPFLG, X31CWebConst.DATABEAN_GET_VALUE);
		String genAdChangeJk = bean[0].sendMessageString(FUW00102SFConst.GENADCHANGEJK, X31CWebConst.DATABEAN_GET_VALUE);

		if(!JFUStrConst.MSKM_KBN_ADD.equals(mskmKbn) || !"1".equals(genAdSelBtnDspFlg) || !"2".equals(genAdChangeJk)
				|| !JFUStrConst.KEI_SBT_HOJINCD.equals(keiSbt))
		{
			// 以下の条件に1つでも一致した場合は実行しない
			// 申込区分が「2：追加」以外
			// 現住所選択ボタンが表示されていない
			// ご契約者住所（現住所）の変更状況が「2：その他住所」以外の場合は処理しない
			// 契約種別が「2：法人」以外は処理しない
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 契約者郵便番号
		String pcd1 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDFRONTADD, X31CWebConst.DATABEAN_GET_VALUE);
		String pcd2 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTZIPCDBACKADD, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("keisha_pcd", pcd1 + pcd2);

		// 契約者番地号
		parentMap.put("keisha_bnchigo", bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTOWN2ADD, X31CWebConst.DATABEAN_GET_VALUE));
		// 契約者住所補記・建物名
		parentMap.put("keisha_adrttm", bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTMANSIONADD, X31CWebConst.DATABEAN_GET_VALUE));
		// 契約者住所補記・部屋番号
		parentMap.put("keisha_adrrm", bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTROOMADD, X31CWebConst.DATABEAN_GET_VALUE));

		// 契約者住所補記・部屋番号
		String telNo1 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELAREAADD, X31CWebConst.DATABEAN_GET_VALUE);
		String telNo2 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELLOCALADD, X31CWebConst.DATABEAN_GET_VALUE);
		String telNo3 = bean[0].sendMessageString(FUW00102SFConst.CONTRACTANTTELSUBSCRIBERADD, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("keisha_telno", telNo1 + telNo2 + telNo3);

		outputMap.put("FUSV000604SC", parentMap);

		return outputMap;
	}
}