/**
 * Copyright (c) 2003-2004 System Integrator Corporation.
 *                 All Rights Reserved.
 */
package jp.co.sint.servlet.mallmgr;

import java.io.IOException;
import java.sql.SQLException;

import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import jp.co.sint.basic.SILogin;
import jp.co.sint.beans.mallmgr.UILogin;
import jp.co.sint.config.SIConfig;
import jp.co.sint.database.SIDBAccessException; //7.3.0 ST2023 追加
import jp.co.sint.database.SIDatabaseConnection;
import jp.co.sint.servlet.SIServlet;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIURLMap;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;
import jp.co.sint.tools.SIURLParameter;//7.1.1 ST0236 追加
//7.3.0 ST2022 追加 ここから
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
//7.3.0 ST2022 追加 ここまで


/**
 * @version $Id: SIRegLoginSrv.java,v 1.0 2003/10/01 Exp $
 * @author  Jinwang Chen
 * <br>Description:
 * <p>History</p>
 * <p>Author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reason</p>
 *  ============&nbsp;&nbsp;&nbsp;==========&nbsp;&nbsp;===========================<br>
 * Jinwang Chen   2003/10/01 15:10:04  Original
 */
public class SIRegLoginSrv extends SIServlet {
  //ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);

  public void doUpdate(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    HttpSession session=request.getSession();//セッションの取得
    session.invalidate();
    session=request.getSession(true);//セッションの取得
    SIDatabaseConnection databaseConnection=new SIDatabaseConnection();//DBへのコネクションの作成
    SIURLParameter urlParam = new SIURLParameter(request);//7.1.1 ST0236 追加
    SIRegMngAccesslogSrv siRegMngAccesslogSrv = new SIRegMngAccesslogSrv();//7.3.0 ST2023 追加
    try {
      String actionName=this.getActionName(urlParam);//画面からのアクション	//7.1.1 ST0236 修正
      String editMode = this.getEditMode(urlParam); //DBへの編集モード	//7.1.1 ST0236 修正
      SICustomErrors errors=new SICustomErrors();//7.3.0 ST2022 追加
      
      UILogin login = new UILogin();
      if (SIConfig.SIACTION_LOGIN.equalsIgnoreCase(actionName)) {//ログイン開始
        login.init(urlParam);//7.1.1 ST0236 修正
        session.setAttribute(SIConfig.SISESSION_MAN_LOGIN_EDIT_NAME,login);
        String navi = (String)session.getAttribute(SIConfig.SISESSION_MAN_NAVIGATER_LIST_NAME);//7.3.0 ST2022 追加
        if (login.validate(request,databaseConnection.getConnection())) {
          SILogin lManLogin=SIHTMLUtil.getLogin(request);
          StringBuffer lUrlBuf=new StringBuffer();
          //7.3.0 ST2022 修正 ここから
          boolean shopFlg=true;
          if (SIUtil.notMatch(SIConfig.SIADMIN_MS_SS,lManLogin.getAdminType())) {
            session.setAttribute(SIConfig.SISESSION_MAN_NAVIGATER_LIST_NAME,SIConfig.SINAVI_MALL_EDIT);
            shopFlg=false;
          } else {
            session.setAttribute(SIConfig.SISESSION_MAN_NAVIGATER_LIST_NAME,SIConfig.SINAVI_SHOP_LIST);
          }
          if ("2".equals(lManLogin.getUserType())) {
            SIUtil.selectedCheck(SIConfig.SINAVI_ORDER_LIST,navi);
            lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.servlet.manager.navigater"));
            lUrlBuf.append("?actionNameTxt=&editModeTxt=&navigaterTxt="+SIConfig.SINAVI_SHIPPMENT_LIST+"&pageNumberTxt=1&pageSizeSel="+SIConfig.SIPAGE_SIZE_DEFAULT+"&pageNumberSel="+SIConfig.SIPAGE_SIZE_DEFAULT); 
          } else if("1".equals(lManLogin.getUserType())) {
            SIUtil.selectedCheck(SIConfig.SINAVI_KEEP_LIST,navi);
            lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.servlet.manager.navigater"));
            lUrlBuf.append("?actionNameTxt=&editModeTxt=&navigaterTxt="+SIConfig.SINAVI_KEEP_LIST+"&pageNumberTxt=1&pageSizeSel="+SIConfig.SIPAGE_SIZE_DEFAULT+"&pageNumberSel="+SIConfig.SIPAGE_SIZE_DEFAULT); 
          } else if(lManLogin.getMngBaseInfo().equals("1")&&lManLogin.getMngNews().equals("0")) {
            if (!shopFlg) {
              lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.jsp.manager.mall.edit"));
              lUrlBuf.append("?actionNameTxt=&editModeTxt=");
            } else {
              lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.servlet.manager.shop"));
              lUrlBuf.append("?actionNameTxt=").append(SIConfig.SIACTION_MODIFY);
              lUrlBuf.append("&mallShopCode=").append(lManLogin.getMallShopCode());
            }
          } else if(lManLogin.getMngOrder().equals("1")) {
            SIUtil.selectedCheck(SIConfig.SINAVI_ORDER_LIST,navi);
            lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.servlet.manager.navigater"));
            lUrlBuf.append("?actionNameTxt=&editModeTxt=&navigaterTxt="+SIConfig.SINAVI_ORDER_LIST+"&pageNumberTxt=1&pageSizeSel="+SIConfig.SIPAGE_SIZE_DEFAULT+"&pageNumberSel="+SIConfig.SIPAGE_SIZE_DEFAULT); 
          } else if(lManLogin.getMngCust().equals("1")) {
            SIUtil.selectedCheck(SIConfig.SINAVI_CUST_LIST,navi);
            lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.servlet.manager.navigater"));
            lUrlBuf.append("?actionNameTxt=&editModeTxt=&navigaterTxt="+SIConfig.SINAVI_CUST_LIST+"&pageNumberTxt=1&pageSizeSel="+SIConfig.SIPAGE_SIZE_DEFAULT+"&pageNumberSel="+SIConfig.SIPAGE_SIZE_DEFAULT);
          } else if(lManLogin.getMngCmdty().equals("1")) {
            SIUtil.selectedCheck(SIConfig.SINAVI_CATEGORY_LIST,navi);
            lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.servlet.manager.navigater"));
            lUrlBuf.append("?actionNameTxt=&editModeTxt=&navigaterTxt="+SIConfig.SINAVI_CATEGORY_LIST+"&pageNumberTxt=1&pageSizeSel="+SIConfig.SIPAGE_SIZE_DEFAULT+"&pageNumberSel="+SIConfig.SIPAGE_SIZE_DEFAULT);		          
          } else if(lManLogin.getMngAnalysis().equals("1")) {
            SIUtil.selectedCheck(SIConfig.SINAVI_SALE_LIST,navi);
            lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.servlet.manager.navigater"));
            lUrlBuf.append("?actionNameTxt=&editModeTxt=&navigaterTxt="+SIConfig.SINAVI_SALE_LIST+"&pageNumberTxt=1&pageSizeSel="+SIConfig.SIPAGE_SIZE_DEFAULT+"&pageNumberSel="+SIConfig.SIPAGE_SIZE_DEFAULT);
          } else if(lManLogin.getMngCmn().equals("1")) {
            SIUtil.selectedCheck(SIConfig.SINAVI_REVIEW_LIST,navi);
            lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.servlet.manager.navigater"));
            lUrlBuf.append("?actionNameTxt=&editModeTxt=&navigaterTxt="+SIConfig.SINAVI_REVIEW_LIST+"&pageNumberTxt=1&pageSizeSel="+SIConfig.SIPAGE_SIZE_DEFAULT+"&pageNumberSel="+SIConfig.SIPAGE_SIZE_DEFAULT);
          } else if(lManLogin.getMngDataIo().equals("1")) {
            SIUtil.selectedCheck(SIConfig.SINAVI_CMDTY_UPLOADIMG,navi);
            lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.servlet.manager.navigater"));	
            lUrlBuf.append("?actionNameTxt="+SIConfig.SIACTION_CLEAR+"&editModeTxt=&navigaterTxt="+SIConfig.SINAVI_CMDTY_UPLOADIMG+"&pageNumberTxt=1&pageSizeSel="+SIConfig.SIPAGE_SIZE_DEFAULT+"&pageNumberSel="+SIConfig.SIPAGE_SIZE_DEFAULT);
          } else {
            //何も権限がない場合。
            errors.addError(new SICustomError("manager.app.login.authority"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
            session.removeAttribute(SIConfig.SISESSION_MAN_LOGIN_EDIT_NAME);
            lUrlBuf=new StringBuffer(SIURLMap.getUrl("webshop.jsp.manager.login"));
          }
          if (shopFlg && session.getAttribute(SIConfig.SISESSION_MAN_LOGIN_EDIT_NAME) != null) {
            lUrlBuf.append("&mallShopCode=").append(lManLogin.getMallShopCode());
          }
          //7.3.0 ST2023 追加 ここから 管理ログ出力  ログインが成功して、権限がある場合
          if (session.getAttribute(SIConfig.SISESSION_MAN_LOGIN_EDIT_NAME) != null) {
            try {
              siRegMngAccesslogSrv.insertTableData(databaseConnection.getConnection(),request,"1",null);
            } catch (SIDBAccessException e) {
              e.printStackTrace();
            }
          }
          //7.3.0 ST2023 追加 ここまで
          forward(request,response,lUrlBuf.toString());
          //7.3.0 ST2022 修正 ここまで
        } else {
          forwardKey(request,response, "webshop.jsp.manager.login");
        }
      } else if (SIConfig.SIACTION_RESET.equalsIgnoreCase(actionName)) {//リセット
        session.removeAttribute(SIConfig.SISESSION_MAN_LOGIN_EDIT_NAME);
        forwardKey(request, response,"webshop.jsp.manager.login");
      } else {//そのた
        //7.1.1 ST0204 削除 log.error("not known action name.actionName="+actionName);
        session.removeAttribute(SIConfig.SISESSION_MAN_LOGIN_EDIT_NAME);
        forwardKey(request, response,"webshop.jsp.manager.login");
      }
    }catch (SQLException e){
      e.printStackTrace();
      throw new ServletException();
    }catch (NamingException e){
      e.printStackTrace();
      throw new ServletException();
    }finally{
      databaseConnection.close();
    }
  }
  
  public void destroy() {
  }
}