/*********************************************************************
* All Rights reserved, Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通（共通マスタ）
*   モジュール名    ：ZMW12401SFLogic
*   ソースファイル名：ZMW12401SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年06月05日
*＜機能概要＞
*   量販訪販ユーザーパスワード初期化のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00       2012/06/05   FJ）垣内    新規作成
*   v4.00		2012/06/05   FJ) 垣内	【ANK-0232-00-00】量販店不正申込対策
*   v4.01		2012/10/16   FJ）日野	【IT1-2012-0001409】対応
*
**********************************************************************/

package eo.web.webview.ZMW12401SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.ZMW12401SF.ZMW12401SFConst;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.common.JZMWebConst;
import eo.web.webview.mapping.ZMSV0127_ZMSV0127OPDBMapper;
import eo.web.webview.mapping.ZMSV0128_ZMSV0128OPDBMapper;

/** * 
 *  量販訪販ユーザーパスワード初期化のビューロジックです。
 * @author 910079
 *
 */
@SuppressWarnings("serial")
public class ZMW12401SFLogic extends JCCWebBusinessLogic
{
	/** メッセージ置き換え文字 */
	private static final String[] ERROR_MESSAGE = {"量販訪販ユーザーパスワード", "情報"};
	
	/** 画面項目 ユーザーID  */
	private static final 	String USER_ID = "user_id";

	/**
	 * 量販訪販ユーザーパスワード初期化の初期表示処理を行います。
	 * <br>
	 * @return boolean
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 戻り先IDの取得
		String screenId = JZMWebCommon.getScreenId(this);
		
		// 戻り先IDの有無で戻るボタン表示フラグを表示する
		JZMWebCommon.setSendMessageBoolean(bean, ZMW12401SFConst.BACK_BTN_DSP_FLG, screenId != null);
		
		if(screenId == null)
		{
			// HashMapを設定する
			JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW12403, JZMScreenConst.SCREEN_ID_ZMW12401);
		}
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW12401);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW12401);
		
		return true;
	}
	
	/**
	 * パスワード初期化ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean pwdReset() throws Exception
	{
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (2)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV127);

		// マッピングクラス
		ZMSV0127_ZMSV0127OPDBMapper mapper = new ZMSV0127_ZMSV0127OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV012701CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// マッピング処理（下り）
		mapper.getZMSV012701CC(paramBean, outputMap);

		// 検索エラーフラグの取得
		String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.CC12701, outputMap);
		
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, ERROR_MESSAGE, USER_ID);
			return true;
		}

		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA720__I);
		JZMWebCommon.setMessageAreaBackColor(this, JZMWebConst.ONE);
			
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW12402);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW12402);
		
		return true;
	}

	/**
	 * 戻るボタンの処理を行います。
	 * <br>
	 * @return boolean　処理結果
	 * @throws Exception　予期せぬエラー
	 */
	public boolean back() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.getScreenId(this));
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
		
		return true;
	}
	
	/**
	 * 確定処理を行います
	 * @return boolean　処理結果
	 * @throws Exception　予期せぬ例外
	 */
	public boolean fix() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV128);

		// マッピングクラス
		ZMSV0128_ZMSV0128OPDBMapper mapper = new ZMSV0128_ZMSV0128OPDBMapper();

		// マッピング処理（上り）
		mapper.setZMSV012801SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// メッセージの設定
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA730__I);
		
		// 画面遷移
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW12403);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW12403);
		
		return true;
	}

	/**
	 * 修正ボタン処理を行います。
	 * <br>
	 * @return 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean shusei() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW12401);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW12401);
		
		return true;
	}
	
	/**
	 * 完了ボタン処理を行います。
	 * <br>
	 * @return boolean
	 * @throws Exception
	 */
	public boolean fin() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		JZMWebCommon.setSendMessageString(bean, ZMW12401SFConst.USER_ID, null);
		
		setBackScreenId(commonBean, false);
		
		return true;
	}

	/**
	 * セッションから遷移先画面を取得し共通ビーンに設定します。
	 * @param commonBean 共通ビーン
	 * @param transfer setTransferPageId()を呼び出すかどうかを設定します。
	 */
	private void setBackScreenId(X31SDataBeanAccess commonBean, boolean transfer)
	{
		String screenId = JZMWebCommon.getScreenId(this);
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, screenId);
		
		if(JZMScreenConst.SCREEN_ID_ZMW12401.equals(screenId))
		{
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
					X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW12401);
		}
		else
		{
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
					X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
		}
		
		if(transfer)
		{
			setTransferPageId(screenId + JZMWebConst.PJP);
		}
	}
}
