/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	カスタムアサイン更新入力フレーム表示Actionクラス
//
//		変更履歴
//			2005.02.16  新規作成  氏名 石崎賢太郎
//
//	機能
//
//	カスタムアサイン更新入力フレーム表示Actionクラスです。
//
/////////////////////////////////////////////////////////////////
package jp.co.ntt.lms.xmf.actions.xms.assign;

import java.util.Calendar;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jp.co.ntt.lms.xmf.actions.XmsAction;
import jp.co.ntt.lms.xms.assign.CustomAssignConstant;
import jp.co.ntt.lms.xms.assign.CustomAssignInputBean;
import jp.co.ntt.lms.xms.framework.Constant;
import jp.co.ntt.lms.xms.framework.XmsBusinessAction;
import jp.co.ntt.lms.xms.framework.XmsScreenAction;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 * カスタムアサイン更新入力フレーム表示Actionクラスです。
 * 
 * @author Kentaro Ishizaki (UNITEC)
 * @version 1.0
 */
public class CustomAssignInputAction extends XmsAction
{
	/**
	 * strutsフレームワークから呼ばれるメソッドです。
	 * 
	 * @param mapping マッピングオブジェクト。
	 * @param form アクションフォームオブジェクト。
	 * @param request リクエストオブジェクト。
	 * @param response レスポンスオブジェクト。
	 * @return ActionForward アクションフォワードオブジェクト。
	 * @throws Exception
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
	{
		// BusinessAction, ScreenAction実行
		XmsBusinessAction bizAction = null;
		XmsScreenAction scrAction = new jp.co.ntt.lms.xms.assign.CustomAssignInputAction();
		ActionForward forward = this.performXmsAction(mapping, request, response, bizAction, scrAction);

		
		// 以下、jspからの移植
		
		// =========================================================================
		// 入力項目初期値用
		CustomAssignInputBean bean = null;
		// 現在日時
		Calendar current = null;

		// =========================================================================
		// アサイン種別
		int assortType = 0;
		// アサイン種別「学習」初期チェック属性
		String assortTypeLearnChecked = null;
		// アサイン種別「管理」初期チェック属性
		String assortTypeManageChecked = null;
		// アサイン種別「学習と管理」初期チェック属性
		String assortTypeLearnManageChecked = null;

		// =========================================================================
		// 開始日時
		// 年選択項目選択値
		int selectedStartYear = 0;
		// 年選択項目開始値
		int headStartYear = 0;
		// 年選択項目終了値
		int tailStartYear = 0;
		// 月選択項目選択値
		int selectedStartMonth = 0;
		// 日選択項目選択値
		int selectedStartDay = 0;
		// 時選択項目選択値
		int selectedStartHour = 0;
		// 分選択項目選択値
		int selectedStartMinute = 0;

		// 開始日時フラグ
		boolean startLimited = false;
		// 開始日時制限ありチェック属性
		String startLimitedChecked = null;
		// 開始日時制限なしチェック属性
		String startNoLimitedChecked = null;
		// =========================================================================
		// 終了日時
		// 年選択項目選択値
		int selectedEndYear = 0;
		// 年選択項目開始値
		int headEndYear = 0;
		// 年選択項目終了値
		int tailEndYear = 0;
		// 月選択項目選択値
		int selectedEndMonth = 0;
		// 日選択項目選択値
		int selectedEndDay = 0;
		// 時選択項目選択値
		int selectedEndHour = 0;
		// 分選択項目選択値
		int selectedEndMinute = 0;

		// 終了日時フラグ
		boolean endLimited = false;
		// 終了日時制限ありチェック属性
		String endLimitedChecked = null;
		// 終了日時制限なしチェック属性
		String endNoLimitedChecked = null;

		// 学習回数
		String studyCount = null;
		// 学習回数フラグ
		boolean studyCountLimited = false;
		// 学習回数制限ありチェック属性
		String studyCountLimitedChecked = null;
		// 学習回数制限なしチェック属性
		String studyCountNoLimitedChecked = null;

		// メール送信
		boolean submitMail = false;
		// チェック
		String submitMailChecked = null;

		// 入力項目「学習期間」表示／非表示フラグ。
		boolean visiblePeriod = false;
		// 入力項目「学習回数」表示／非表示フラグ。
		boolean visibleCount = false;
		////////////////////////////////////////////////////////////////////////////
		// データ取得
		//==========================================================================
		// 現在日時
		current = Calendar.getInstance();
		// 入力項目
		bean = (CustomAssignInputBean)request.getAttribute(Constant.KEY_SCREEN_BEAN);

		//==========================================================================
		// アサイン種別ラジオボタン初期チェック
		assortType = bean.getAssortType();
		switch ( assortType ) {
			// 管理 初期チェック
			case CustomAssignConstant.ASSORT_TYPE_MANAGE:
				assortTypeLearnChecked = "";
				assortTypeManageChecked = " checked";
				assortTypeLearnManageChecked = "";
				break;
			// 学習と管理 初期チェック
			case CustomAssignConstant.ASSORT_TYPE_LEARN_MANAGE:
				assortTypeLearnChecked = "";
				assortTypeManageChecked = "";
				assortTypeLearnManageChecked = " checked";
				break;
			// 学習 初期チェック
			case CustomAssignConstant.ASSORT_TYPE_LEARN:
			default:
				assortTypeLearnChecked = " checked";
				assortTypeManageChecked = "";
				assortTypeLearnManageChecked = "";
				break;
		}

		// =========================================================================
		// 開始日時
		// 年
		selectedStartYear = bean.getPeriodStartYear();
		headStartYear  = Math.min( current.get( Calendar.YEAR ), selectedStartYear) ;
		tailStartYear   = selectedStartYear + 10;
		// 月
		selectedStartMonth = bean.getPeriodStartMonth();
		// 日
		selectedStartDay = bean.getPeriodStartDay();
		// 時
		selectedStartHour = bean.getPeriodStartHour();
		// 分
		selectedStartMinute = bean.getPeriodStartMinute();
		// 開始日時制限フラグ
		startLimited = bean.isPeriodStartLimited();
		// フラグによって制限あり・なしのラジオボタンの属性を追加
		if ( startLimited == true ) {
			// 開始日時制限ありにチェック
			startLimitedChecked = " checked";
			startNoLimitedChecked = "";
		} else {
			// 開始日時制限なしにチェック
			startLimitedChecked = "";
			startNoLimitedChecked = " checked";
		}
		// =========================================================================
		// 終了日時
		// 年
		selectedEndYear = bean.getPeriodEndYear();
		headEndYear  = Math.min( current.get( Calendar.YEAR ), selectedEndYear) ;
		tailEndYear   = selectedEndYear + 10;
		// 月
		selectedEndMonth = bean.getPeriodEndMonth();
		// 日
		selectedEndDay = bean.getPeriodEndDay();
		// 時
		selectedEndHour = bean.getPeriodEndHour();
		// 分
		selectedEndMinute = bean.getPeriodEndMinute();
		// 終了日時制限フラグ
		endLimited = bean.isPeriodEndLimited();
		// フラグによって制限あり・なしのラジオボタンの属性を追加
		if ( endLimited == true ) {
			// 終了日時制限ありにチェック
			endLimitedChecked = " checked";
			endNoLimitedChecked = "";
		} else {
			// 終了日時制限なしにチェック
			endLimitedChecked = "";
			endNoLimitedChecked = " checked";
		}
		// =========================================================================
		// 学習回数
		studyCount = bean.getStudyCount();
		// 学習回数フラグ
		studyCountLimited = bean.isCountLimited();
		// フラグによって制限あり・なしのラジオボタンの属性を追加
		if ( studyCountLimited == true ) {
			// 学習回数制限ありにチェック
			studyCountLimitedChecked = " checked";
			studyCountNoLimitedChecked = "";
		} else {
			// 学習回数制限なしにチェック
			studyCountLimitedChecked = "";
			studyCountNoLimitedChecked = " checked";
		}
		// =========================================================================
		// メール送信
		submitMail = bean.isSubmitMail();
		// フラグによってチェック属性を変更
		if ( submitMail ) {
			submitMailChecked = " checked";
		} else {
			submitMailChecked = "";
		}

		
		// リクエストに変数をセット
		request.setAttribute("bean", bean);
		request.setAttribute("assortTypeLearnChecked", assortTypeLearnChecked);
		request.setAttribute("assortTypeManageChecked", assortTypeManageChecked);
		request.setAttribute("assortTypeLearnManageChecked", assortTypeLearnManageChecked);
		request.setAttribute("startNoLimitedChecked", startNoLimitedChecked);
		request.setAttribute("endNoLimitedChecked", endNoLimitedChecked);
		request.setAttribute("startLimitedChecked", startLimitedChecked);
		request.setAttribute("headStartYear", new Integer(headStartYear));
		request.setAttribute("tailStartYear", new Integer(tailStartYear));
		request.setAttribute("selectedStartYear", new Integer(selectedStartYear));
		request.setAttribute("selectedStartMonth", new Integer(selectedStartMonth));
		request.setAttribute("selectedStartDay", new Integer(selectedStartDay));
		request.setAttribute("selectedStartHour", new Integer(selectedStartHour));
		request.setAttribute("selectedStartMinute", new Integer(selectedStartMinute));
		request.setAttribute("endLimitedChecked", endLimitedChecked);
		request.setAttribute("headEndYear", new Integer(headEndYear));
		request.setAttribute("tailEndYear", new Integer(tailEndYear));
		request.setAttribute("selectedEndYear", new Integer(selectedEndYear));
		request.setAttribute("selectedEndMonth", new Integer(selectedEndMonth));
		request.setAttribute("selectedEndDay", new Integer(selectedEndDay));
		request.setAttribute("selectedEndHour", new Integer(selectedEndHour));
		request.setAttribute("selectedEndMinute", new Integer(selectedEndMinute));
		request.setAttribute("studyCountNoLimitedChecked", studyCountNoLimitedChecked);
		request.setAttribute("studyCountLimitedChecked", studyCountLimitedChecked);
		request.setAttribute("studyCount", studyCount);
		request.setAttribute("submitMailChecked", submitMailChecked);

		
		return forward;
	}
		

}
