/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW22001SFLogic
*   ソースファイル名：KKW22001SFLogic.java
*   作成者          ：FJ）富士通
*   日付            ：2014年08月14日
*＜機能概要＞
*   交換希望日更新画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v10.00.00   2014/08/14   FJ）中野    新規作成（ANK-2141-00-00）
*   v10.00.01   2014/10/27   FJ）起塚    【OM-2014-0003464】
**********************************************************************/
package eo.web.webview.KKW21001SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.util.JPCDateUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0979_KKSV0979OPDBMapper;

/**
 * KKW22001のビューロジックです。<p>
 * <BR>
 * @author 富士通
 */
public class KKW21001SFLogic  extends JCCWebBusinessLogic
{
	
	/** 顧客契約引継情報項目キー */
	private static final String[] CUST_KEI_HKTGI_KEYS = {
		JKKCommonConst.HKTGI_SYSID,
		JKKCommonConst.HKTGI_SVC_KEI_NO,
		JKKCommonConst.HKTGI_IDO_DIV,
		JKKCommonConst.HKTGI_IDO_RSN_CD,
		JKKCommonConst.HKTGI_IDO_RSN_MEMO,
		JKKCommonConst.HKTGI_OP_SVC_KEI_NO,
		JKKCommonConst.HKTGI_TRAN_DIV,
		JKKCommonConst.HKTGI_MSKM_NO,
		JKKCommonConst.HKTGI_MSKM_DTL_NO,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_NM,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_VALUE,
		JKKCommonConst.HKTGI_POPUP_MODE,
		JKKCommonConst.HKTGI_IDO_DIV_SENI_PTN,
	};

	/**
	 * 初期表示処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean init() throws Exception
	{
		
		// 画面情報を取得し、サービスフォームBeanに設定する
		HashMap<String, Object> parameterMap = JCCWebCommon.getScreenInfo(this);
        
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
        
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
        
		// 引継情報を取得
		X31SDataBeanAccessArray custKeiHktgiList = serviceBean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
        
		// 遷移元画面ＩＤを取得
		String gamenId = JCCWebCommon.getScreenId(this);
		      
		// 運用日の取得
		String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
		serviceBean.sendMessageString(KKW21001SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
        
		// 遷移元で設定しているため設定不要
//		// 異動区分
//		String ido_div = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
//		serviceBean.sendMessageString(KKW21001SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, ido_div);
//        
//		// 異動区分により画面制御フラグ設定する
//		if (JKKCommonConst.IDO_DIV_VALUE_00026.equals(ido_div))
//		{
//			// 機器契約変更の場合、更新確認イベントフラグ設定
//			serviceBean.sendMessageString(KKW21001SFConst.TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, "1");
//		}
//		else
//		{
//			serviceBean.sendMessageString(KKW21001SFConst.TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, "0");
//		}
        
		// 運用日＋１か月の月末日を求める
		String addOneMonth = JPCDateUtil.addMonth(unyo_ymd, 1);
		if (!isNull(addOneMonth) && addOneMonth.length() == 8)
		{
			String endDay = JPCDateUtil.getEndOfMonth(addOneMonth.substring(0, 6));
			// 運用日の翌月末日を求める
			serviceBean.sendMessageString(KKW21001SFConst.UNYO_YOKU_MON_END_YMD, X31CWebConst.DATABEAN_SET_VALUE, addOneMonth.substring(0, 6) + endDay);
		}
		
		return true;
	}
	
	/**
	 * 更新確認ボタン押下時
	 * <p>
	 * </p>
	 * @return
	 */
	public boolean update() throws Exception
	{
		HashMap<String, Object> paramMap  = null;
		HashMap<String, Object> inputMap  = null;
		HashMap<String, Object> outputMap = null;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		String year = bean.sendMessageString(KKW21001SFConst.NEW_KIKI_USE_STA_KIBO_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String month = bean.sendMessageString(KKW21001SFConst.NEW_KIKI_USE_STA_KIBO_MONTH, X31CWebConst.DATABEAN_GET_VALUE);
		String date = bean.sendMessageString(KKW21001SFConst.NEW_KIKI_USE_STA_KIBO_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		
		String newKikiUseStaKiboYmd = year+month+date;
		
		bean.sendMessageString(KKW21001SFConst.NEW_KIKI_USE_STA_KIBO_YMD, X31CWebConst.DATABEAN_SET_VALUE, newKikiUseStaKiboYmd);
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};

		paramMap  = new HashMap<String, Object>();
		inputMap  = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
				
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0979");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0979OP");
			
		mappingForDB_BP_KKSV0979_SET(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		  	
		// サービス呼出処理
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		} 
		
		// 自画面に表示するメッセージを設定する。
		JCCWebCommon.setMessageInfo(this, "EKB0370--I", new String[]{"交換希望年月日の更新"});

		// 共有フォームBean設定（遷移先画面）
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21002);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21002);
	
		return true;
	}
	
	/**
	 * 確定ボタン押下時
	 * <p>
	 * </p>
	 * @return
	 */
	public boolean fix() throws Exception 
	{
		// サービスフォームBeanのアクセスクラス取得
		HashMap<String, Object> paramMap  = null;
		HashMap<String, Object> inputMap  = null;
		HashMap<String, Object> outputMap = null;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		paramMap  = new HashMap<String, Object>();
		inputMap  = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		
		// ユースケースID格納用マップを生成。
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0979");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0979OP");
			
		mappingForDB_BP_KKSV0979_SET(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		
		/* ++++++++++ v10.00.01 追加開始 ++++++++++ */
		// DataBean-BPマッピングクラス生成
		KKSV0979_KKSV0979OPDBMapper mapper = new KKSV0979_KKSV0979OPDBMapper();
		mapper.setKKSV097902SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		/* ++++++++++ v10.00.01 追加終了 ++++++++++ */
		
		// サービス呼出処理
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		} 
		
		// 自画面に表示するメッセージを設定する。
		JCCWebCommon.setMessageInfo(this, "EKB4390--I", new String[]{"交換希望年月日の更新"});
		
		// 共有フォームBean設定（遷移先画面）
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21003);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21003);
		
		return true;
	}
	
	/**
	 * 修正ボタン押下時
	 * <p>
	 * </p>
	 * @return
	 */
	public boolean back()
	{
		// 共有フォームBean設定（遷移先画面）
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21001);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21001);
		
		return true;
		
	}
	
	/**
	 * 一覧遷移ボタン押下時
	 * <p>
	 * </p>
	 * @return
	 */
	public boolean fin() throws Exception 
	{
		// モーダル用反映画面へ画面遷移
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);
		
		return true;
	
	}
	
	/**
	 * サービスフォームBean項目とサービス項目のマッピングを行う
	 * @param  paramBean  DataBean項目の配列
	 * @param  inputMap   上りデータマップ
	 * @param  func_code  機能コード
	 */
	private void mappingForDB_BP_KKSV0979_SET(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap, String func_code)
	{
		// DataBean-BPマッピングクラス生成
		KKSV0979_KKSV0979OPDBMapper mapper = new KKSV0979_KKSV0979OPDBMapper();

		mapper.setKKSV097901SC(paramBean, inputMap, func_code);

		return;
	}
	
	/**
	 * 引数に値が設定されているか判定します。
	 * <br>
	 * @param arg0 判定する引数
	 * @return 引数に値が設定されていない場合はtrue
	 */
	private boolean isNull(String arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}
	
}
