/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//	パスワードリマインダ画面アクションクラス
//
//		変更履歴
//			2005.02.19  新規作成  村上 靖征
//
//	機能
//
//	このクラスはパスワードリマインダ画面のアクションクラスです。
//
////////////////////////////////////////////////////////////////

package jp.co.ntt.lms.xmf.actions;

import java.util.ArrayList;

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

import jp.co.ntt.lms.xmo.Environment;
import jp.co.ntt.lms.xmo.Mail.MailClient;
import jp.co.ntt.lms.xmo.People.PeopleEnv;

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

/**
 *  パスワードリマインダ画面アクションクラス
 * 
 *  このクラスはパスワードリマインダ画面のアクションクラスです。
 * 
 *  @author 村上 靖征
 *  @version 1.0
 */
public class SendPasswordAction extends Action
{

    /*
     * execute のオーバーライド実装
     * 
     * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping,
     *      org.apache.struts.action.ActionForm,
     *      javax.servlet.http.HttpServletRequest,
     *      javax.servlet.http.HttpServletResponse)
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception
    {
        HttpSession session = request.getSession();

        ///////////////////////////////////////////
        // パラメータ取得
        // 	・action メール送信前、送信後判定用フラグ
        //	・LOGIN_ID ﾛｸﾞｲﾝID
        ///////////////////////////////////////////
        String strAction = request.getParameter("act"); // アクションフラグ
        String strLoginPath = request.getParameter("loginpath");
        
        String strLoginID = (String) session.getAttribute("loginId");// ログインID
        String strUserID = (String) session.getAttribute("userId");// ユーザーID

        ///////////////////////////////////////////
        // パラメータチェック
        ///////////////////////////////////////////
        if (strLoginID == null || strLoginID.equals(""))
        {
            //response.sendRedirect( strReturnURL_o );
            return mapping.findForward("back");
        }

        /////////////////////////////////////////////////////////////////
        //アクションフラグがonの場合、パスワード再送処理。
        /////////////////////////////////////////////////////////////////
        if (strAction != null && strAction.equals("on"))
        {
            //パスワードをユーザーに送信
            // メール送信情報の取得

            // インスタンス作成
            PeopleEnv objPeopleEnv = new PeopleEnv();
            Environment objEnv = new Environment();

            // パラメータ取得
            String strSystemURL = objEnv.getSystemURL(); // システムURL
            String strMailTempPath = objPeopleEnv.getSendMailPath(); // ﾒｰﾙﾃﾝﾌﾟﾚｰﾄﾌｧｲﾙﾊﾟｽ
            String strLoginURL = strSystemURL + strLoginPath;

    		MessageResources resources = getResources(request, "msg.xmf.xmo.Base.SendMailMessage");
            
            // パスワード通知メールの送信
            MailClient objMail = new MailClient();
            int intResult;
            intResult = objMail.sendMail(strUserID, strLoginURL,
                    strMailTempPath);
            if (intResult != 0)
            {
                // メールサーバに接続できなかったときエラーを表示する。
                String strMessage = resources.getMessage("M002001");
                String strDetail = null;

                request.setAttribute("message", strMessage);
                request.setAttribute("detail", strDetail);
                request.setAttribute("close", "true");
                //response.sendRedirect( getParamErrURL( strMessage, strDetail,
                // true ) );
                return mapping.findForward("paramerr");
            }

            ArrayList alng = objMail.checkNgResult();
            if (alng != null)
            {
                if (alng.size() != 0)
                {
                    for (int i = 0; i < alng.size(); i++)
                    {
                        // メールの送信ができなかったときエラーを表示する。
                        String strMessage = resources.getMessage("M002002");
                        String strDetail = null;

                        request.setAttribute("message", strMessage);
                        request.setAttribute("detail", strDetail);
                        request.setAttribute("close", "true");
                        //response.sendRedirect( getParamErrURL( strMessage,
                        // strDetail, true ) );
                        return mapping.findForward("paramerr");
                    }
                }
            }
            ArrayList alnot = objMail.checkNotSendResult();
            if (alnot != null)
            {
                if (alnot.size() != 0)
                {
                    for (int i = 0; i < alnot.size(); i++)
                    {
                        // メールの送信ができなかったときエラーを表示する。
                        String strMessage = resources.getMessage("M002002");
                        String strDetail = null;

                        request.setAttribute("message", strMessage);
                        request.setAttribute("detail", strDetail);
                        request.setAttribute("close", "true");
                        //response.sendRedirect(getParamErrURL(strMessage, strDetail, true));
                        return mapping.findForward("paramerr");
                    }
                }
            }
            session.setAttribute("loginId", "");
            session.setAttribute("userId", "");
            
            request.setAttribute("strReturnURL_o", strLoginURL);
            
            return mapping.findForward("success");
        }

        return mapping.findForward("nosend");
    }
}