/////////////////////////////////////////////////////////////////////
//
//	人管理の削除処理アクションクラス
//
//		変更履歴
//			2005.02.14  新規作成  koji
//
//	機能
//
//  	人管理の画面で入力された人情報をデータベースに削除する。
///////////////////////////////////////////////////////////////////////
package jp.co.ntt.lms.xmf.actions.xmo.People;

import java.util.Vector;

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

import jp.co.ntt.lms.xmf.xmo.Com.ComFunction;
import jp.co.ntt.lms.xmo.Groups.GroupsClient;
import jp.co.ntt.lms.xmo.People.PeopleClient;
import jp.co.ntt.lms.xmo.RoleAssignments.RoleAssignmentsClient;
import jp.co.ntt.lms.xmo.Roles.RolesClient;

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 Administrator
 *
 * TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
public class PeopleDeleteAction extends Action {

	/* (非 Javadoc)
	 * @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 map, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		// メッセージリソース取得
		MessageResources msgResources = getResources(request, "msg.xmf.xmo.People.PeopleMessage");

		////////////////////////////////////////////////////
		// パラメータ取得
		// 	・parentID	親グループのID	必須
		// 	・selectID	選択されたユーザーID	必須
		// 	・returnURL	戻りページ      	必須
		// 	・act		アクションフラグ
		////////////////////////////////////////////////////
		String strParentID_o = request.getParameter("parentID");// 親グループのID
		String strUserID_o = request.getParameter("selectID");		// 選択されたユーザーID
		String strReturnURL_o = request.getParameter("returnURL"); 	// 戻りページ
		String strAction = request.getParameter("act"); 			// アクションフラグ

		///////////////////////////////////////////
		// パラメータチェック
		///////////////////////////////////////////
		if( strParentID_o == null || strParentID_o.equals( "" ) ) {
			String strMessage = msgResources.getMessage("M032001");
			String strDetail = msgResources.getMessage("D032001");
			return getParamErrForward(map, request, strMessage, strDetail, true);
		}
		if( ( strUserID_o == null || strUserID_o.equals( "" ) ) ) {
			String strMessage = msgResources.getMessage("M032005");
			String strDetail = msgResources.getMessage("D032005");
			return getParamErrForward(map, request, strMessage, strDetail, true );
		}
		if( strReturnURL_o == null || strReturnURL_o.equals( "" ) ) {
			String strMessage = msgResources.getMessage("M032009");
			return getParamErrForward(map, request, strMessage, null, true );
		}
		
		String strLoginID_o = null; 		//ログインID
		String strForeignID_o = null; 	//外部ID
		String strPassword_o = null; 		//パスワード
		String strUserName_o = null; 		//名前
		String strReadingName_o = null; 	//フリガナ
		String strBirthday_o = null; 		//生年月日
		String strSex_o = null; 			//性別
		String strUserAddress_o = null; 	//住所
		String strEmail_o = null; 		//メールアドレス1
		String strEmail2_o = null; 		//メールアドレス2
		String strContactTel_o = null; 	//電話番号
		String strCustomMsgDir_o = null; 	//コメント	
		String strSeyibetu_o = "";		//性別
		//ユーザー権限リスト
		Vector vecRolesList = new Vector();
		StringBuffer strXmoNameLine = new StringBuffer();
		String strXmoNameInfo_o = "";

		///////////////////////////////////////////////////////////////
		// アクションフラグがonの場合、パラメータ登録情報を取得します。
		// 	・returnURL		戻りページ		必須
		// 	・userID		ユーザID		必須
		// 	・foreignID		外部ID			必須
		// 	・loginID		ログインID		必須
		// 	・password		パスワード		必須
		// 	・username		名前			必須
		// 	・reading_name	フリガナ
		// 	・birthday		生年月日
		// 	・sex			性別
		// 	・useraddress	住所
		// 	・email			メールアドレス1
		// 	・email2		メールアドレス2
		// 	・contact_tel	電話番号
		//	・txtDescription	コメント
		//	・xmo_name_info	権限リスト
		///////////////////////////////////////////////////////////////
		if(strAction != null && strAction.equals("on")){
			strUserID_o = request.getParameter("userID"); 				//ユーザID
			strLoginID_o = request.getParameter("loginID"); 				//ログインID
			strForeignID_o = request.getParameter("foreignID"); 			//外部ID
			strReturnURL_o = request.getParameter("returnURL"); 			// 戻りページ
			strPassword_o = request.getParameter("password"); 			//パスワード
			strUserName_o =  request.getParameter("username"); 			//名前
			strReadingName_o = request.getParameter("reading_name"); 		//フリガナ
			strBirthday_o = request.getParameter("birthday"); 			//生年月日
			strSex_o = request.getParameter("sex"); 						//性別
			strUserAddress_o = request.getParameter("useraddress"); 		//住所
			strEmail_o = request.getParameter("email"); 					//メールアドレス1
			strEmail2_o = request.getParameter("email2"); 				//メールアドレス2
			strContactTel_o = request.getParameter("contact_tel"); 		//電話番号
			strCustomMsgDir_o = request.getParameter("txtDescription"); 	//コメント
			strXmoNameInfo_o = request.getParameter("xmo_name_info"); 	// 権限リスト

			if(strSex_o.equals("1")) {
				strSeyibetu_o = "男";
			}
			else if(strSex_o.equals("2")) {
				strSeyibetu_o = "女";
			}
			else{
				strSeyibetu_o = "男";
			}

		}

		PeopleClient objPeople = new PeopleClient();
		if(strAction != null && strAction.equals("on")){
			/////////////////////////////////////////////////
			// アクションフラグがonの場合、ユーザーの削除処理
			/////////////////////////////////////////////////
			// 削除条件の設定
			objPeople.setDeleteUserID( strUserID_o );	// ユーザID
			objPeople.setDeleteParentID( strParentID_o );	// 親ID
			// 削除メソッド実行
			if(!objPeople.delete()) {
				// 削除がうまくいかなかった場合
				if( objPeople.isErr() ) {
					// エラーの場合
					request.setAttribute("MessageData", objPeople.getMessageData());
					return map.findForward("error");
				}
				else {
					String strMessage =  objPeople.getMessage();
					return getParamErrForward(map, request, strMessage, null, true );
				}
			}
			// エンコード変換処理
			//strUserID_o = ComFunction.encodeSJIS( strUserID_o );
			//strLoginID_o = ComFunction.encodeSJIS( strLoginID_o );
			//strForeignID_o = ComFunction.encodeSJIS( strForeignID_o );
			//strUserName_o = ComFunction.encodeSJIS( strUserName_o );
			//strPassword_o = ComFunction.encodeSJIS( strPassword_o );
			//strUserAddress_o = ComFunction.encodeSJIS( strUserAddress_o );
			//strSex_o = ComFunction.encodeSJIS( strSex_o );
			//strEmail_o = ComFunction.encodeSJIS( strEmail_o );
			//strEmail2_o = ComFunction.encodeSJIS( strEmail2_o );
			//strReadingName_o = ComFunction.encodeSJIS( strReadingName_o );
			//strBirthday_o = ComFunction.encodeSJIS( strBirthday_o );
			//strContactTel_o = ComFunction.encodeSJIS( strContactTel_o );
			//strCustomMsgDir_o = ComFunction.encodeSJIS( strCustomMsgDir_o );
			//strReturnURL_o = ComFunction.encodeSJIS( strReturnURL_o );
			//strXmoNameInfo_o = ComFunction.encodeSJIS( strXmoNameInfo_o );

		}else{
			///////////////////////////////////////////////////////////////
			// アクションフラグがブランクの場合、削除するユーザー情報の取得
			///////////////////////////////////////////////////////////////
			// 選択条件の設定
			objPeople.setWhereUserID( strUserID_o );	// ユーザID
			// 選択メソッド実行
			if(!objPeople.select()) {
				// 選択がうまくいかなかった場合
				if( objPeople.isErr() ) {
					// エラーの場合
					request.setAttribute("MessageData", objPeople.getMessageData());
					return map.findForward("error");
				}
				else {
					String strMessage =  objPeople.getMessage();
					return getParamErrForward(map, request, strMessage, null, true );
				}
			}

			if( objPeople.next() ) {
				//ユーザー名
				strUserName_o = objPeople.getUserName();
			}
			else {
				//ユーザー名が存在しない場合エラーを出力する
				//2002.2.18 modify メッセージ対応
				//String strMessage =  "ユーザー名が存在しません。";
				String strMessage = msgResources.getMessage("M032006");
				return getParamErrForward(map, request, strMessage, null, true );
			}
			// ログインID
			strLoginID_o = objPeople.getLoginID();
			// 外部ID
			strForeignID_o = objPeople.getForeignID();
			//パスワード
			strPassword_o = objPeople.getEncryptPassword();
			//フリガナ
			strReadingName_o = objPeople.getReadingName();
			//生年月日
			strBirthday_o = objPeople.getBirthday();
			//性別
			strSex_o = objPeople.getSex();
			//住所
			strUserAddress_o = objPeople.getContactAddress();
			//メールアドレス
			strEmail_o = objPeople.getContactEmail();
			//メールアドレス２
			strEmail2_o = objPeople.getContactEmail2();
			//電話番号
			strContactTel_o = objPeople.getContactTel();
			//コメント
			strCustomMsgDir_o = objPeople.getCustomMsgDir();

			if(strSex_o.equals("1")) {
				strSeyibetu_o = "男";
			}
			else if(strSex_o.equals("2")) {
				strSeyibetu_o = "女";
			}
			else{
				strSeyibetu_o = "男";
			}
		}

		///////////////////////////////////////////
		// ユーザーの権限リストを取得します
		///////////////////////////////////////////
		// リストデータ取得部
		// Assignmentsテーブル取得
		RoleAssignmentsClient objRoleAssignmentsXMO = null;
		RolesClient objRolesXMO = null;

		// RoleAssignmentsのRoleIdの取得
		objRoleAssignmentsXMO = new RoleAssignmentsClient();
		objRoleAssignmentsXMO.setWhereUserID( strUserID_o );
		if( !objRoleAssignmentsXMO.select() ) {
			// 検索がうまくいかなかった場合
			if( objRoleAssignmentsXMO.isErr() ) {
				// エラーの場合
				request.setAttribute("MessageData", objRoleAssignmentsXMO.getMessageData());
				return map.findForward("error");
			}
			else {
				String strMessage =  objRoleAssignmentsXMO.getMessage();
				return getParamErrForward(map, request, strMessage, null, true );
			}
		}

		while( objRoleAssignmentsXMO.next() ) {
			// ロールＩＤの取得
			String strRoleID = objRoleAssignmentsXMO.getRoleID();
			// グループＩＤの取得
			String strGroupID = objRoleAssignmentsXMO.getGroupID();

			// グループ名取得
			GroupsClient objGroupsXMO = new GroupsClient();
			// 検索条件の設定
			objGroupsXMO.setWhereGroupID( strGroupID );
			if( !objGroupsXMO.select() ) {
				// 検索がうまくいかなかった場合
				if( objGroupsXMO.isErr() ) {
					// エラーの場合
					request.setAttribute("MessageData", objGroupsXMO.getMessageData());
					return map.findForward("error");
				}
				else {
					String strMessage =  objGroupsXMO.getMessage();
					return getParamErrForward(map, request, strMessage, null, true );
				}
			}
			// グループ名の取得
			String strGroupName = "";
			if( objGroupsXMO.next() ) {
				strGroupName = objGroupsXMO.getGroupName();
			}
			else {
				request.setAttribute("MessageData", objGroupsXMO.getMessageData());
				return map.findForward("error");
			}

			// ロール情報取得
			objRolesXMO = new RolesClient();
			// 検索条件の設定
			objRolesXMO.setWhereRoleID( strRoleID );
			if( !objRolesXMO.select() ) {
				// 検索がうまくいかなかった場合
				if( objRolesXMO.isErr() ) {
					// エラーの場合
					request.setAttribute("MessageData", objRolesXMO.getMessageData());
					return map.findForward("error");
				}
				else {
					String strMessage =  objRolesXMO.getMessage();
					return getParamErrForward(map, request, strMessage, null, true );
				}
			}
			// ロール名称取得
			String strRoleName = "";
			if( objRolesXMO.next() ) {
				String[] strRolesInfo = new String[4];
				strRolesInfo[0] = objRolesXMO.getRoleID();
				strRolesInfo[1] = objRolesXMO.getRoleName();
				strRolesInfo[2] = strGroupID;
				strRolesInfo[3] = strGroupName;
				vecRolesList.add(strRolesInfo);
				strXmoNameLine.append(strRolesInfo[0] + "," + strRolesInfo[1] + "," + strRolesInfo[2] + "," + strRolesInfo[3] + "/");
			}else{
				//ロール名が存在しない場合エラーを出力する
				String strMessage =  "ロール名が存在しません。";
				return getParamErrForward(map, request, strMessage, null, true );
			}
		}
		// 権限データ有無チェック
		if(strXmoNameLine.length() > 0) {
			strXmoNameLine.deleteCharAt(strXmoNameLine.length()-1);
			strXmoNameInfo_o = strXmoNameLine.toString();
		} else {
			strXmoNameInfo_o = "";
		}

		//権限リストをベクターから配列にコピーします。
		String[][] strRolesCopy_o = new String[vecRolesList.size()][4];
		vecRolesList.copyInto( strRolesCopy_o );

		// 表示用データを格納
		request.setAttribute("strAction", strAction);
		request.setAttribute("strParentID_o", strParentID_o);
		request.setAttribute("strUserID_o", strUserID_o);
		request.setAttribute("strReturnURL_o", strReturnURL_o);
		request.setAttribute("strLoginID_o", strLoginID_o);
		request.setAttribute("strForeignID_o", strForeignID_o);
		request.setAttribute("strUserName_o", strUserName_o);
		request.setAttribute("strReadingName_o", strReadingName_o);
		request.setAttribute("strBirthday_o", strBirthday_o);
		request.setAttribute("strSex_o", strSex_o);
		request.setAttribute("strUserAddress_o", strUserAddress_o);
		request.setAttribute("strEmail_o", strEmail_o);
		request.setAttribute("strEmail2_o", strEmail2_o);
		request.setAttribute("strContactTel_o", strContactTel_o);
		request.setAttribute("strCustomMsgDir_o", strCustomMsgDir_o);
		request.setAttribute("strContactTel_o", strContactTel_o);
		request.setAttribute("strXmoNameInfo_o", strXmoNameInfo_o);
		request.setAttribute("strRolesCopy_o", strRolesCopy_o);
		request.setAttribute("strSeyibetu_o", strSeyibetu_o);
		
		return map.findForward("success");
	}
	
	private ActionForward getParamErrForward(ActionMapping map, HttpServletRequest request, String strMessage, String strDetail, boolean isClose){
		request.setAttribute("message", strMessage);
		request.setAttribute("detail", strDetail);
		if( isClose ) {
			request.setAttribute("close", "on");
		}
		return map.findForward("paramError");
	}
}
