/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	アサイン更新処理　送信メールのURLが選択されたときにログイン処理を自動的に行うActionクラス
//
//		変更履歴
//			2005.02.16  新規作成  氏名 石崎賢太郎
//
//	機能
//
//	送信メールのURLが選択されたときにログイン処理を行うActionクラスです。
//
/////////////////////////////////////////////////////////////////
package jp.co.ntt.lms.xmf.actions.xmo.Assignments;

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

import jp.co.ntt.lms.xmf.XmfOperateSession;
import jp.co.ntt.lms.xms.common.user.User;
import jp.co.ntt.lms.xms.framework.XmsRequest;
import jp.co.ntt.lms.xms.framework.XmsResponse;
import jp.co.ntt.lms.xms.framework.XmsWarningException;
import jp.co.ntt.lms.xms.login.assignments.AssignLoginAction;
import jp.co.ntt.lms.xms.login.base.OperateSession;

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

/**
 * 送信メールのURLが選択されたときにログイン処理を行うActionクラスです。
 * 
 * @author Kentaro Ishizaki (UNITEC)
 * @version 1.0
 */
public class AssignmentsRegOpenAction extends Action
{
	/**
	 * 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
	{
		String warningMessage = null;
		
		// アサインメール自動ログインBeanのインスタンス生成
		AssignLoginAction AssignLoginObject = new AssignLoginAction();
		XmsRequest xmsRequest = new XmsRequest(request, response);
		XmsResponse xmsResponse = new XmsResponse();
		try {

			// ログイン処理
			AssignLoginObject.perform( xmsRequest, xmsResponse );
			
			User user = (User)request.getSession().getAttribute(OperateSession.USER_SESSION);
			XmfOperateSession.setUserInfo(request.getSession(), user);

			// 返却値オブジェクトから次画面URLを取得し、リダイレクトする
			request.setAttribute("message", "");
			request.setAttribute("detail", "");
			request.setAttribute("close", "on");
			request.setAttribute("errorurl", xmsResponse.getUrl());
			return mapping.findForward("error");
		}
		catch( XmsWarningException xwe ) {

			// エラーメッセージ取得
			warningMessage = xwe.getMessage();
			// エラーメッセージが格納されている場合
			// 次画面URLに login.html が設定されているのでリダイレクト
			// アラートでメッセージの表示も行う
		}
		

		// リクエストに変数をセット
		request.setAttribute("strWarningMessage", warningMessage);
		request.setAttribute("strURL", AssignLoginObject.getUrl());
		
		return mapping.findForward("success");
	}

}
