/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW00504SFLogic
*   ソースファイル名：KKW00504SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年10月14日
*＜機能概要＞
*   審査与信結果反映画面 Viewロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/14   FJ）        新規作成
*
**********************************************************************/

package eo.web.webview.KKW00504SF;

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.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCMessageCache;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0309_KKSV0309OPDBMapper;

public class KKW00504SFLogic extends JCCWebBusinessLogic {

	/**/
	public boolean init() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定
		HashMap<String, Object> parameterMap = JCCWebCommon.getScreenInfo( this );
		
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		if(parameterMap != null)
		{
			// 遷移元から取得
			serviceBean.sendMessageString(KKW00504SFConst.PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW00504SFConst.PAYWAY));
			serviceBean.sendMessageString(KKW00504SFConst.PAY_SKEKKA_FLG, X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW00504SFConst.PAY_SKEKKA_FLG));
		}
		
		String unyo = JCCWebCommon.getOpeDate(this, null);
		serviceBean.sendMessageString(KKW00504SFConst.STDRDYMD, X31CWebConst.DATABEAN_SET_VALUE, unyo);
		
		//マッピングクラスに渡す配列
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0309");
		
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0309_KKSV0309OPDBMapper mapper = new KKSV0309_KKSV0309OPDBMapper();
		mapper.setKKSV030901SC(paramBean, inputMap, "1");
		mapper.setKKSV030902SC(paramBean, inputMap, "1");
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// メッセージ定義ファイルを読み込む
		JCCMessageCache.setMessageCache();
		
		// サービス結果の転記
		mapper.getKKSV030901SC(paramBean, outputMap);
		mapper.getKKSV030902SC(paramBean, outputMap);
		
		
		// 登録日に運用日設定
		serviceBean.sendMessageString(KKW00504SFConst.RTN_ADD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(unyo));
		serviceBean.sendMessageString(KKW00504SFConst.RTN_ADD_MON, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(unyo));
		serviceBean.sendMessageString(KKW00504SFConst.RTN_ADD_DAY, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toDayFromYmd(unyo));
		
		// 遷移先画面ID取得し、設定する。
		commonBean.sendMessageString( CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00504);
		commonBean.sendMessageString( CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00504);
		return true;
	}
	
	/**
	 * 確定ボタン押下処理。
	 * <br>
	 * @param serviceBean 設定する画面のBean
	 * @return boolean サービス呼び出し結果
	 */
	public boolean fowardFix()throws Exception
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		
		// セッションへ詰め込むHashMap生成
		HashMap<String,Object> paramMap = setShinsaYoshinInfo(serviceBean);
		
		
		// 呼出し元画面IDを取得
		String parentScreenId = JCCWebCommon.getScreenId(this);
		
		// 呼出し元画面に渡す情報のセット
		JCCWebCommon.setScreenInfo(this, parentScreenId, paramMap);

		// モーダル用反映画面へ画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, "CCW00105");
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, "モーダル用反映画面");

		
		return true;
	}

	/**
	 * 入力された審査与信結果をHashMapに詰め込む
     * <BR>
     * @param bean サービスフォームBean
     * @return HashMap セッションへセットする情報
	 * @throws Exception 
	 */
	private HashMap<String,Object> setShinsaYoshinInfo(X31SDataBeanAccess bean) throws Exception
	{
		// 返却用 HashMap
		HashMap<String,Object> map = new HashMap<String,Object>();
		
		// 審査与信結果プルダウンコードリストを取得
		X31SDataBeanAccess cdBean = bean.getDataBeanArray(KKW00504SFConst.SKEKKA_YOSHIN_RSLT).getDataBean(0);
		
		String sIndex = cdBean.sendMessageString(KKW00504SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		if(!isNull(sIndex))
		{
			map.put("ret_skekka_yoshin_rslt", cdBean.sendMessageString(KKW00504SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex)));
		}
		
		// 返却登録日
		String year = bean.sendMessageString(KKW00504SFConst.RTN_ADD_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String mon = bean.sendMessageString(KKW00504SFConst.RTN_ADD_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String day = bean.sendMessageString(KKW00504SFConst.RTN_ADD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		
		map.put("ret_add_ymd", year + mon + day);
		
		// 審査不備理由
		StringBuilder rsn = new StringBuilder();
		StringBuilder rsnNm = new StringBuilder();
		
		X31SDataBeanAccessArray beanList = bean.getDataBeanArray(KKW00504SFConst.SKEKKA_KSHBI_RSN);
		int con = 0;
		
		for(int i = 0; i < beanList.getCount(); i++)
		{
			X31SDataBeanAccess subBean = beanList.getDataBean(i);
			if(subBean.sendMessageBoolean(KKW00504SFConst.CHOICE_03, X31CWebConst.DATABEAN_GET_VALUE) == Boolean.TRUE)
			{
				if(con == 0)
				{
					rsn.append(subBean.sendMessageString(KKW00504SFConst.JDG_FUBI_RSN_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
					rsnNm.append(subBean.sendMessageString(KKW00504SFConst.JDG_FUBI_RSN_NM_03, X31CWebConst.DATABEAN_GET_VALUE));
					con++;
				}
				else
				{
					// カンマ編集付きで戻す
					rsn.append(",");
					rsn.append(subBean.sendMessageString(KKW00504SFConst.JDG_FUBI_RSN_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
					rsnNm.append(",");
					rsnNm.append(subBean.sendMessageString(KKW00504SFConst.JDG_FUBI_RSN_NM_03, X31CWebConst.DATABEAN_GET_VALUE));
				}
			}
		}
		map.put("ret_skekka_kshbi_rsn", rsn.toString());
		map.put("ret_skekka_kshbi_rsn_nm", rsnNm.toString());
		
		// 記事
		String kiji = bean.sendMessageString(KKW00504SFConst.KIJIRAN, X31CWebConst.DATABEAN_GET_VALUE);
		map.put("ret_kijiran", kiji);
		
		
		return map;
	}
	
	/**
	 * 引数に値が設定されているか判定します。
	 * <br>
	 * @param arg0 判定する引数
	 * @return 引数に値が設定されていない場合はtrue
	 */
	private boolean isNull(String arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}
}
