/*********************************************************************
 *   All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JECR0021D010TPMA
 *   ソースファイル名：JECR0021D010TPMA.java
 *   作成者          ：富士通
 *   日付            ：2011年06月04日
 *＜機能概要＞
 *   対応記録登録顧客独自処理部品
 *＜修正履歴＞
 *   バージョン  修正日      修正者      修正内容
 *   v1.00.00    2011/06/04  富士通      新規作成
 *   v5.00.00    2013/06/27  FJ)伊藤     ANK-1555-00-00_コールバック履歴化対応について
 *   v6.00.00    2013/08/31  FJ)伊藤     OM-2013-0000385 機能コード"3"、"4"の場合、モニタワークの登録を行わないよう修正。
 *
 **********************************************************************/
package eo.ejb.cbs.mainproc;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbm.entity.CR0011ETMsg;
import eo.ejb.cbm.entity.CR0371ETMsg;
import eo.ejb.cbm.entity.CR0381ETMsg;
import eo.ejb.cbs.cbsmsg.ECR0011D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECR0021D010CBSMsg;
import eo.ejb.common.db.JCRejbCR0011SecProc;
import eo.ejb.common.db.JCRejbCR0371SecProc;
import eo.ejb.common.db.JCRejbCR0381SecProc;

/**
 * <p>
 * 対応記録明細登録(新規)顧客独自処理部品クラスです。
 * </p>
 * @author 富士通
 */
public class JECR0021D010TPMA implements TemplateMainHandler
{

	/**
	 * コンストラクタです。
	 */
	public JECR0021D010TPMA()
	{
		super();
	}

	/**
	 * <p>
	 * 対応記録副次処理を呼び出します。
	 * </p>
	 * @param inCBSMsg 概念スキーマのCBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @throws CAANException 
	 */
	public static void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		
		// (1) 対応記録のETメッセージを生成し、DB更新値を引き継ぐために以下の値を設定する。
		CAANMsg cr0011ETMsg = new CAANMsg(CR0011ETMsg.class.getName());

		// ETメッセージ.対応記録番号 ← CBSメッセージ.対応記録番号
		cr0011ETMsg.set(CR0011ETMsg.TAIO_KIROK_NO, inCBSMsg.getString(ECR0021D010CBSMsg.TAIO_KIROK_NO));
		// ETメッセージ.対応開始年月日時分秒 ← CBSメッセージ.対応開始年月日時分秒
		cr0011ETMsg.set(CR0011ETMsg.TAIO_STA_DTM, inCBSMsg.getString(ECR0021D010CBSMsg.ACTION_STA_DTM));
		
		// (2) 対応記録副次処理部品を呼出し、対応記録の対応記録履歴を更新する。
		new JCRejbCR0011SecProc().updTaioKirokCreate(inCBSMsg, inContext, cr0011ETMsg
				, inCBSMsg.getString(ECR0021D010CBSMsg.WKKBT_ORG_NM)
				, inCBSMsg.getString(ECR0021D010CBSMsg.LOGIN_USER_NM)
				, inCBSMsg.getString(ECR0021D010CBSMsg.CALLBK_DTM_OUTPUT_FLG));

		String funcCode = inCBSMsg.getString(ECR0011D010CBSMsg.FUNC_CODE);

		// 機能コードが"3"、"4"の場合、以下の処理を行わない。
		if (JPCModelConstant.FUNC_CD_3.equals(funcCode) || JPCModelConstant.FUNC_CD_4.equals(funcCode))
		{
			return;
		}

		// (3) NGワードデータの登録を行う。
		// ・パラメータ「クローズ不可コード」が"0"(クローズ可能)以外の場合、
		//   データ種別コードに"3"(NGワード)を設定して、モニタワークの登録を行う。
		// クローズ不可コード
		String closeFailCd = inCBSMsg.getString(ECR0021D010CBSMsg.CLOSE_FAIL_CD);

		if (!JCRStrConst.CD_DIV_CLOSE_FAIL_CD_KANOU.equals(closeFailCd))
		{
			// (4) 対応記録副次処理部品を呼出し、対応記録のクローズ不可コードを更新する
			new JCRejbCR0011SecProc().updateCloseFailCd(inCBSMsg, inContext, cr0011ETMsg, closeFailCd);
			
			// (5)「ユーザー別問合せモニタモニタワーク登録副次処理部品」を呼び出す。
			CAANMsg cr0371ETMsg = new CAANMsg(CR0371ETMsg.class.getName());

			// (a) パラメータのCBSメッセージ項目からユーザー別問合せモニタモニタワークのETメッセージを編集する。
			// 業務個別設定組織コード
			cr0371ETMsg.set(CR0371ETMsg.WKKBT_ORG_CD, inCBSMsg.getString(ECR0021D010CBSMsg.WKKBT_ORG_CD));
			// ユーザーID
			cr0371ETMsg.set(CR0371ETMsg.USER_ID, inCBSMsg.getString(ECR0021D010CBSMsg.TAIO_USER_ID));
			// 対応記録番号
			cr0371ETMsg.set(CR0371ETMsg.TAIO_KIROK_NO, inCBSMsg.getString(ECR0021D010CBSMsg.TAIO_KIROK_NO));
			// 登録オペレータアカウント
			cr0371ETMsg.set(CR0371ETMsg.ADD_OPEACNT, inCBSMsg.getString(ECR0021D010CBSMsg.ADD_OPEACNT));
			// 更新オペレータアカウント
			cr0371ETMsg.set(CR0371ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECR0021D010CBSMsg.UPD_OPEACNT));

			// (b) 引数に以下の設定を行う。
			// ETメッセージ(ユーザー別問合せモニタワーク)
			// データ種別コード     "3"「NGワード」
			// ユーザー別問合せモニタワーク登録副次処理部品を呼出し、ユーザー別問合せモニタワークを登録する
			new JCRejbCR0371SecProc().addUserToiawaseMonitorWork(inCBSMsg, inContext, cr0371ETMsg
					, JCRStrConst.DATA_SBT_CD_NGWORD);

			// (6)「集約局別問合せモニタワーク登録副次処理部品」を呼び出す。
			CAANMsg cr0381ETMsg = new CAANMsg(CR0381ETMsg.class.getName());
			// (a) パラメータのCBSメッセージ項目からキューBOX別問合せモニタワークのETメッセージを編集する。
			// 業務個別設定組織コード
			cr0381ETMsg.set(CR0381ETMsg.WKKBT_ORG_CD, inCBSMsg.getString(ECR0021D010CBSMsg.WKKBT_ORG_CD));
			// 対応記録番号
			cr0381ETMsg.set(CR0381ETMsg.TAIO_KIROK_NO, inCBSMsg.getString(ECR0021D010CBSMsg.TAIO_KIROK_NO));
			// 登録オペレータアカウント
			cr0381ETMsg.set(CR0381ETMsg.ADD_OPEACNT, inCBSMsg.getString(ECR0021D010CBSMsg.ADD_OPEACNT));
			// 更新オペレータアカウント
			cr0381ETMsg.set(CR0381ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECR0021D010CBSMsg.UPD_OPEACNT));
			
			// (b) 引数に以下の設定を行う。
			// ETメッセージ(集約局別問合せモニタワーク）
			// データ種別コード     "3"「NGワード」
			// ユーザー別問合せモニタワーク登録副次処理部品を呼出し、ユーザー別問合せモニタワークを登録する
			new JCRejbCR0381SecProc().addSykkToiawaseMonitorWork(inCBSMsg, inContext, cr0371ETMsg
					, JCRStrConst.DATA_SBT_CD_NGWORD, inCBSMsg.getString(ECR0021D010CBSMsg.SVC_KEI_NO));

		}

	}

}
