/**
 *                 All Rights Reserved.
 */
package jp.co.sint.servlet.front;

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.util.Date;
import java.util.HashMap;
import java.util.Properties;
import java.util.Iterator;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.Cookie;

import jp.co.sint.basic.SICust;
import jp.co.sint.basic.SIFrontBasic;
import jp.co.sint.basic.SIMaker;
import jp.co.sint.basic.SILoginSession;
import jp.co.sint.basic.SIPointMan;
import jp.co.sint.basic.SIReserveCartManager;
import jp.co.sint.basic.SIUserInfo;
import jp.co.sint.beans.front.UIDeliveryList;
import jp.co.sint.beans.front.UIOpinion;
import jp.co.sint.beans.front.UIRemainder;
import jp.co.sint.beans.front.UIUserCustqa;
import jp.co.sint.beans.front.UIUserCustqaDetail;
import jp.co.sint.beans.front.UIUserEdit;
import jp.co.sint.beans.front.UIUserLogin;
import jp.co.sint.beans.mallmgr.UIRegCatalogCust;
import jp.co.sint.beans.mallmgr.UIRegCust;
import jp.co.sint.config.SIConfig;
import jp.co.sint.config.SIDBMultiConf;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.database.SIDatabaseConnection;
import jp.co.sint.database.SIDateTimeType;
import jp.co.sint.database.SIDeleteRec;
import jp.co.sint.database.SIDuplicateKeyException;
import jp.co.sint.database.SIInsertRec;
import jp.co.sint.database.SIModifyRec;
import jp.co.sint.database.SISpcType;
import jp.co.sint.mail.SIMail;
import jp.co.sint.mail.SIMailUtil;
import jp.co.sint.mail.SISendMail;
import jp.co.sint.servlet.SIServlet;
import jp.co.sint.servlet.mallmgr.SIRegCustSrv;
import jp.co.sint.tools.SICheckDataConf;
import jp.co.sint.tools.SICheckValid;
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIDateTime;
import jp.co.sint.tools.SIErrorFactory;
import jp.co.sint.tools.SIFatalException;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIStringUtil;
import jp.co.sint.tools.SIURLMap;
import jp.co.sint.tools.SIUtil;
import jp.co.sint.tools.SIURLParameter;
import jp.co.sint.basic.SILogin;

import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.log4j.Category;

/**
 * @version $Id: SICustomerSrv.java,v 1.0 2003/10/24 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/24 15:00:05 Original
 */
public class SICustomerSrv extends SIServlet {
  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  // 7.3.0 ST2026 追加 ここから
  // 顧客データ更新区分（1:追加 / 2:更新)
  private static final String LC_ADD = "1";
  private static final String LC_UPD = "2";
  
  /**
   * <b>doUpdate</b> HTTP リクエストの処理
   * 
   * @param request リクエスト
   * @param response
   * @return なし
   * @throws ServletException
   * @throws IOException
   */
  public void doUpdate(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    HttpSession session = request.getSession(true);// セッションの取得
    SIDatabaseConnection databaseConnection = new SIDatabaseConnection();// DBへのコネクションの作成
    SIURLParameter urlParam = new SIURLParameter(request);
    String strLoginDateTime = null; // 前回ログイン日時 退避用
    try {
      Connection lConnection = databaseConnection.getConnection();
      
      String actionName = this.getActionName(urlParam);// 画面からのアクション
      String editMode = this.getEditMode(urlParam);// DBへの編集モード
      
      if (this.getServletPath(request).equals("/login")) {// ユーザーログイン
        UIUserLogin userLogin = new UIUserLogin();
        userLogin.init(request, urlParam);// 7.1.1 ST0236 修正
        if (actionName.equalsIgnoreCase(SIConfig.SIACTION_LOGIN)) {
          if (userLogin.validate(request, response, lConnection)) {
            userLogin.updLoginDateTime(lConnection);// DB更新(最終ログイン日時)
            session = request.getSession(true);
            // ポイント期限のチェックと更新
            SIUserInfo lUserLogin = (SIUserInfo) session.getAttribute(SIConfig.SISESSION_USERINFO_NAME);
            SIPointMan.clear(lConnection, lUserLogin.getCustCode());
            SIReserveCartManager.refresh(request, lConnection);
            session.removeAttribute(SIConfig.SISESSION_USER_LOGIN_NAME);
            
            // EDBTG005-00 kamata add start
            String param=(String)urlParam.getParam("addMyCatalog");
            if ("null".equals(param)) {
                param = "";
            }
            // お気に入りをマージする
            String spFlg = this.getParameter(urlParam,"spFlg");
            if ("1".equals(spFlg)) {
                this.favoriteMarge(request, response, databaseConnection.getConnection(), lUserLogin.getCustCode(), param);
            }
            // EDBTG005-00 kamata add end
            
            // ポイント再セット
            lUserLogin.reset(lConnection, userLogin.getEmailTxt());
            session.setAttribute(SIConfig.SISESSION_USERINFO_NAME, lUserLogin);
            this.writeCookie(response, userLogin.getEmailTxt(), userLogin.getPasswordTxt());
            if (SIUtil.isNotNull(param)){
              try {
                if(SIDBUtil.hasData(lConnection, "SELECT * FROM individualtbl WHERE individualcode="+SIDBUtil.SQL2Str(param))){
                  StringBuffer lSql = new StringBuffer();
                  lSql.append("INSERT INTO mycatalogtbl ");
                  lSql.append("SELECT ").append(lUserLogin.getCustCode());
                  lSql.append(",").append(SIDBUtil.SQL2Str(param));
                  lSql.append(",coalesce(max(disporder),0)+1 ");
                  lSql.append("FROM mycatalogtbl WHERE custcode=").append(SIDBUtil.SQL2Str(lUserLogin.getCustCode()));
                  SIDBUtil.execSQL(databaseConnection.getConnection(), lSql.toString());
                }
                try {databaseConnection.getConnection().commit();} catch (SQLException ee) {}
              } catch (Exception e) {
                try {databaseConnection.getConnection().rollback();} catch (SQLException ee) {}
                e.printStackTrace();
              }
            }
            if (SIUtil.isNull(request.getParameter("cookieFlg"))) this.removeCookie(response);
            if (SIUtil.isNotNull(userLogin.getNextUrlTxt())) {// 決済へ行く前に、カートの情報を設定
              if (userLogin.getNextUrlTxt().startsWith("/hair_cmdty") || userLogin.getNextUrlTxt().startsWith("/esthe_cmdty")
                  || userLogin.getNextUrlTxt().startsWith("/bed_cmdty") || userLogin.getNextUrlTxt().startsWith("/cosme_cmdty")
                  || userLogin.getNextUrlTxt().startsWith("/nail_cmdty") || userLogin.getNextUrlTxt().startsWith("/haircosme_cmdty")
                  || userLogin.getNextUrlTxt().startsWith("/book_cmdty") || userLogin.getNextUrlTxt().startsWith("/eyelash_cmdty") 
                  || userLogin.getNextUrlTxt().startsWith("/search_cmdty")) {//商品詳細の場合はそのまま
              }else if (userLogin.getNextUrlTxt().startsWith("/hair") || userLogin.getNextUrlTxt().startsWith("/esthe")
                || userLogin.getNextUrlTxt().startsWith("/bed") || userLogin.getNextUrlTxt().startsWith("/cosme")
                || userLogin.getNextUrlTxt().startsWith("/nail") || userLogin.getNextUrlTxt().startsWith("/haircosme")
                || userLogin.getNextUrlTxt().startsWith("/book") || userLogin.getNextUrlTxt().startsWith("/eyelash") 
                || userLogin.getNextUrlTxt().startsWith("/advancedsearch")) {
                String url = userLogin.getNextUrlTxt();//商品一覧の場合はgetパラメータで書き替え
                url = url.replaceAll("/actionNameTxt/", "?actionNameTxt=");
                url = url.replaceAll("/dispModeTxt/", "&dispModeTxt=");
                url = url.replaceAll("/cmdtyFlagTxt/", "&cmdtyFlagTxt=");
                url = url.replaceAll("/usedNewFlgTxt/", "&usedNewFlgTxt=");
                url = url.replaceAll("/srchWordTxt/", "&srchWordTxt=");
                url = url.replaceAll("/ctc/", "&ctc=");
                url = url.replaceAll("/cmc/", "&cmc=");
                url = url.replaceAll("/inc/", "&inc=");
                url = url.replaceAll("/maker/", "&maker=");
                url = url.replaceAll("/backURL/", "&backURL=");
                url = url.replaceAll("/cmdtySortSel/", "&cmdtySortSel=");
                url = url.replaceAll("/pageNumberTxt/", "&pageNumberTxt=");
                url = url.replaceAll("/pageSizeSel/", "&pageSizeSel=");
                
                userLogin.setNextUrlTxt(url);
              }
              if(userLogin.getNextUrlTxt().startsWith("http://") || userLogin.getNextUrlTxt().startsWith("https://")){
                redirectOutside(request, response, userLogin.getNextUrlTxt());
              }else{
                redirectHttps(request, response, userLogin.getNextUrlTxt());
              }
            } else {
              StringBuffer lUrlBuf = new StringBuffer(SIURLMap.getUrl("webshop.jsp.front.user.loginr"));
              lUrlBuf.append("?actionNameTxt=").append(SIConfig.SIACTION_BACK);
              redirectHttps(request, response, lUrlBuf.toString());
            }
          } else if (userLogin.isPreUser(lConnection)){
            // add by mikami
            UIUserEdit userEdit = new UIUserEdit();
            userEdit.init(request, urlParam);
            userEdit.setSsouserId(userLogin.getSsouserId());
            userEdit.getRegCust().setPreCustInfo(lConnection, userLogin.getSsouserId());
            session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
            
            StringBuffer lUrlBuf = new StringBuffer(SIURLMap.getUrl("webshop.servlet.front.customer"));
            lUrlBuf.append("?actionNameTxt=").append("policy");
            redirectHttps(request, response, lUrlBuf.toString());
          } else {
            session.setAttribute(SIConfig.SISESSION_USER_LOGIN_NAME, userLogin);
            forwardKey(request, response, "webshop.jsp.front.user.login");
          }
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_BACK)) {
          forwardKey(request, response, "webshop.jsp.front.user.login");
        } else {
          this.readCookie(request, userLogin);
          session.setAttribute(SIConfig.SISESSION_USER_LOGIN_NAME, userLogin);
          forwardKey(request, response, "webshop.jsp.front.user.login");
        }
      } else if (this.getServletPath(request).equals("/login2")) {// ユーザーログイン
        UIUserLogin userLogin = new UIUserLogin();
        userLogin.init(request, urlParam);
        if (actionName.equalsIgnoreCase(SIConfig.SIACTION_LOGIN)) {
          if (userLogin.validate(request, response, lConnection)) {
            userLogin.updLoginDateTime(lConnection);// DB更新(最終ログイン日時)
            session = request.getSession(true);
            // ポイント期限のチェックと更新
            SIUserInfo lUserLogin = (SIUserInfo) session.getAttribute(SIConfig.SISESSION_USERINFO_NAME);
            SIPointMan.clear(lConnection, lUserLogin.getCustCode());
            SIReserveCartManager.refresh(request, lConnection);
            session.removeAttribute(SIConfig.SISESSION_USER_LOGIN_NAME);
            // ポイント再セット
            lUserLogin.reset(lConnection, userLogin.getEmailTxt());
            session.setAttribute(SIConfig.SISESSION_USERINFO_NAME, lUserLogin);
            this.writeCookie(response, userLogin.getEmailTxt(), userLogin.getPasswordTxt());
            if (SIUtil.isNull(request.getParameter("cookieFlg"))) this.removeCookie(response);
            redirectHttps(request, response, "/digitalcatalog.html");
          } else {
            session.setAttribute(SIConfig.SISESSION_USER_LOGIN_NAME, userLogin);
            forwardKey(request, response, "webshop.jsp.front.user.login2");
          }
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_BACK)) {
          forwardKey(request, response, "webshop.jsp.front.user.login2");
        } else {
          this.readCookie(request, userLogin);
          session.setAttribute(SIConfig.SISESSION_USER_LOGIN_NAME, userLogin);
          forwardKey(request, response, "webshop.jsp.front.user.login2");
        }
      } else if (this.getServletPath(request).equals("/member_regist")) { // メンバー登録
        UIUserLogin userLogin = new UIUserLogin();
        userLogin.init(request, urlParam);
        session.setAttribute(SIConfig.SISESSION_USER_LOGIN_NAME, userLogin);
        forwardKey(request, response, "webshop.jsp.front.member_regist");
      } else if (this.getServletPath(request).equals("/logout")) { // ログアウト
        try {
          SIReserveCartManager.cancel(request, databaseConnection.getConnection());
          databaseConnection.getConnection().commit();
        } catch (Exception e) {
          log.debug(e);
          e.printStackTrace();
        }
        session.invalidate();
        // add by mikami 2013.05.14
        // クッキーの取得
        Cookie[] cookies = request.getCookies();
        for (int i = 0; cookies != null && i < cookies.length; i++) {
          // クッキーの名前で判別
          if (cookies[i].getName().equals(SIConfig.SICOOKIE_LOGIN)) {
            // レコード削除
            SIModifyRec lRec = new SIModifyRec("LOGINSESSIONTBL");
            lRec.add("delflg", 1);
            lRec.addCondition("sessionid", cookies[i].getValue());
            try {
              lRec.execute(lConnection);
              lConnection.commit();
            } catch (SIDuplicateKeyException e) {
              log.debug(e);
              e.printStackTrace();
            } catch (SIDBAccessException e) {
              log.debug(e);
              e.printStackTrace();
            }
            cookies[i].setMaxAge(0);
            cookies[i].setDomain("." + SIConfig.BG_HOST_NAME);
            cookies[i].setPath("/");
            ((HttpServletResponse)response).addCookie(cookies[i]);
            break;
          }
        }
        // add end by mikami 2013.05.14
        forwardKey(request, response, "webshop.jsp.front.user.logout");
      } else if (this.getServletPath(request).equals("/remainder")) {// リマインダ−
        if (SIUtil.isNull(actionName)) {
          UIRemainder remainder = new UIRemainder();
          remainder.init(request, urlParam);
          session.setAttribute(SIConfig.SISESSION_USER_REMAINDER_NAME, remainder);
          forwardKey(request, response, "webshop.jsp.front.remainder");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_CONFIRM)) {
          UIRemainder remainder = (UIRemainder) session.getAttribute(SIConfig.SISESSION_USER_REMAINDER_NAME);
          remainder.init1(request, urlParam);
          remainder.validate1(request, lConnection);
          session.setAttribute(SIConfig.SISESSION_USER_REMAINDER_NAME, remainder);
          forwardKey(request, response, "webshop.jsp.front.remainder");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_MAIL)) {
          UIRemainder remainder = (UIRemainder) session.getAttribute(SIConfig.SISESSION_USER_REMAINDER_NAME);
          remainder.init2(request, urlParam);
          if (remainder.validate2(request, lConnection)) {
            this.sendRemainderMail(request, lConnection, remainder);
          }
          session.setAttribute(SIConfig.SISESSION_USER_REMAINDER_NAME, remainder);
          forwardKey(request, response, "webshop.jsp.front.remainder");
        }
      } else if (this.getServletPath(request).equals("/help")) {// お買い物方法
        SIFrontBasic lBasic = new SIFrontBasic();
        lBasic.init(request, urlParam);
        session.setAttribute(SIConfig.SISESSION_HELP_NAME, lBasic);
        forwardKey(request, response, "webshop.jsp.front.help");
      } else if (this.getServletPath(request).equals("/privacy_policy")) {// 個人情報利用目的表示、同意確認画面
        SIFrontBasic lBasic = new SIFrontBasic();
        lBasic.init(request, urlParam);
        session.setAttribute(SIConfig.SISESSION_PRIVACY_POLICY_NAME, lBasic);
        forwardKey(request, response, "webshop.jsp.front.privacy.policy");
      } else if (this.getServletPath(request).equals("/customer_param")) {// 顧客情報の登録
        UIUserEdit userEdit = new UIUserEdit();
        if (SIUtil.isNull(actionName)) {
          if (!SIConfig.SIACTION_RESET.equalsIgnoreCase(actionName)) {
            userEdit.init(request, urlParam);
          }
          SIUserInfo userLogin = SIHTMLUtil.getUserInfo(request);
          if (userLogin.isNotLogin(request)) {
            String lUrl = "";
            String lCtc = "ctc=" + SIHTMLUtil.URLEncode(userEdit.getCtgryCodeTxt());
            if (SIUtil.isNull(userEdit.getShopCode())) {
              lUrl = SIURLMap.getUrl("webshop.servlet.front.user.login") + "?" + lCtc + "&nid=" + SIURLMap.getUrl("webshop.servlet.front.customer") + "?" + lCtc;
            } else {
              lUrl = SIURLMap.getUrl("webshop.servlet.front.user.login") + "?" + lCtc + "&nid=" + SIURLMap.getUrl("webshop.servlet.front.customer") + "?shc="
                  + userEdit.getShopCode() + "&" + lCtc;
            }
            redirectHttps(request, response, lUrl);
          } else {
            userEdit.setRegCust(userLogin.getCustCode());
            userEdit.reset(lConnection);
            userEdit.setEditModeTxt(SIConfig.SIEDIT_MODE_UPDATE);
            session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
            forwardKey(request, response, "webshop.jsp.front.customer.edit");
          }
        } else if ("con2".equalsIgnoreCase(actionName)) {// ログイン情報スルー
          // add by mikami
          userEdit = (UIUserEdit) session.getAttribute(SIConfig.SISESSION_USER_EDIT_NAME);
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          forwardKey(request, response, "webshop.jsp.front.customer.edit");
        } else if (SIConfig.SIACTION_CON.equalsIgnoreCase(actionName)) {// 個人情報入力画面へ
          userEdit.init(request, urlParam);
          userEdit.getRegCust().setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          if (userEdit.validate(request, lConnection)) {
            forwardKey(request, response, "webshop.jsp.front.customer.edit2");
          } else {
            forwardKey(request, response, "webshop.jsp.front.customer.edit");
          }
        } else if (SIConfig.SIACTION_BACK.equalsIgnoreCase(actionName)) {// アカウント情報入力画面へ戻る
          forwardKey(request, response, "webshop.jsp.front.customer.edit");
        } else if (SIConfig.SIACTION_RESET2.equalsIgnoreCase(actionName)) {// リセット2
          if (editMode.equalsIgnoreCase(SIConfig.SIEDIT_MODE_UPDATE)) {
            userEdit.init(request, urlParam);
            userEdit.getRegCust().setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
            userEdit.reset2(lConnection);
          } else {
            userEdit.initNew(request, urlParam);
          }
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          forwardKey(request, response, "webshop.jsp.front.customer.edit2");
        } else if (SIConfig.SIACTION_RESET.equalsIgnoreCase(actionName)) { // リセット
          if (editMode.equalsIgnoreCase(SIConfig.SIEDIT_MODE_UPDATE)) {
            userEdit.init(request, urlParam);
            userEdit.getRegCust().setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
            userEdit.reset1(lConnection);
          }
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          forwardKey(request, response, "webshop.jsp.front.customer.edit");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_ZIPDIC)) {// 郵便番号辞書ソフトから県名などを検索
          userEdit.init(request, urlParam);
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          forwardKey(request, response, "webshop.jsp.front.customer.edit2");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_NEW)) {
          userEdit.init(request, urlParam);
          userEdit.setEditModeTxt(SIConfig.SIEDIT_MODE_INSERT);
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          forwardKey(request, response, "webshop.jsp.front.customer.edit");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_POLICY)) {
          // add by mikami
          if(session.getAttribute(SIConfig.SISESSION_USER_EDIT_NAME) != null){
            userEdit = (UIUserEdit) session.getAttribute(SIConfig.SISESSION_USER_EDIT_NAME);
          }else{
            userEdit.init(request, urlParam);
          }
          // add end
          userEdit.setEditModeTxt(SIConfig.SIEDIT_MODE_INSERT);
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          forwardKey(request, response, "webshop.jsp.front.privacy.policy");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_REMODIFY)) {
          forwardKey(request, response, "webshop.jsp.front.customer.edit2");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_CONFIRM)) {// 確認画面へ
          userEdit.init(request, urlParam);
          userEdit.getRegCust().setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          if (userEdit.getRegCust().validate(request, lConnection)) {
            forwardKey(request, response, "webshop.jsp.front.customer.confirm");
          } else {
            forwardKey(request, response, "webshop.jsp.front.customer.edit2");
          }
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_NEXT)) {// 次の遷移先へ飛ぶ
          UIUserEdit userEditID = new UIUserEdit();
          userEditID = (UIUserEdit) session.getAttribute(SIConfig.SISESSION_USER_EDIT_NAME);
          if (SIUtil.isNotNull(userEditID.getNextUrlTxt())) {
            if (userEditID.getNextUrlTxt().startsWith("/hair_cmdty") || userEditID.getNextUrlTxt().startsWith("/esthe_cmdty")
                || userEditID.getNextUrlTxt().startsWith("/bed_cmdty") || userEditID.getNextUrlTxt().startsWith("/cosme_cmdty")
                || userEditID.getNextUrlTxt().startsWith("/nail_cmdty") || userEditID.getNextUrlTxt().startsWith("/haircosme_cmdty")
                || userEditID.getNextUrlTxt().startsWith("/book_cmdty") || userEditID.getNextUrlTxt().startsWith("/eyelash_cmdty") 
                || userEditID.getNextUrlTxt().startsWith("/search_cmdty")) {//商品詳細の場合はそのまま
            }else if (userEditID.getNextUrlTxt().startsWith("/hair") || userEditID.getNextUrlTxt().startsWith("/esthe")
              || userEditID.getNextUrlTxt().startsWith("/bed") || userEditID.getNextUrlTxt().startsWith("/cosme")
              || userEditID.getNextUrlTxt().startsWith("/nail") || userEditID.getNextUrlTxt().startsWith("/haircosme")
              || userEditID.getNextUrlTxt().startsWith("/book") || userEditID.getNextUrlTxt().startsWith("/eyelash") 
              || userEditID.getNextUrlTxt().startsWith("/advancedsearch")) {
              String url = userEditID.getNextUrlTxt();//商品一覧の場合はgetパラメータで書き替え
              url = url.replaceAll("/actionNameTxt/", "?actionNameTxt=");
              url = url.replaceAll("/dispModeTxt/", "&dispModeTxt=");
              url = url.replaceAll("/cmdtyFlagTxt/", "&cmdtyFlagTxt=");
              url = url.replaceAll("/usedNewFlgTxt/", "&usedNewFlgTxt=");
              url = url.replaceAll("/srchWordTxt/", "&srchWordTxt=");
              url = url.replaceAll("/ctc/", "&ctc=");
              url = url.replaceAll("/cmc/", "&cmc=");
              url = url.replaceAll("/inc/", "&inc=");
              url = url.replaceAll("/maker/", "&maker=");
              url = url.replaceAll("/backURL/", "&backURL=");
              url = url.replaceAll("/cmdtySortSel/", "&cmdtySortSel=");
              url = url.replaceAll("/pageNumberTxt/", "&pageNumberTxt=");
              url = url.replaceAll("/pageSizeSel/", "&pageSizeSel=");
              userEditID.setNextUrlTxt(url);
            }
            redirectHttps(request, response, userEditID.getNextUrlTxt());
          } else {
            redirectKey(request, response, "webshop.servlet.front.main");
          }
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_REGIST)) {
          userEdit = (UIUserEdit) session.getAttribute(SIConfig.SISESSION_USER_EDIT_NAME);
          UIRegCust regCust = userEdit.getRegCust();
          regCust.setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          try {
            if (editMode.equalsIgnoreCase(SIConfig.SIEDIT_MODE_UPDATE)) {// 更新
              SIRegCustSrv.custHobbyTableData(lConnection,regCust,SIConfig.SIACTION_REGIST);
              SIRegCustSrv.custMenuTableData(lConnection,regCust,SIConfig.SIACTION_REGIST);
              SIRegCustSrv.updateTableData(lConnection, regCust, true, request, null);
              request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.modify"));
              sendUserRegistMail(lConnection, regCust, LC_UPD);
            } else if (editMode.equalsIgnoreCase(SIConfig.SIEDIT_MODE_INSERT)) {// 新規
              if (SIDBUtil.hasData(lConnection, "SELECT email FROM custtbl WHERE email=" + SIDBUtil.SQL2Str(regCust.getEmail()))) {
                throw new SIDuplicateKeyException();
              }
              regCust.setCustCode(SIDBUtil.getFirstData(lConnection, SIDBUtil.getNextVal("CUSTTBL_CUSTCD_SEQ")));
              SIRegCustSrv.custHobbyTableData(lConnection,regCust,SIConfig.SIACTION_REGIST);
              SIRegCustSrv.custMenuTableData(lConnection,regCust,SIConfig.SIACTION_REGIST);
              SIRegCustSrv.insertTableData(lConnection, regCust, request, null);
              request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.insert"));
              sendUserRegistMail(lConnection, regCust, LC_ADD);
              //this.writeCookie(response, regCust.getEmail(), regCust.getPassword());
              // add mikami 2013.05.21
              if (!SIURLMap.isMobile(request)) {
                SILoginSession logSes = new SILoginSession();
                long now = System.currentTimeMillis();
                String sid = SILoginSession.getHash(logSes.getCustCode() + now, "MD5");
                logSes.setSessionId(sid);
                logSes.setCustCode(regCust.getCustCode());
                logSes.save(lConnection);
                this.writeLoginCookie(response,sid);
              }
              // add end mikami 2013.05.21
            }
            // 会員アドレス帳の登録
            updateCustAddressTableData(lConnection, regCust);
            SIUserInfo userLogin = new SIUserInfo();
            userLogin.setCustCode(regCust.getCustCode());
            // セッションから前回最終ログイン日付を退避
            SIUserInfo backUserInfo = (SIUserInfo) session.getAttribute(SIConfig.SISESSION_USERINFO_NAME);
            strLoginDateTime = new String();
            if (backUserInfo != null) {// 登録後初回ログイン時はセッション=null
              strLoginDateTime = backUserInfo.getLoginDateTime();
            }
            if (editMode.equalsIgnoreCase(SIConfig.SIEDIT_MODE_INSERT)) {
              strLoginDateTime = "";
            }
            userLogin.reset(lConnection);
            userLogin.setLoginDateTime(strLoginDateTime);// 退避した前回最終ログイン日付をセット
            session.setAttribute(SIConfig.SISESSION_USERINFO_NAME, userLogin);
            if (editMode.equalsIgnoreCase(SIConfig.SIEDIT_MODE_INSERT)&&(SIUtil.isNotNull(regCust.getDirectMailRequest())||SIUtil.isNotNull(regCust.getCatalogRequest()))) {
              UIRegCatalogCust lUser = new UIRegCatalogCust();
              lUser.setCustName(regCust.getCustName());
              lUser.setCustPronName(regCust.getCustPronName());
              lUser.setPostCode1(regCust.getPostCode1());
              lUser.setPostCode2(regCust.getPostCode2());
              lUser.setAddress1(regCust.getAddress1());
              lUser.setAddress2(regCust.getAddress2());
              lUser.setAddress3(regCust.getAddress3());
              lUser.setCompanyName(regCust.getCompanyName());
              lUser.setCorporationName(regCust.getCorporationName());
              lUser.setStoreTel(regCust.getStoreTel());
              lUser.setFax(regCust.getFax());
              lUser.setEmail(regCust.getEmail());
              lUser.setJob(regCust.getJob());
              lUser.setCatalogRequest(regCust.getCatalogRequest());
              if (SIUtil.isNotNull(regCust.getDirectMailRequest())) {
                sendDirectMail(lUser,true);
                recordPurchaseComment(lConnection,regCust.getCustCode(),"お役立ち情報DM請求メール送信済");
              }
              if (SIUtil.isNotNull(regCust.getCatalogRequest())) {
                sendCatalogMail(lUser,true);
                recordPurchaseComment(lConnection,regCust.getCustCode(),"カタログ請求メール送信済");
              }
            }
            try {
              lConnection.commit();
            } catch (SQLException ee) {}
            if (SIUtil.isNotNull(userEdit.getNextUrlTxt())) {
              if (userEdit.getNextUrlTxt().startsWith("/hair") || userEdit.getNextUrlTxt().startsWith("/esthe")
               || userEdit.getNextUrlTxt().startsWith("/bed") || userEdit.getNextUrlTxt().startsWith("/cosme")
               || userEdit.getNextUrlTxt().startsWith("/nail") || userEdit.getNextUrlTxt().startsWith("/haircosme")
               || userEdit.getNextUrlTxt().startsWith("/book") || userEdit.getNextUrlTxt().startsWith("/eyelash") 
               || userEdit.getNextUrlTxt().startsWith("/advancedsearch") || userEdit.getNextUrlTxt().startsWith("/search_cmdty")) {
                String url = userEdit.getNextUrlTxt();
                url = url.replaceAll("/cmc=", "?cmc=");
                url = url.replaceAll("/inc=", "&inc=");
                url = url.replaceAll("/actionNameTxt=", "?actionNameTxt=");
                url = url.replaceAll("/cmdtyFlagTxt=", "&cmdtyFlagTxt=");
                url = url.replaceAll("/dispModeTxt=", "&dispModeTxt=");
                url = url.replaceAll("/usedNewFlgTxt=", "&usedNewFlgTxt=");
                url = url.replaceAll("/srchWordTxt=", "&srchWordTxt=");
                url = url.replaceAll("/maker=", "&maker=");
                url = url.replaceAll("/ctc=", "&ctc=");
                url = url.replaceAll("/pageNumberTxt=", "&pageNumberTxt=");
                url = url.replaceAll("/cmdtySortSel=", "&cmdtySortSel=");
                url = url.replaceAll("/pageSizeSel=", "&pageSizeSel=");
                url = url.replaceAll("/backURL=", "&backURL=");
                
                userEdit.setNextUrlTxt(url);
              }
              redirectHttps(request, response, userEdit.getNextUrlTxt());
            } else {
              forwardKey(request, response, "webshop.jsp.front.customer.result");
            }
          } catch (SIDuplicateKeyException e) {
            try {
              lConnection.rollback();
            } catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.insert.duplicate"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.customer.edit");
          } catch (SIDBAccessException e) {
            try {
              lConnection.rollback();
            } catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.execute.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.customer.edit");
          }
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_DELUSER)) { // 顧客削除依頼
          userEdit.init(request, urlParam);
          userEdit.getRegCust().setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          // 削除依頼フラグ、削除依頼日付の設定（ＤＢ更新)と依頼メールの送信
          try {
            // 削除フラグの更新とメールの発信
            updDeleteRequest(lConnection, request, userEdit);
            // メッセージの作成
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("manager.message.success.delete.request"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            SIUserInfo userLogin = SIHTMLUtil.getUserInfo(request);
            userLogin.setDelFlg(Integer.parseInt(SIConfig.SIDEL_FLG_REQUEST));
            // クッキー削除
            //removeCookie(response);
            // ログアウト
            //SIReserveCartManager.cancel(request, databaseConnection.getConnection());
            //session.invalidate();
            // 画面遷移
            forwardKey(request, response, "webshop.jsp.front.mypage");
          } catch (SIDuplicateKeyException e) {
            try {
              lConnection.rollback();
            } catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.insert.duplicate"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.customer.edit");
          } catch (SIDBAccessException e) {
            try {
              lConnection.rollback();
            } catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.execute.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.customer.edit");
          }
        }
      } else if (this.getServletPath(request).equals("/usercustqa")) {// 顧客問い合わせ情報
        // 商品詳細から戻るぼたんで戻ってきたときもこの処理。
        UIUserCustqa userCustQA = new UIUserCustqa();
        userCustQA.init(request, urlParam);
        if (!actionName.equalsIgnoreCase(SIConfig.SIACTION_REFRESH)) {
          session.setAttribute(SIConfig.SISESSION_USER_CUSTQA_NAME, userCustQA);
        }
        SIUserInfo lUserInfo = SIHTMLUtil.getUserInfo(request);
        if (lUserInfo.isNotLogin(request)) {
          redirectHttps(request, response, SIURLMap.getUrl("webshop.servlet.front.user.login") + "?nid=" + SIURLMap.getUrl("webshop.servlet.front.user.custqa"));
        } else {
          forwardKey(request, response, "webshop.jsp.front.user.custqa");
        }
      } else if (this.getServletPath(request).equals("/custqadetail")) {// 顧客問い合わせ情報詳細
        if (actionName.equalsIgnoreCase(SIConfig.SIACTION_CONFIRM)) {// 詳細画面
          UIUserCustqaDetail userCustqaDetail = new UIUserCustqaDetail();
          userCustqaDetail.init(request, urlParam);// 7.1.1 ST0236 修正
          session.setAttribute(SIConfig.SISESSION_USER_CUSTQA_DETAIL_NAME, userCustqaDetail);
          forwardKey(request, response, "webshop.jsp.front.user.custqadetail");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_NEW)) {
          UIUserCustqaDetail userCustqaDetail = new UIUserCustqaDetail();
          userCustqaDetail.init(request, urlParam);// 7.1.1 ST0236 修正
          session.setAttribute(SIConfig.SISESSION_USER_CUSTQA_DETAIL_NAME, userCustqaDetail);
          forwardKey(request, response, "webshop.jsp.front.user.custqaedit");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_MODIFY)) {
          UIUserCustqaDetail userCustqaDetail = new UIUserCustqaDetail();
          userCustqaDetail.init(request, urlParam);// 7.1.1 ST0236 修正
          if (userCustqaDetail.validateCustCode(request, lConnection)) {// セキュリティのチェック
            userCustqaDetail.reset(lConnection);
            session.setAttribute(SIConfig.SISESSION_USER_CUSTQA_DETAIL_NAME, userCustqaDetail);
            forwardKey(request, response, "webshop.jsp.front.user.custqaedit");
          } else {
            session.removeAttribute(SIConfig.SISESSION_USER_CUSTQA_DETAIL_NAME);
            forwardKey(request, response, "webshop.jsp.front.tmout.info");
          }
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_REGIST)) {
          UIUserCustqaDetail userCustqaDetail = new UIUserCustqaDetail();
          userCustqaDetail.init(request, urlParam);// 7.1.1 ST0236 修正
          session.setAttribute(SIConfig.SISESSION_USER_CUSTQA_DETAIL_NAME, userCustqaDetail);
          if ((userCustqaDetail.validate(request, lConnection)) == false) {
            forwardKey(request, response, "webshop.jsp.front.user.custqaedit");
          } else {
            try {
              if (editMode.equalsIgnoreCase(SIConfig.SIEDIT_MODE_INSERT)) {// 新規
                insertDetailData(lConnection, userCustqaDetail, SIHTMLUtil.getUserInfo(request));
                request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.insert"));
                try {
                  databaseConnection.getConnection().commit();
                } catch (SQLException sqle) {}
              } else if (editMode.equalsIgnoreCase(SIConfig.SIEDIT_MODE_UPDATE)) {// 変更
                updateDetailData(lConnection, userCustqaDetail, SIHTMLUtil.getUserInfo(request));
                request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.modify"));
                try {
                  databaseConnection.getConnection().commit();
                } catch (SQLException sqle) {}
              } else {
                log.error("no know edit mode.editMode=" + editMode);
              }
              forwardKey(request, response, "webshop.jsp.front.user.custqadetail");
            } catch (SIDuplicateKeyException sqle) {
              SICustomErrors errors = new SICustomErrors();
              errors.addError(new SICustomError("database.delete.duplicate"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
              forwardKey(request, response, "webshop.jsp.front.user.custqaedit");
            } catch (SIDBAccessException sqle) {
              SICustomErrors errors = new SICustomErrors();
              errors.addError(new SICustomError("database.execute.error"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
              forwardKey(request, response, "webshop.jsp.front.user.custqaedit");
            }
          }
        } else if (SIConfig.SIACTION_DELETE.equalsIgnoreCase(SIConfig.SIACTION_DELETE)) { // 問い合わせの削除
          try {
            deleteCustQAData(lConnection, request);
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.delete"));
            forwardKey(request, response, "webshop.jsp.front.user.custqa");
          } catch (SIDuplicateKeyException e) {
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.delete.duplicate"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.user.custqa");
          } catch (SIDBAccessException e) {
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.execute.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.user.custqa");
          }
        } else {
          UIUserCustqaDetail userCustqaDetail = new UIUserCustqaDetail();
          userCustqaDetail.init(request, urlParam);// 7.1.1 ST0236 修正
          userCustqaDetail.setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          userCustqaDetail.reset(lConnection);
          session.setAttribute(SIConfig.SISESSION_USER_CUSTQA_DETAIL_NAME, userCustqaDetail);
          forwardKey(request, response, "webshop.jsp.front.user.custqadetail");
        }
      } else if (this.getServletPath(request).equals("/custdelivery")) {// 送信先リスト画面へ
        UIDeliveryList lDeliveryList = new UIDeliveryList();
        if (actionName.equalsIgnoreCase(SIConfig.SIACTION_DELIVERY)) {
          lDeliveryList.init(request, urlParam);
          session.setAttribute(SIConfig.SISESSION_DELIVERY_LIST_NAME, lDeliveryList);
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_BACK)) {// 配送履歴から戻るとき
        }
        forwardKey(request, response, "webshop.jsp.front.customer.delivery");
        // 7.2.0 ST0330 追加 ここから
        // パスワード編集画面
      } else if (this.getServletPath(request).equals("/custpassword")) {
        // 更新処理
        if (actionName.equalsIgnoreCase(SIConfig.SIACTION_REGIST)) {
          // パラメータの取得・セット
          UIRegCust regCust = new UIRegCust();
          regCust.init(request, urlParam);
          SIUserInfo lUserLogin = (SIUserInfo) session.getAttribute(SIConfig.SISESSION_USERINFO_NAME);
          regCust.setCustCode(lUserLogin.getCustCode());
          
          // 入力チェック
          if (regCust.validatePass(request, lConnection)) {
            try {
              // パスワード関連情報の更新
              SIRegCustSrv.updatePassData(lConnection, regCust);
              request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.update"));
              // セッションで持つ、ユーザ情報の更新
              UIUserEdit userEditID = (UIUserEdit) session.getAttribute(SIConfig.SISESSION_USER_EDIT_NAME);
              UIRegCust sesRegCust = userEditID.getRegCust();
              sesRegCust.setPWQuestion(regCust.getPWQuestion());
              sesRegCust.setPWAnswer(regCust.getPWAnswer()); // 7.4.0 ST2062 修正
              // コミット処理
              try {
                lConnection.commit();
              } catch (SQLException ee) {}
            } catch (SIDuplicateKeyException e) {
              try {
                lConnection.rollback();
              } catch (SQLException ee) {}
              e.printStackTrace();
              log.debug(e.toString());
              SICustomErrors errors = new SICustomErrors();
              errors.addError(new SICustomError("database.insert.duplicate"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            } catch (SIDBAccessException e) {
              try {
                lConnection.rollback();
              } catch (SQLException ee) {}
              e.printStackTrace();
              log.debug(e.toString());
              SICustomErrors errors = new SICustomErrors();
              errors.addError(new SICustomError("database.execute.error"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            }
          }
        }
        forwardKey(request, response, "webshop.jsp.front.customer.password");
        // 7.2.0 ST0330 追加 ここまで
      } else if (this.getServletPath(request).equals("/contract_maker")) {
        if (SIUtil.isNull(actionName)) {
          session.setAttribute(SIConfig.SISESSION_MAN_MAKER_CONTRACT_CODE, (String)urlParam.getParam("contractMaker"));
          forwardKey(request, response, "webshop.jsp.front.contract_peachpeau");
        } else if (SIConfig.SIACTION_REGIST.equals(actionName)) {
          SIUserInfo lUserLogin = (SIUserInfo) session.getAttribute(SIConfig.SISESSION_USERINFO_NAME);
          String makerCode = (String) session.getAttribute(SIConfig.SISESSION_MAN_MAKER_CONTRACT_CODE);
          SIMaker maker = new SIMaker();
          maker.reset(lConnection, makerCode);
          if ("2".equals(maker.getContractFlg())){
            contractMaker(lUserLogin,maker);
          }else if ("3".equals(maker.getContractFlg())){
            contractMakerRegist(lUserLogin,maker);
            try{
              SIInsertRec lRec = new SIInsertRec("custmakertbl");
              lRec.add("custcode",lUserLogin.getCustCode());
              lRec.add("makercode",makerCode);
              lRec.execute(lConnection);
              lUserLogin.reset(lConnection);
            }catch(Exception e){
              e.printStackTrace();
            }
            try {lConnection.commit();} catch (SQLException ee) {}// コミット処理
          }
          session.setAttribute(SIConfig.SISESSION_USERINFO_NAME, lUserLogin);
          forwardKey(request, response, "webshop.jsp.front.contract_peachpeau_result");
        }
      } else if (this.getServletPath(request).equals("/contract_cosmetics_regist")) {
        SIUserInfo lUserLogin = (SIUserInfo) session.getAttribute(SIConfig.SISESSION_USERINFO_NAME);
        if(lUserLogin.isLogin(request)&&"0".equals(lUserLogin.getHairCosmeFlg())) {
          contractHairCosme(request,lUserLogin,lConnection);
          try {lConnection.commit();} catch (SQLException ee) {}// コミット処理
          session.setAttribute(SIConfig.SISESSION_USERINFO_NAME, lUserLogin);
        }
        forwardKey(request, response, "webshop.jsp.front.contract.cosmetics");
      } else if (this.getServletPath(request).equals("/contract_cosmetics")) {
        SIUserInfo lUserLogin = (SIUserInfo) session.getAttribute(SIConfig.SISESSION_USERINFO_NAME);
        if(actionName.equalsIgnoreCase(SIConfig.SIACTION_REGIST)){
          if (lUserLogin.isLogin(request)&&"4".equals(lUserLogin.getHairCosmeFlg())){
            contractHairCosme2(lUserLogin,lConnection);
            try {lConnection.commit();} catch (SQLException ee) {}// コミット処理
            session.setAttribute(SIConfig.SISESSION_USERINFO_NAME, lUserLogin);
          }else if (lUserLogin.isLogin(request)&&"0".equals(lUserLogin.getHairCosmeFlg())){
            request.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
            SICustomErrors errors = new SICustomErrors();
            lUserLogin.setSalonUrl(request.getParameter("URL"));
            if (SICheckValid.checkValid(errors, "サロンホームページURL", lUserLogin.getSalonUrl(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE+SICheckDataConf.SICHECK_DATA_URL_TYPE)){
              contractHairCosme3(request,lUserLogin,lConnection);
              SIModifyRec lRec = new SIModifyRec("custtbl");
              lRec.addCondition("custcode",lUserLogin.getCustCode());
              lRec.add("salonUrl", lUserLogin.getSalonUrl());
              try {
                lRec.execute(lConnection);
                lConnection.commit();
              } catch (SIDBAccessException e1) {
                e1.printStackTrace();
              } catch (SIDuplicateKeyException e2) {
                e2.printStackTrace();
              } catch (SQLException e3) {
                e3.printStackTrace();
              }
            }else {
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            }
            session.setAttribute(SIConfig.SISESSION_USERINFO_NAME, lUserLogin);
          }
        }
        forwardKey(request, response, "webshop.jsp.front.contract.cosmetics");
      } else if (this.getServletPath(request).equals("/mypage")) { // マイページ
        if (SIUtil.isNull(actionName)) {
          SIUserInfo userLogin = SIHTMLUtil.getUserInfo(request);
          if (userLogin.isNotLogin(request)) {
            redirectHttps(request, response, SIURLMap.getUrl("webshop.servlet.front.user.login") + "?nid=" + SIURLMap.getUrl("webshop.servlet.front.mypage"));
          }else{
            forwardKey(request, response, "webshop.jsp.front.mypage");
          }
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_MAIL)) {
          session.removeAttribute(SIConfig.SISESSION_USER_EDIT_NAME);
          forwardKey(request, response, "webshop.jsp.front.mypage.mail.edit");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_MAIL2)) {
          UIUserEdit userEdit = new UIUserEdit();
          UIRegCust regCust = userEdit.getRegCust();
          regCust.setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          regCust.reset(lConnection);
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME,userEdit);
          forwardKey(request, response, "webshop.jsp.front.mypage.pass.edit");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_UPDATE)) {
          UIUserEdit userEdit = new UIUserEdit();
          UIRegCust regCust = userEdit.getRegCust();
          regCust.setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          regCust.reset(lConnection);
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME,userEdit);
          forwardKey(request, response, "webshop.jsp.front.mypage.cust.edit");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_CART)) {//マイカタログカートイン
          UIUserLogin userLogin = new UIUserLogin();
          userLogin.initCart(urlParam);
          userLogin.addCart(request, lConnection);
          forwardKey(request, response, "webshop.jsp.front.mypage");
        } else if (actionName.equalsIgnoreCase("crt2")) {//マイカタログカートイン（明細）
          UIUserLogin userLogin = new UIUserLogin();
          userLogin.initCart(urlParam);
          userLogin.addCart(request, lConnection);
          forwardKey(request, response, "webshop.jsp.front.mypage.mycatalog");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_DELETE)) {//マイカタログ削除
          String individualCode = (String)urlParam.getParam("individualCodeTxt");
          if (SIUtil.isNotNull(individualCode)) {
            individualCode = individualCode.substring(5);
            SIDeleteRec lRec = new SIDeleteRec("mycatalogtbl");
            lRec.addCondition("custCode",SIHTMLUtil.getUserInfo(request).getCustCode());
            lRec.addCondition("individualCode", individualCode);
            try{
              lRec.execute(lConnection);
              try {lConnection.commit();} catch (SQLException ee) {}
            } catch (Exception e) {
              try {lConnection.rollback();} catch (SQLException ee) {}
              e.printStackTrace();
            }
          }
          SIUserInfo lUserInfo = SIHTMLUtil.getUserInfo(request);
          lUserInfo.resetMyCatalog(databaseConnection.getConnection());
          session.setAttribute(SIConfig.SISESSION_USERINFO_NAME,lUserInfo);
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_REFRESH)) {//マイカタログソート順変更
          String sort = (String)urlParam.getParam("sort");
          if (SIUtil.isNotNull(sort)) {
            boolean isError = false;
            String[] individualCodeList = sort.split(",");
            for (int i=0;i<individualCodeList.length;i++) {
              SIModifyRec lRec = new SIModifyRec("mycatalogtbl");
              lRec.addCondition("custCode",SIHTMLUtil.getUserInfo(request).getCustCode());
              lRec.addCondition("individualCode", individualCodeList[i]);
              lRec.add("dispOrder", String.valueOf(i+1));
              try{
                lRec.execute(lConnection);
              } catch (Exception e) {
                e.printStackTrace();
                isError=true;
                break;
              }
            }
            if (isError) {
              try {lConnection.rollback();} catch (SQLException ee) {}
            } else {
              try {lConnection.commit();} catch (SQLException ee) {}
            }
          }
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_LIST)) {//マイカタログ一覧
          forwardKey(request, response, "webshop.jsp.front.mypage.mycatalog");
        }else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_LIST2)){//最近チェックした商品
          forwardKey(request, response, "webshop.jsp.front.checkhistory");
        }else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_LIST3)){//よく購入する用品
          forwardKey(request, response, "webshop.jsp.front.favoriteitem");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_ADD)) {
          // EDBTG005-00 kamata mod start
          SIUserInfo lUserInfo = SIHTMLUtil.getUserInfo(request);
          if (lUserInfo.isLogin(request)) {
              // ログイン時のみ登録
              String individualCode = (String)request.getParameter("cartIndividualCodeTxt");
              try {
                String custCode = SIHTMLUtil.getUserInfo(request).getCustCode();
                StringBuffer lSql = new StringBuffer();
                lSql.append("INSERT INTO mycatalogtbl ");
                lSql.append("SELECT ").append(custCode);
                lSql.append(",").append(SIDBUtil.SQL2Str(individualCode));
                lSql.append(",coalesce(max(disporder),0)+1 ");
                lSql.append("FROM mycatalogtbl WHERE custcode=").append(SIDBUtil.SQL2Str(custCode));
                
                SIDBUtil.execSQL(databaseConnection.getConnection(), lSql.toString());
                try {databaseConnection.getConnection().commit();} catch (SQLException ee) {}
              } catch (Exception e) {
                try {databaseConnection.getConnection().rollback();} catch (SQLException ee) {}
                e.printStackTrace();
              }
              lUserInfo.resetMyCatalog(databaseConnection.getConnection());
              session.setAttribute(SIConfig.SISESSION_USERINFO_NAME,lUserInfo);
          }
          // EDBTG005-00 kamata mod end
          forwardKey(request, response, "webshop.jsp.front.mypage.mycatalog");
        }
      } else if (this.getServletPath(request).equals("/mypage_mail")) { // マイページ（メール更新）
        if (SIConfig.SIACTION_CONFIRM.equals(actionName)) {
          UIUserEdit userEdit = new UIUserEdit();
          userEdit.init(request, urlParam);
          userEdit.getRegCust().setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME,userEdit);
          if (userEdit.validateEmail(request, lConnection)) {
            forwardKey(request, response, "webshop.jsp.front.mypage.mail.conf");
          }else{
            forwardKey(request, response, "webshop.jsp.front.mypage.mail.edit");
          }
        } else if (SIConfig.SIACTION_BACK.equals(actionName)) {
          forwardKey(request, response, "webshop.jsp.front.mypage.mail.edit");
        } else if (SIConfig.SIACTION_REGIST.equals(actionName)) {
          UIUserEdit userEdit = (UIUserEdit)session.getAttribute(SIConfig.SISESSION_USER_EDIT_NAME);
          UIRegCust regCust = userEdit.getRegCust();
          try {
            updateEmail(lConnection, regCust);
            SIUserInfo userLogin = SIHTMLUtil.getUserInfo(request);
            userLogin.setEmail(regCust.getEmail());
            sendUserRegistMail(lConnection, regCust, LC_UPD);
            writeMailCookie(request, response, regCust.getEmail());
            try {lConnection.commit();} catch (SQLException ee) {}
            forwardKey(request, response, "webshop.jsp.front.mypage.mail.res");
          } catch (SIDuplicateKeyException e) {
            try {
              lConnection.rollback();
            } catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.insert.duplicate"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.mypage.mail.edit");
          } catch (SIDBAccessException e) {
            try {
              lConnection.rollback();
            } catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.execute.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.mypage.mail.edit");
          }
        }
      } else if (this.getServletPath(request).equals("/mypage_pass")) { // マイページ（パスワード更新）
        if (SIConfig.SIACTION_CONFIRM.equals(actionName)) {
          UIUserEdit userEdit = new UIUserEdit();
          userEdit.init(request, urlParam);
          userEdit.getRegCust().setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME,userEdit);
          if (userEdit.getRegCust().validatePass(request, lConnection)) {
            forwardKey(request, response, "webshop.jsp.front.mypage.pass.conf");
          }else{
            forwardKey(request, response, "webshop.jsp.front.mypage.pass.edit");
          }
        } else if (SIConfig.SIACTION_BACK.equals(actionName)) {
          forwardKey(request, response, "webshop.jsp.front.mypage.pass.edit");
        } else if (SIConfig.SIACTION_REGIST.equals(actionName)) {
          UIUserEdit userEdit = (UIUserEdit)session.getAttribute(SIConfig.SISESSION_USER_EDIT_NAME);
          UIRegCust regCust = userEdit.getRegCust();
          try {
            SIRegCustSrv.updatePassData(lConnection, regCust);
            sendUserRegistMail(lConnection, regCust, LC_UPD);
            if (SIUtil.isNotNull(regCust.getPassword())) {
              writePassCookie(request, response, regCust.getPassword());
            }
            try {lConnection.commit();} catch (SQLException ee) {}
            forwardKey(request, response, "webshop.jsp.front.mypage.pass.res");
          } catch (SIDuplicateKeyException e) {
            try {
              lConnection.rollback();
            } catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.insert.duplicate"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.mypage.pass.edit");
          } catch (SIDBAccessException e) {
            try {
              lConnection.rollback();
            } catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.execute.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.mypage.pass.edit");
          }
        }
      } else if (this.getServletPath(request).equals("/mypage_cust")) { // マイページ（顧客情報更新）
        if (SIConfig.SIACTION_CONFIRM.equals(actionName)) {
          UIUserEdit userEdit = new UIUserEdit();
          userEdit.init(request, urlParam);
          userEdit.getRegCust().setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME,userEdit);
          if (userEdit.getRegCust().validate(request, lConnection)) {
            forwardKey(request, response, "webshop.jsp.front.mypage.cust.conf");
          }else{
            forwardKey(request, response, "webshop.jsp.front.mypage.cust.edit");
          }
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_ZIPDIC)) {// 郵便番号辞書ソフトから県名などを検索
          UIUserEdit userEdit = new UIUserEdit();
          userEdit.init(request, urlParam);
          userEdit.getRegCust().setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          session.setAttribute(SIConfig.SISESSION_USER_EDIT_NAME, userEdit);
          forwardKey(request, response, "webshop.jsp.front.mypage.cust.edit");
        } else if (SIConfig.SIACTION_BACK.equals(actionName)) {
          forwardKey(request, response, "webshop.jsp.front.mypage.cust.edit");
        } else if (actionName.equalsIgnoreCase(SIConfig.SIACTION_REGIST)) {
          UIUserEdit userEdit = (UIUserEdit) session.getAttribute(SIConfig.SISESSION_USER_EDIT_NAME);
          UIRegCust regCust = userEdit.getRegCust();
          regCust.setCustCode(SIHTMLUtil.getUserInfo(request).getCustCode());
          try {
            SIRegCustSrv.custHobbyTableData(lConnection,regCust,SIConfig.SIACTION_REGIST);
            SIRegCustSrv.custMenuTableData(lConnection,regCust,SIConfig.SIACTION_REGIST);
            SIRegCustSrv.updateTableData(lConnection, regCust, true, request, null);
            sendUserRegistMail(lConnection, regCust, LC_UPD);
            // 会員アドレス帳の登録
            updateCustAddressTableData(lConnection, regCust);
            SIUserInfo userLogin = new SIUserInfo();
            userLogin.setCustCode(regCust.getCustCode());
            // セッションから前回最終ログイン日付を退避
            SIUserInfo backUserInfo = (SIUserInfo) session.getAttribute(SIConfig.SISESSION_USERINFO_NAME);
            strLoginDateTime = new String();
            if (backUserInfo != null) {// 登録後初回ログイン時はセッション=null
              strLoginDateTime = backUserInfo.getLoginDateTime();
            }
            if (editMode.equalsIgnoreCase(SIConfig.SIEDIT_MODE_INSERT)) {
              strLoginDateTime = "";
            }
            userLogin.reset(lConnection);
            userLogin.setLoginDateTime(strLoginDateTime);// 退避した前回最終ログイン日付をセット
            session.setAttribute(SIConfig.SISESSION_USERINFO_NAME, userLogin);
            try {lConnection.commit();} catch (SQLException ee) {}
            forwardKey(request, response, "webshop.jsp.front.mypage.cust.res");
          } catch (SIDuplicateKeyException e) {
            try {lConnection.rollback();} catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.insert.duplicate"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.mypage.cust.edit");
          } catch (SIDBAccessException e) {
            try {lConnection.rollback();} catch (SQLException ee) {}
            e.printStackTrace();
            log.debug(e.toString());
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.execute.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.mypage.cust.edit");
          }
        }
      } else if (this.getServletPath(request).equals("/opinion")) {
        UIOpinion lOpinion = new UIOpinion();
        if (SIUtil.isNull(actionName)) {
          SIUserInfo userLogin=SIHTMLUtil.getUserInfo(request);
          if(userLogin.isLogin(request)) {
            lOpinion.setCustName(userLogin.getCustName());
            lOpinion.setEmail(userLogin.getEmail());
          }
          session.setAttribute(SIConfig.SISESSION_OPINION_EDIT_NAME, lOpinion);
          forwardKey(request, response, "webshop.jsp.front.opinion");
        }else if (SIConfig.SIACTION_BACK.equals(actionName)) {
          // EDBTG005-00 kamata add start
          UIOpinion opinionEditID = (UIOpinion) session.getAttribute(SIConfig.SISESSION_OPINION_EDIT_NAME);
          opinionEditID.setActionNameTxt(actionName);
          // EDBTG005-00 kamata add end
          forwardKey(request, response, "webshop.jsp.front.opinion");
        }else if (SIConfig.SIACTION_CONFIRM.equals(actionName)) {
          lOpinion.init(request, urlParam);
          if (!lOpinion.validate(request)) {
            lOpinion.setActionNameTxt("");
          }
          session.setAttribute(SIConfig.SISESSION_OPINION_EDIT_NAME, lOpinion);
          forwardKey(request, response, "webshop.jsp.front.opinion");
        }else if (SIConfig.SIACTION_REGIST.equals(actionName)) {
          lOpinion = (UIOpinion) session.getAttribute(SIConfig.SISESSION_OPINION_EDIT_NAME);
          lOpinion.setActionNameTxt(actionName);
          SIUserInfo lUserLogin = SIHTMLUtil.getUserInfo(request);
          if (lUserLogin.isNotLogin(request)) {
            lUserLogin.reset(lConnection,lOpinion.getEmail());
          }
          
          try{
            SIMail lMail = new SIMail();
            lMail.setSubject("【ご意見BOX】ビューティガレージ顧客お問い合わせ");
            lMail.setFrom("center@beautygarage.jp");
            lMail.addTo("branch@beautygarage.jp");
            StringBuffer body = new StringBuffer();
            body.append("表題：").append(lOpinion.getTitle()).append("\r\n\r\n");
            body.append("ご意見・ご要望など\r\n");
            body.append(lOpinion.getComment()).append("\r\n\r\n");
            body.append("顧客コード：").append(lUserLogin.getCustCode()).append("\r\n");
            body.append("お客様名：").append(lOpinion.getCustName()).append("\r\n");
            body.append("ご住所：").append(lUserLogin.getAddress()).append("\r\n");
            body.append("E-mail:").append(lOpinion.getEmail());
            lMail.setContent(body.toString());
            lMail.sendMail();
            
            lMail = new SIMail();
            lMail.setSubject("【ご意見BOX】ビューティガレージ顧客お問い合わせ");
            lMail.setFrom("center@beautygarage.jp");
            lMail.addTo(lOpinion.getEmail());
            body = new StringBuffer();
            body.append("この度はビューティガレージに\r\n");
            body.append("貴重なご意見をいただきまして\r\n");
            body.append("誠にありがとうございました。\r\n\r\n");
            body.append("お寄せいただきました\r\n");
            body.append("ご意見・ご要望は真摯に受け止め、\r\n");
            body.append("みなさまにより一層ご満足いただけるよう、\r\n");
            body.append("当社のサービス向上を目指すための活動に\r\n");
            body.append("反映させていただきます。\r\n\r\n");
            body.append("今後ともビューティガレージをよろしくお願いいたします。\r\n\r\n");
            body.append("--------------------------------------------------\r\n\r\n");
            body.append("お客様名：").append(lOpinion.getCustName()).append("\r\n");
            body.append("E-mail:").append(lOpinion.getEmail());
            body.append("表題：").append(lOpinion.getTitle()).append("\r\n\r\n");
            body.append("ご意見・ご要望など\r\n");
            body.append(lOpinion.getComment()).append("\r\n\r\n");
            body.append("--------------------------------------------------\r\n");
            body.append("株式会社ビューティガレージ\r\n");
            body.append("〒154-0015\r\n");
            body.append("東京都世田谷区桜新町1-34-25\r\n");
            body.append("TEL：0120-974-554\r\n");
            body.append("E-mail：center@beautygarage.jp\r\n");
            body.append("http://www.beautygarage.jp\r\n");
            body.append("--------------------------------------------------\r\n");
            lMail.setContent(body.toString());
            lMail.sendMail();
            String chargeName = "";
            if (SIUtil.isNotNull(lUserLogin.getCharge())){
              chargeName = SIDBUtil.getFirstData(lConnection, "SELECT chargeName FROM chargetbl WHERE chargecode="+SIDBUtil.SQL2Str(lUserLogin.getCharge()));
            }
            
            SIInsertRec lRec = new SIInsertRec("opiniontbl");
            lRec.add("custcode", lUserLogin.getCustCode());
            lRec.add("custname", lOpinion.getCustName());
            lRec.add("email", lOpinion.getEmail());
            lRec.add("address", lUserLogin.getAddress());
            lRec.add("job", lUserLogin.getJob());
            lRec.add("chargeName", chargeName);
            lRec.add("title", lOpinion.getTitle());
            lRec.add("comment", lOpinion.getComment());
            lRec.add("route","0");
            lRec.execute(databaseConnection.getConnection());
            
            if (SIUtil.isNotNull(lOpinion.getComment())&&lOpinion.getComment().length()>5 && SIUtil.isNotNull(lUserLogin.getCustCode())) {
              SIDateTime lDate = new SIDateTime();
              String time = lDate.getFullDateTime();
              String num = SIDBUtil.getFirstData(databaseConnection.getConnection(), "SELECT max(CommentNumber)+1 FROM purchaseCommentTbl WHERE custcode = "+SIDBUtil.SQL2Str(lUserLogin.getCustCode()));
              if (SIUtil.isNull(num)) num="1";
              SIInsertRec iRec = new SIInsertRec("purchaseCommentTbl");
              iRec.add("CustCode", lUserLogin.getCustCode());
              iRec.add("CommentNumber", num);
              iRec.add("InitDateTime", time);
              iRec.add("UpdateDateTime", time);
              iRec.add("UserName", "ご意見BOX");
              iRec.add("Comment", lOpinion.getComment());
              iRec.add("MemoStatus", "");
              iRec.execute(databaseConnection.getConnection());
            }
            databaseConnection.getConnection().commit();
          }catch(Exception e){}
          
          session.setAttribute(SIConfig.SISESSION_OPINION_EDIT_NAME, lOpinion);
          forwardKey(request, response, "webshop.jsp.front.opinion");
        }
      } else if (this.getServletPath(request).equals("/catalog_request")) {
        UIRegCatalogCust lUser = new UIRegCatalogCust();
        if (SIUtil.isNull(actionName)) {
          session.removeAttribute(SIConfig.SISESSION_CATALOG_REQUEST_NAME);
          forwardKey(request, response, "webshop.jsp.front.catalog.request1");
        }else if (SIConfig.SIACTION_ZIPDIC.equals(actionName)){
          lUser.init(request, urlParam);
          session.setAttribute(SIConfig.SISESSION_CATALOG_REQUEST_NAME,lUser);
          forwardKey(request, response, "webshop.jsp.front.catalog.request1");
        }else if (SIConfig.SIACTION_CONFIRM.equals(actionName)){
          lUser.init(request, urlParam);
          session.setAttribute(SIConfig.SISESSION_CATALOG_REQUEST_NAME,lUser);
          if (lUser.validate(request)){
            forwardKey(request, response, "webshop.jsp.front.catalog.request2");
          } else {
            forwardKey(request, response, "webshop.jsp.front.catalog.request1");
          }
        } else if (SIConfig.SIACTION_BACK.equals(actionName)) {
          forwardKey(request, response, "webshop.jsp.front.catalog.request1");
        }else if (SIConfig.SIACTION_REGIST.equals(actionName)){
          lUser = (UIRegCatalogCust)session.getAttribute(SIConfig.SISESSION_CATALOG_REQUEST_NAME);
          sendCatalogMail(lUser,false);
          forwardKey(request, response, "webshop.jsp.front.catalog.request3");
        }
      } else if (this.getServletPath(request).equals("/present_request")) {
        UIRegCatalogCust lUser = new UIRegCatalogCust();
        if (SIUtil.isNull(actionName)) {
          session.removeAttribute(SIConfig.SISESSION_PRESENT_REQUEST_NAME);
          forwardKey(request, response, "webshop.jsp.front.present.request1");
        }else if (SIConfig.SIACTION_ZIPDIC.equals(actionName)){
          lUser.init(request, urlParam);
          session.setAttribute(SIConfig.SISESSION_PRESENT_REQUEST_NAME,lUser);
          forwardKey(request, response, "webshop.jsp.front.present.request1");
        }else if (SIConfig.SIACTION_CONFIRM.equals(actionName)){
          lUser.init(request, urlParam);
          session.setAttribute(SIConfig.SISESSION_PRESENT_REQUEST_NAME,lUser);
          if (lUser.validate(request)){
            forwardKey(request, response, "webshop.jsp.front.present.request2");
          } else {
            forwardKey(request, response, "webshop.jsp.front.present.request1");
          }
        } else if (SIConfig.SIACTION_BACK.equals(actionName)) {
          forwardKey(request, response, "webshop.jsp.front.present.request1");
        }else if (SIConfig.SIACTION_REGIST.equals(actionName)){
          lUser = (UIRegCatalogCust)session.getAttribute(SIConfig.SISESSION_PRESENT_REQUEST_NAME);
          sendPresentMail(lUser);
          forwardKey(request, response, "webshop.jsp.front.present.request3");
        }
      } else {}
    } catch (SQLException e) {
      e.printStackTrace();
      throw new ServletException();
    } catch (NamingException e) {
      e.printStackTrace();
      throw new ServletException();
    } finally {
      databaseConnection.close();
    }
  }
  
  private void updateEmail(Connection lConnection, UIRegCust lCust) throws SIDBAccessException, SIDuplicateKeyException {
    SIModifyRec lRec = new SIModifyRec("custtbl");
    lRec.addCondition("custcode",lCust.getCustCode());
    lRec.add("email", lCust.getEmail());
    lRec.add("mailStatus", "0");
    lRec.execute(lConnection);
    
    lRec = new SIModifyRec("custaddresstbl");
    lRec.addCondition("CustCode", lCust.getCustCode());
    lRec.addCondition("AddressCode", "0");
    lRec.add("email", lCust.getEmail());
    lRec.execute(lConnection);
  }
  
  //EDBTG005-00 kamata add start
  /**
   * cookieの内容とDBの内容をマージしcookieに再登録します。
   * @param request
   * @param response
   * @param lConnection
   * @param custCode
   * @throws IOException
   */
  private void favoriteMarge(HttpServletRequest request, HttpServletResponse response, Connection lConnection, String custCode, String param) throws IOException {
    final String cookieName = "ws_favoriteBG";
    
    // cookieの情報とDBを比較
    StringBuffer lSql = new StringBuffer();
    lSql.append("SELECT individualcode FROM mycatalogtbl WHERE custcode=" + SIDBUtil.SQL2Str(custCode));
    Statement lStatement = null;
    ResultSet lResultSet = null;
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSql.toString());
      boolean chkFkg = false;
      List dbItems = new ArrayList();
      while (lResultSet.next()) {
        dbItems.add(lResultSet.getString("individualcode"));
      }
      
      // cookieからお気に入り情報を取得
      Cookie[] cookies = request.getCookies();
      Cookie cmdtyCookieOrg = null;
      if (cookies != null) {
        for (int i = 0; i < cookies.length; i++) {
          if (cookies[i].getName().equals(cookieName)){
            cmdtyCookieOrg = cookies[i];
            break;
          }
        }
      }
      if (cmdtyCookieOrg != null) {
        // cookieにお気に入りがあり、DBにない商品コードがある場合登録する
        String[] items = URLDecoder.decode(cmdtyCookieOrg.getValue(), "Shift_JIS").split(",");
        
        for (int i= 0; i < items.length; i++) {
          chkFkg = false;
          for (int j = 0;j < dbItems.size(); j++) {
            if (items[i].equals(dbItems.get(j))) {
              chkFkg = true;
              break;
            }
          }
          if (chkFkg) {
            continue;
          }
          // DBに登録
          if (!param.equals(items[i])) {
            // パラメータで渡って来た値は登録しない（以降の処理で登録するため）
            lSql = new StringBuffer();
            lSql.append("INSERT INTO mycatalogtbl ");
            lSql.append("SELECT ").append(custCode);
            lSql.append(",").append(SIDBUtil.SQL2Str(items[i]));
            lSql.append(",coalesce(max(disporder),0)+1 ");
            lSql.append("FROM mycatalogtbl WHERE custcode=").append(SIDBUtil.SQL2Str(custCode));
            SIDBUtil.execSQL(lConnection, lSql.toString());
          }
          dbItems.add(items[i]);
          
        }
        try {lConnection.commit();} catch (SQLException ee) {}
      }
      
      Collections.sort(dbItems);
      // cookieに登録
      String value = "";
      for (int i = 0; i < dbItems.size(); i++) {
        if (i != 0) {
          value += ",";
        }
        value += dbItems.get(i).toString();
      }
      value = URLEncoder.encode(value, "Shift_JIS");
      
      Cookie cmdtyCookie = new Cookie(cookieName, value);
      cmdtyCookie.setMaxAge(60 * 60 * 24 * 30);
      cmdtyCookie.setPath(SIHTMLUtil.getRootPath(request));
      response.addCookie(cmdtyCookie);
    } catch (SQLException sqle) {
      try {lConnection.rollback();} catch (SQLException ee) {}
      sqle.printStackTrace();
    } catch (Exception e) {
      try {lConnection.rollback();} catch (SQLException ee) {}
      e.printStackTrace();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
      log.debug("resetMyCatalog:lSql=" + lSql);
    }
  }
  //EDBTG005-00 kamata add end
  
  // 7.3.0 ST2023 修正ここから
  /**
   * <b>updateCustAddressTableData</b> 会員情報の変更に伴って、アドレス帳のレコード｛アドレス帳番号＝０｝を更新
   * 
   * @param lConnection DBへのコネクション
   * @param regCmdty 入力したデータ
   * @return なし
   * @throws SIDuplicateKeyException
   * @throws SIDBAccessException
   */
  public static void updateCustAddressTableData(Connection lConnection, UIRegCust lCust) throws SIDBAccessException, SIDuplicateKeyException {
    updateCustAddressTableData(lConnection, lCust, null);
  }
  
  /**
   * <b>updateCustAddressTableData</b> 会員情報の変更に伴って、アドレス帳のレコード｛アドレス帳番号＝０｝を更新
   * 
   * @param lConnection DBへのコネクション
   * @param regCmdty 入力したデータ
   * @return なし
   * @throws SIDuplicateKeyException
   * @throws SIDBAccessException
   */
  public static void updateCustAddressTableData(Connection lConnection, UIRegCust lCust, SILogin lLogin) throws SIDBAccessException, SIDuplicateKeyException {
    // 7.3.0 ST2023 修正ここまで
    SIDateTime lDateTime = new SIDateTime();
    String lNow = lDateTime.getFullDateTime();
    
    StringBuffer lSqlBuf = new StringBuffer("SELECT CustCode FROM CustAddressTbl ");
    lSqlBuf.append("WHERE AddressCode=0 AND CustCode=").append(SIDBUtil.SQL2Str(lCust.getCustCode()));
    if (SIDBUtil.hasData(lConnection, lSqlBuf.toString())) {
      // 既存のレコードの修正
      SIModifyRec lRec = new SIModifyRec("CustAddressTbl");
      lRec.addCondition("CustCode", lCust.getCustCode());// 顧客コード
      lRec.addCondition("AddressCode", "0");// アドレス帳番号
      lRec.add("CustCompanyFlg", lCust.getCustCompanyFlg());// 法人個人区分
      lRec.add("DeliveryName", "本人");// 配送先呼称
      lRec.add("DeliveryAddressee", lCust.getCustName());// 配送先正式名
      lRec.add("Email", lCust.getEmail());// EMAIL
      lRec.add("PostCode1", lCust.getPostCode1());// 郵便番号1
      lRec.add("PostCode2", lCust.getPostCode2());// 郵便番号2
      lRec.add("Address1", lCust.getAddress1());// 住所1
      lRec.add("Address2", lCust.getAddress2());// 住所2
      lRec.add("Address3", lCust.getAddress3());// 住所3
      lRec.add("CompanyName", lCust.getCompanyName());// サロン名
      lRec.add("CorporationName", lCust.getCorporationName());// 会社名
      lRec.add("Tel", lCust.getStoreTel());// 連絡先電話番号1
      lRec.add("Fax", lCust.getFax());// 連絡先FAX番号
      if (SIDBMultiConf.SIDB_CURRENT_INX == SIDBMultiConf.SIDB_POSTGRESQL_INX) {
        lRec.add("UpdateDateTime", lNow);
      } else {
        lRec.add("UpdateDateTime", new SIDateTimeType(lNow));
      }
      // 7.3.0 ST2023 追加ここから
      if (lLogin != null) {
        if (lLogin.getMallShopCode() != null) { // 更新ショップ（モール）コード
          lRec.add("UpdateMallShopCode", lLogin.getMallShopCode());
        } else {
          lRec.add("UpdateMallShopCode", "");
        }
        if (lLogin.getUserCode() != null) { // 更新ユーザーコード
          lRec.add("UpdateUserCode", lLogin.getUserCode());
        } else {
          lRec.add("UpdateUserCode", "");
        }
      }
      // 7.3.0 ST2023 追加ここまで
      lRec.execute(lConnection);
    } else {
      // 新規レコードの作成
      SIInsertRec lRec = new SIInsertRec("CustAddressTbl");
      lRec.add("CustCode", lCust.getCustCode());// 顧客コード
      lRec.add("AddressCode", "0");// アドレス帳番号
      lRec.add("CustCompanyFlg", lCust.getCustCompanyFlg());// 法人個人区分
      lRec.add("DeliveryName", "本人");// 配送先呼称
      lRec.add("DeliveryAddressee", lCust.getCustName());// 配送先正式名
      lRec.add("Email", lCust.getEmail());// EMAIL
      lRec.add("PostCode1", lCust.getPostCode1());// 郵便番号1
      lRec.add("PostCode2", lCust.getPostCode2());// 郵便番号2
      lRec.add("Address1", lCust.getAddress1());// 住所1
      lRec.add("Address2", lCust.getAddress2());// 住所2
      lRec.add("Address3", lCust.getAddress3());// 住所3
      lRec.add("CompanyName", lCust.getCompanyName());// サロン名
      lRec.add("CorporationName", lCust.getCorporationName());// 会社名
      lRec.add("Tel", lCust.getStoreTel());// 連絡先電話番号1
      lRec.add("Fax", lCust.getFax());// 連絡先FAX番号
      if (SIDBMultiConf.SIDB_CURRENT_INX == SIDBMultiConf.SIDB_POSTGRESQL_INX) {
        lRec.add("InitDateTime", lNow);
        lRec.add("UpdateDateTime", lNow);
      } else {
        lRec.add("InitDateTime", new SIDateTimeType(lNow));
        lRec.add("UpdateDateTime", new SIDateTimeType(lNow));
      }
      // 7.3.0 ST2023 追加ここから
      if (lLogin != null) {
        if (lLogin.getMallShopCode() != null) { // 更新ショップ（モール）コード
          lRec.add("UpdateMallShopCode", lLogin.getMallShopCode());
        } else {
          lRec.add("UpdateMallShopCode", "");
        }
        if (lLogin.getUserCode() != null) { // 更新ユーザーコード
          lRec.add("UpdateUserCode", lLogin.getUserCode());
        } else {
          lRec.add("UpdateUserCode", "");
        }
      }
      // 7.3.0 ST2023 追加ここまで
      lRec.execute(lConnection);
    }
  }
  
  /**
   * <b>insertDetailData</b> データベースにレコードを作成します。
   * 
   * @param lConnection DBへのコネクション
   * @param regCmdty 入力したデータ
   * @return なし
   * @throws SIDuplicateKeyException
   * @throws SIDBAccessException
   */
  public void insertDetailData(Connection lConnection, UIUserCustqaDetail userCustqaDetail, SIUserInfo userInfo) throws SIDuplicateKeyException, SIDBAccessException {
    // 現在の日付けの取得
    SIDateTime siDate = new SIDateTime();
    // SISpcType lSpcType=new SISpcType();
    
    userCustqaDetail.setCustQACode(SIDBUtil.getFirstData(lConnection, SIDBUtil.getNextVal("CUSTQATBL_CUSTQACD_SEQ"))); // 問い合わせID採番
    
    SIInsertRec lRec = new SIInsertRec("CustQATbl");
    lRec.add("CustQACode", userCustqaDetail.getCustQACode());// 問合せID
    lRec.add("MallShopCode", userCustqaDetail.getMallShopCode());// ショップコード
    lRec.add("CustCode", userInfo.getCustCode());// 顧客コード
    lRec.add("QTile", userCustqaDetail.getQTile());
    lRec.add("QDescription", userCustqaDetail.getQDescription());
    if (SIDBMultiConf.SIDB_CURRENT_INX == SIDBMultiConf.SIDB_POSTGRESQL_INX) {
      lRec.add("QInitDateTime", siDate.getFullDateTime());
    } else {
      lRec.add("QInitDateTime", new SIDateTimeType(siDate.getFullDateTime()));
    }
    // 商品マスタテーブルの更新
    lRec.execute(lConnection);
    try {
      lConnection.commit();
    } catch (SQLException sqle) {
      throw new SIDBAccessException("update data error.");
    }
  }
  
  /**
   * <b>updateDetailData</b> 顧客問合せの修正
   * 
   * @param lConnection DBへのコネクション
   * @param regCmdty 入力したデータ
   * @return なし
   * @throws SIDuplicateKeyException
   * @throws SIDBAccessException
   */
  public static void updateDetailData(Connection lConnection, UIUserCustqaDetail userCustqaDetail, SIUserInfo userInfo) throws SIDBAccessException, SIDuplicateKeyException {
    // 現在の日付けの取得
    SIDateTime siDate = new SIDateTime();
    // SISpcType lSpcType=new SISpcType();
    
    SIModifyRec lRec = new SIModifyRec("CustQATbl");
    lRec.addCondition("CustQACode", userCustqaDetail.getCustQACode());
    
    lRec.add("MallShopCode", userCustqaDetail.getMallShopCode());// ショップコード
    lRec.add("CustCode", userInfo.getCustCode());// 顧客コード
    lRec.add("QTile", userCustqaDetail.getQTile());
    lRec.add("QDescription", userCustqaDetail.getQDescription());
    if (SIDBMultiConf.SIDB_CURRENT_INX == SIDBMultiConf.SIDB_POSTGRESQL_INX) {
      lRec.add("QInitDateTime", siDate.getFullDateTime());
    } else {
      lRec.add("QInitDateTime", new SIDateTimeType(siDate.getFullDateTime()));
    }
    
    // データの更新
    lRec.execute(lConnection);
    
    try {
      lConnection.commit();
    } catch (SQLException sqle) {
      throw new SIDBAccessException("update data error.");
    }
  }
  
  /**
   * deleteCustQAData データベースにレコードを作成します。
   * 
   * @param
   * @return
   * @throws
   */
  public void deleteCustQAData(Connection connection, HttpServletRequest request) throws SIDuplicateKeyException, SIDBAccessException {
    SIUserInfo lUserInfo = SIHTMLUtil.getUserInfo(request);// ログイン情報の取得
    
    String custData[] = request.getParameterValues("custQACode");
    if (custData == null) {
      custData = new String[0];
    }
    SIDeleteRec lDeleteRec = new SIDeleteRec();
    if (custData != null) {
      for (int ii = 0; ii < custData.length; ii++) {
        if (SIUtil.isNotNull(custData[ii])) {
          lDeleteRec = new SIDeleteRec();
          lDeleteRec.setTableName("custqatbl");
          lDeleteRec.addCondition("custqacode", custData[ii]);
          lDeleteRec.addCondition("custcode", lUserInfo.getCustCode());
          log.debug("delete sql=" + lDeleteRec.getSQL());
          lDeleteRec.execute(connection);
        }
      }
    }
    try {
      connection.commit();
    } catch (SQLException sqle) {
      throw new SIDBAccessException("delete data error.");
    }
  }
  
  public boolean sendRemainderMail(HttpServletRequest request, Connection connection, UIRemainder remainder) {
    SIMail lMail = null;
    
    // パスワード取得
    SICust cust = new SICust();
    cust.reset(connection, remainder.getEmailTxt());
    
    // メール送信
    try {
      lMail = new SIMail();
      lMail.setFrom(SIConfig.SIMALL.getEmail());
      lMail.addTo(remainder.getEmailTxt());
      lMail.setSubject("【ビューティガレージ】お問い合わせありがとうございます。");
      StringBuffer lMailBuf = new StringBuffer();
      lMailBuf.append("お問い合わせいただきましたログイン時のパスワードにつきまして、\n");
      lMailBuf.append("以下の通りお知らせいたします。\n\n");
      lMailBuf.append("=================================================\n");
      lMailBuf.append("お客様のパスワード:" + cust.getPassword() + "\n");
      lMailBuf.append("=================================================\n\n");
      lMailBuf.append("ご質問、ご不明点等ございましたら何なりとお問い合わせ下さい。\n");
      lMailBuf.append("今後ともビューティガレージをよろしくお願いいたします。\n");
      lMailBuf.append("-------------------------------\n");
      lMailBuf.append("株式会社ビューティガレージ\n");
      lMailBuf.append("TEL：0120-974-554\n");
      lMailBuf.append("E-mail：center@beautygarage.jp\n");
      lMailBuf.append("http://www.beautygarage.jp\n");
      lMailBuf.append("-------------------------------");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + remainder.getEmailTxt() + "> 宛先に送信OK! メール種類=パスワード確認メール");
        return true;
      }else{
        log.debug("<" + remainder.getEmailTxt() + "> 宛先に送信NG! メール種類=パスワード確認メール");
        return false;
      }
    } catch (SIFatalException e) {
      return false;
    }
  }
  
  // 7.3.0 ST2025 追加 ここから
  /**
   * updDeleteRequest 顧客テーブルの対象のレコードの削除依頼フラグを2（削除依頼）に更新する さらに更新が成功していればメールを顧客とモール（ショップ）管理者に送信する
   * 
   * @param Connection DBコネクション
   * @param HttpServletRequest リクエスト
   * @param UIUserEdit UIUserEditクラス
   * @throws SIDuplicateKeyException
   * @throws SIDBAccessException
   */
  private void updDeleteRequest(Connection connection, HttpServletRequest request, UIUserEdit userEdit) throws SIDuplicateKeyException, SIDBAccessException {
    SIModifyRec lModRec = null;
    UIRegCust lRegCust = null;
    StringBuffer lMailBuf = null;
    SISendMail lSendMail = null;
    String lReserveChangeDateTime = null;
    
    try {
      lModRec = new SIModifyRec(SIConfig.SITABLE_CUST_NAME);
      lRegCust = userEdit.getRegCust();
      // キー項目のセット
      lModRec.addCondition("custcode", lRegCust.getCustCode());
      // 更新対象項目のセット
      lModRec.add("DelFlg", SIConfig.SIDEL_FLG_REQUEST); // 削除フラグ = 2(削除依頼)
      
      // 更新実行
      lModRec.execute(connection);
      // コミット
      connection.commit();
      
      // 削除依頼メールを作成・送信
      lMailBuf = new StringBuffer();
      lSendMail = new SISendMail();
      try {
        lSendMail.setMailTemp(connection, "0", SIConfig.SIMAIL_TEMPLATE_DELETE_REQUEST);
      } catch (SIFatalException e) {
        e.printStackTrace();
      }
      
      lReserveChangeDateTime = (new SIDateTime()).getFullDateTime();
      lMailBuf.append("\n依頼日時:" + lReserveChangeDateTime);
      
      // メールの本文の作成(削除依頼情報)
      lMailBuf.append("\n\nお客様情報 (削除依頼) ");
      lMailBuf.append("\n=============");
      lMailBuf.append("\nお客様氏名:").append(lRegCust.getCustName());
      lMailBuf.append("\nお客様のメールアドレス:").append(lRegCust.getEmail());
      lMailBuf.append("\n=============");
      
      // メールの本文の作成(メールテンプレートの内容2)
      lMailBuf.append("\n");
      lSendMail.appendContent1(lMailBuf.toString());
      
      // メールの本文の作成(メールテンプレートの内容3)
      lMailBuf = new StringBuffer();
      lSendMail.appendContent2(lMailBuf.toString());
      
      // 送信開始
      try {
        lSendMail.setToMailAddress(lRegCust.getEmail());
        lSendMail.execute();
      } catch (SIFatalException e) {
        e.printStackTrace();
      }
    } catch (SQLException sqle) {
      throw new SIDBAccessException("delete data error.");
    } finally {
      lModRec = null;
      lRegCust = null;
      lMailBuf = null;
      lSendMail = null;
      lReserveChangeDateTime = null;
    }
  }
  
  // 7.3.0 ST2025 追加 ここまで
  // 7.3.0 ST2026 追加 ここから
  /**
   * sendUserRegistMail メールを送信する 顧客データが登録・修正された場合に使用する(フロントサイド) バックサイドとは「削除がない」「第２引数が違う」の差異があります。
   * 
   * @param Connection DBコネクション
   * @param UIRegCust 送信先に関するデータを納めるUIRegCustクラス
   * @param String 更新区分（1:新規 / 2:修正)
   */
  private void sendUserRegistMail(Connection connection, UIRegCust regCust, String strMode) {
    StringBuffer lMailBuf = null; // メール本文用StringBuffer
    SISendMail lSendMail = null; // メール送信クラス
    //String lReserveChangeDateTime = null; // 現在日付
    String[] strMailAdr = new String[2]; // メール１通に対するメール送信先
    
    // メールを作成・送信
    lMailBuf = new StringBuffer();
    lSendMail = new SISendMail();
    
    try {
      lSendMail.setMailTemp(connection, "0", SIConfig.SIMAIL_TEMPLATE_USER_REGIST);
    } catch (SIFatalException e) {
      e.printStackTrace();
    }
    
    //lReserveChangeDateTime = (new SIDateTime()).getFullDateTime();
    
    // メールの本文の作成
    /*
    if (LC_ADD.equals(strMode) == true) {
      lMailBuf.append("\n登録日時:" + lReserveChangeDateTime);
      lMailBuf.append("\n\nお客様情報 (登録通知) ");
    } else if (LC_UPD.equals(strMode) == true) {
      lMailBuf.append("\n更新日時:" + lReserveChangeDateTime);
      lMailBuf.append("\n\nお客様情報 (更新通知) ");
    }
    lMailBuf.append("\n=============");
    lMailBuf.append("\nお客様氏名:").append(regCust.getCustName()).append(" 様");
    lMailBuf.append("\nお客様のメールアドレス:").append(regCust.getEmail());
    lMailBuf.append("\n=============");
    */
    lMailBuf.append("\n--------------------------------------------------------------");
    if (LC_ADD.equals(strMode) == true) {
      lMailBuf.append("\n■お客様情報（登録通知）");
    } else if (LC_UPD.equals(strMode) == true) {
      lMailBuf.append("\n■お客様情報（更新通知）");
    }
    lMailBuf.append("\n______________________________________________________________");
    lMailBuf.append("\n\nお客様氏名：").append(regCust.getCustName()).append(" 様");
    lMailBuf.append("\nログインID（メールアドレス）：").append(regCust.getEmail());
    lMailBuf.append("\n\n　★ログインはこちら　⇒　http://www.beautygarage.jp/");
    lMailBuf.append("\n\n　※パスワードをお忘れの場合は、下記よりご確認下さい。");
    lMailBuf.append("\n　　→ https://www.beautygarage.jp/ws/remainder");
    
    // メールの本文の作成(メールテンプレートの内容2)
    lMailBuf.append("\n");
    lSendMail.appendContent1(lMailBuf.toString());
    
    // メールの本文の作成(メールテンプレートの内容3)
    lMailBuf = new StringBuffer();
    lSendMail.appendContent2(lMailBuf.toString());
    
    // 送信開始
    try {
      // メールアドレスが修正されているときには修正前のアドレスも対象とする
      if (LC_UPD.equals(strMode) == true && regCust.getEmail().equals(regCust.getEMailOld()) == false) {
        strMailAdr[0] = regCust.getEMailOld();
        strMailAdr[1] = regCust.getEmail();
        lSendMail.setToMailAddress(strMailAdr);
        // その他
      } else {
        lSendMail.setToMailAddress(regCust.getEmail());
      }
      lSendMail.execute();
    } catch (SIFatalException e) {
      e.printStackTrace();
    }
    lMailBuf = null;
    lSendMail = null;
    //lReserveChangeDateTime = null;
    strMailAdr = null;
  }
  
  // 7.3.0 ST2026 追加 ここまで
  // 7.3.0 PI-NES0501 追加 ここから
  /**
   * writeCookie メールアドレス、パスワードをクッキーに保存します。 保存期限は30日間です。
   * 
   * @param HttpServletResponse レスポンス
   * @param String 保存するメールアドレス
   * @param String 保存するパスワード
   * @throws IOException
   */
  private void writeCookie(HttpServletResponse response, String lEmailTxt, String lPasswdTxt) throws IOException {
    String value1 = URLEncoder.encode(lEmailTxt, "Shift_JIS");
    String value2 = URLEncoder.encode(lPasswdTxt, "Shift_JIS");
    Cookie mailCookie = new Cookie("ws_mailaddressBG", value1);
    Cookie passCookie = new Cookie("ws_passwordBG", value2);
    mailCookie.setMaxAge(60 * 60 * 24 * 30);
    mailCookie.setDomain("." + SIConfig.BG_HOST_NAME);
    mailCookie.setPath("/");
    passCookie.setMaxAge(60 * 60 * 24 * 30);
    passCookie.setDomain("." + SIConfig.BG_HOST_NAME);
    passCookie.setPath("/");
    response.addCookie(mailCookie);
    response.addCookie(passCookie);
  }
  
  private void writeMailCookie(HttpServletRequest request, HttpServletResponse response, String lEmailTxt) throws IOException {
    Cookie[] cookies = request.getCookies();
    Cookie mailCookie = null;
    Cookie passCookie = null;
    if (cookies != null) {
      for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().equals("ws_mailaddressBG")) mailCookie = cookies[i];
        if (cookies[i].getName().equals("ws_passwordBG")) passCookie = cookies[i];
      }
    }
    if (passCookie == null || mailCookie == null) return;
    String value = URLEncoder.encode(lEmailTxt, "Shift_JIS");
    mailCookie = new Cookie("ws_mailaddressBG", value);
    mailCookie.setMaxAge(60 * 60 * 24 * 30);
    mailCookie.setDomain("." + SIConfig.BG_HOST_NAME);
    mailCookie.setPath("/");
    passCookie.setMaxAge(60 * 60 * 24 * 30);
    passCookie.setDomain("." + SIConfig.BG_HOST_NAME);
    passCookie.setPath("/");
    response.addCookie(mailCookie);
    response.addCookie(passCookie);
  }
  
  private void writePassCookie(HttpServletRequest request,HttpServletResponse response, String lPasswdTxt) throws IOException {
    Cookie[] cookies = request.getCookies();
    Cookie mailCookie = null;
    Cookie passCookie = null;
    if (cookies != null) {
      for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().equals("ws_mailaddressBG")) mailCookie = cookies[i];
        if (cookies[i].getName().equals("ws_passwordBG")) passCookie = cookies[i];
      }
    }
    if (passCookie == null || mailCookie == null) return;
    String value = URLEncoder.encode(lPasswdTxt, "Shift_JIS");
    passCookie = new Cookie("ws_passwordBG", value);
    mailCookie.setMaxAge(60 * 60 * 24 * 30);
    mailCookie.setDomain("." + SIConfig.BG_HOST_NAME);
    mailCookie.setPath("/");
    passCookie.setMaxAge(60 * 60 * 24 * 30);
    passCookie.setDomain("." + SIConfig.BG_HOST_NAME);
    passCookie.setPath("/");
    response.addCookie(mailCookie);
    response.addCookie(passCookie);
  }
  
  private void writeLoginCookie(HttpServletResponse response, String sessionid) throws IOException {
    // セッション共有
    Cookie loginCookie = new Cookie(SIConfig.SICOOKIE_LOGIN, sessionid);
    loginCookie.setDomain("." + SIConfig.BG_HOST_NAME);
    loginCookie.setPath("/");
    response.addCookie(loginCookie);
  }
  

  private void removeCookie(HttpServletResponse response) {
    Cookie mailCookie = new Cookie("ws_mailaddressBG", "");
    Cookie passCookie = new Cookie("ws_passwordBG", "");
    mailCookie.setMaxAge(0);
    mailCookie.setDomain("." + SIConfig.BG_HOST_NAME);
    mailCookie.setPath("/");
    passCookie.setMaxAge(0);
    passCookie.setDomain("." + SIConfig.BG_HOST_NAME);
    passCookie.setPath("/");
    response.addCookie(mailCookie);
    response.addCookie(passCookie);
  }
  
  public static boolean checkCookie(HttpServletRequest request) {
    Cookie[] cookies = request.getCookies();
    Cookie mailCookie = null;
    Cookie passCookie = null;
    if (cookies != null) {
      for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().equals("ws_mailaddressBG")) mailCookie = cookies[i];
        if (cookies[i].getName().equals("ws_passwordBG")) passCookie = cookies[i];
      }
    }
    if (mailCookie==null || passCookie==null) return false;
    else if (SIUtil.isNull(mailCookie.getValue()) || SIUtil.isNull(passCookie.getValue())) return false;
    else return true;
  }
  
  /**
   * readCookie メールアドレス、パスワードをクッキーから読み込みます。 読み込むクッキーはwriteCookieメソッドで保存したものです。
   * 
   * @param HttpServletRequest リクエスト
   * @param UIUserLogin ログイン情報のbean
   * @throws IOException
   */
  private void readCookie(HttpServletRequest request, UIUserLogin userLogin) throws IOException {
    Cookie[] cookies = request.getCookies();
    Cookie mailCookie = null;
    Cookie passCookie = null;
    if (cookies != null) {
      for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().equals("ws_mailaddressBG")) mailCookie = cookies[i];
        if (cookies[i].getName().equals("ws_passwordBG")) passCookie = cookies[i];
      }
    }
    if (mailCookie != null) userLogin.setEmailTxt(URLDecoder.decode(mailCookie.getValue(), "Shift_JIS"));
    if (passCookie != null) userLogin.setPasswordTxt(URLDecoder.decode(passCookie.getValue(), "Shift_JIS"));
  }
  // 7.3.0 PI-NES0501 追加 ここまで
  public static void contractMaker(SIUserInfo lUserLogin,SIMaker maker) {
    SIMail lMail = null;
    try {
      StringBuffer lMailBuf = new StringBuffer();
      
      lMail = new SIMail();
      lMail.setFrom(maker.getReferenceMail());
      lMail.addTo(maker.getReferenceMail());
      lMail.setSubject("【ビューティガレージ】"+maker.getMakerName()+"お取引申込");
      lMailBuf = new StringBuffer();
      lMailBuf.append("\n以下のお客様よりお取引申込を受け付けました。\n\n");
      lMailBuf.append("【取引申請ブランド】\n");
      lMailBuf.append(maker.getMakerName()).append("\n\n");
      lMailBuf.append("【お客様情報】\n");
      lMailBuf.append("■お客様コード：").append(lUserLogin.getCustCode()).append("\n");
      lMailBuf.append("■お客様氏名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCustName())).append("\n");
      lMailBuf.append("■お客様会ふりがな：").append(lUserLogin.getCustPronName()).append("\n");
      lMailBuf.append("■サロン様名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCompanyName())).append("\n");
      lMailBuf.append("■業態：").append(lUserLogin.getJob()).append("\n");
      lMailBuf.append("■郵便番号：").append(lUserLogin.getPostCode()).append("\n");
      lMailBuf.append("■ご住所：").append(SIStringUtil.toZenkakuKana(lUserLogin.getAddress())).append("\n");
      lMailBuf.append("■連絡先電話番号１：").append(lUserLogin.getStoreTel()).append("\n");
      lMailBuf.append("■連絡先電話番号２：").append(lUserLogin.getTel()).append("\n");
      lMailBuf.append("■FAX番号：").append(lUserLogin.getFax()).append("\n");
      lMailBuf.append("■お客様メールアドレス：").append(lUserLogin.getEmail()).append("\n");
      lMailBuf.append("■サロンホームページURL：").append(lUserLogin.getSalonUrl()).append("\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信OK! メール種類=契約申請メール");
      }else{
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信NG! メール種類=契約申請メール");
      }
    } catch (SIFatalException e) {
      e.printStackTrace();
    }
  }
  
  public static void contractMakerRegist(SIUserInfo lUserLogin,SIMaker maker) {
    SIMail lMail = null;
    try {
      StringBuffer lMailBuf = new StringBuffer();
      
      //お客様向けメール
      lMail = new SIMail();
      lMail.setFrom(maker.getReferenceMail());
      lMail.addTo(lUserLogin.getEmail());
      lMail.addBcc(maker.getReferenceMail());
      lMail.setSubject("【ビューティガレージ】"+maker.getMakerName()+"お取引申込完了のお知らせ");
      lMailBuf.append(lUserLogin.getCustName() + " 様\n\n");
      lMailBuf.append("お取引のお申込ありがとうございました。\n");
      lMailBuf.append("ご登録が完了いたしましたのでお知らせいたします。\n\n");
      lMailBuf.append("ご登録いただいておりますID（メールアドレス）・パスワードにて\n");
      lMailBuf.append("ログインされますと、「").append(maker.getMakerName()).append("」の商品がご購入いただけます。\n\n");
      lMailBuf.append("なにかご不明な点がございましたら、\n");
      lMailBuf.append("お気軽に下記連絡先までお問い合わせください。\n\n\n");
      lMailBuf.append("株式会社ビューティガレージ ").append(maker.getReferencePost()).append("\n");
      lMailBuf.append("〒154-0015\n");
      lMailBuf.append("東京都世田谷区桜新町1-34-25\n");
      lMailBuf.append("電話番号：").append(maker.getReferenceNumber()).append("\n");
      lMailBuf.append("E-mail：").append(maker.getReferenceMail()).append("\n\n\n");
      lMailBuf.append("＊＊＊＊＊＊＊＊＊＊＊＊＊＊\n");
      lMailBuf.append("このメールはビューティガレージより自動的に送信されています。\n");
      lMailBuf.append("このメールに心当たりのないお客様は、お手数ですが\n");
      lMailBuf.append("下記までメールにてご連絡ください。すみやかに情報を削除させていただきます。\n");
      lMailBuf.append("E-mail：").append(maker.getReferenceMail()).append("\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + lUserLogin.getEmail() + "> 宛先に送信OK! メール種類=契約完了メール");
      }else{
        log.debug("<" + lUserLogin.getEmail() + "> 宛先に送信NG! メール種類=契約完了メール");
      }
      
      //BG向けメール
      lMail = new SIMail();
      lMail.setFrom(maker.getReferenceMail());
      lMail.addTo(maker.getReferenceMail());
      lMail.setSubject("【ビューティガレージ】"+maker.getMakerName()+"お取引申込");
      lMailBuf = new StringBuffer();
      lMailBuf.append("\n以下のお客様よりお取引申込を受け付けました。\n\n");
      lMailBuf.append("【取引申請ブランド】\n");
      lMailBuf.append(maker.getMakerName()).append("\n\n");
      lMailBuf.append("【お客様情報】\n");
      lMailBuf.append("■お客様コード：").append(lUserLogin.getCustCode()).append("\n");
      lMailBuf.append("■お客様氏名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCustName())).append("\n");
      lMailBuf.append("■お客様氏名カナ：").append(lUserLogin.getCustPronName()).append("\n");
      lMailBuf.append("■サロン様名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCompanyName())).append("\n");
      lMailBuf.append("■業態：").append(lUserLogin.getJob()).append("\n");
      lMailBuf.append("■郵便番号：").append(lUserLogin.getPostCode()).append("\n");
      lMailBuf.append("■ご住所：").append(SIStringUtil.toZenkakuKana(lUserLogin.getAddress())).append("\n");
      lMailBuf.append("■連絡先電話番号１：").append(lUserLogin.getStoreTel()).append("\n");
      lMailBuf.append("■連絡先電話番号２：").append(lUserLogin.getTel()).append("\n");
      lMailBuf.append("■FAX番号：").append(lUserLogin.getFax()).append("\n");
      lMailBuf.append("■お客様メールアドレス：").append(lUserLogin.getEmail()).append("\n");
      lMailBuf.append("■サロンホームページURL：").append(lUserLogin.getSalonUrl()).append("\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信OK! メール種類=契約申請メール");
      }else{
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信NG! メール種類=契約申請メール");
      }
    } catch (SIFatalException e) {
      e.printStackTrace();
    }
  }
  
  public static void contractHairCosme(HttpServletRequest request,SIUserInfo lUserLogin,Connection lConnection) {
    SIMail lMail = null;
    try {
      StringBuffer lMailBuf = new StringBuffer();
      //BG向けメール
      lMailBuf = new StringBuffer();
      lMailBuf.append("\n以下のお客様より「化粧品購買/販売特約サロン」お取引申込を受け付けました。\n\n");
      lMailBuf.append("【お客様情報】\n");
      lMailBuf.append("■お客様コード：").append(lUserLogin.getCustCode()).append("\n");
      lMailBuf.append("■お客様氏名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCustName())).append("\n");
      lMailBuf.append("■お客様氏名カナ：").append(lUserLogin.getCustPronName()).append("\n");
      lMailBuf.append("■サロン様名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCompanyName())).append("\n");
      lMailBuf.append("■業態：").append(lUserLogin.getJob()).append("\n");
      lMailBuf.append("■郵便番号：").append(lUserLogin.getPostCode()).append("\n");
      lMailBuf.append("■ご住所：").append(SIStringUtil.toZenkakuKana(lUserLogin.getAddress())).append("\n");
      lMailBuf.append("■連絡先電話番号１：").append(lUserLogin.getStoreTel()).append("\n");
      lMailBuf.append("■連絡先電話番号２：").append(lUserLogin.getTel()).append("\n");
      lMailBuf.append("■FAX番号：").append(lUserLogin.getFax()).append("\n");
      lMailBuf.append("■お客様メールアドレス：").append(lUserLogin.getEmail()).append("\n");
      lMailBuf.append("■サロンホームページURL：").append(lUserLogin.getSalonUrl()).append("\n");
      
      File lOrderTempFile = null;
      boolean appendFlg = false;
      String path=request.getSession().getServletContext().getRealPath("work/");
      DiskFileUpload objDfu=new DiskFileUpload();
      objDfu.setSizeMax(3*1024*1024);
      objDfu.setSizeThreshold(1024);
      objDfu.setRepositoryPath(path);
      objDfu.setHeaderEncoding("Windows-31J");
      try {
        List objLst=objDfu.parseRequest(request);
        Iterator objItr=objLst.iterator();
        boolean existCheck = false;
        while(objItr.hasNext()){
          FileItem objFi=(FileItem)objItr.next();
          if(!objFi.isFormField()){
            String strNam=objFi.getName();
            if(strNam!=null && !strNam.equals("")){
              strNam=(new File(strNam)).getName();
              lOrderTempFile = new File(path + "/" + strNam);
              objFi.write(lOrderTempFile);
              existCheck = true;
            }
          }
        }
        if (!existCheck) throw new Exception();
      } catch (FileUploadBase.SizeLimitExceededException e) {
        e.printStackTrace();
        SICustomErrors errors = new SICustomErrors();
        errors.addError(new SICustomError("manager.message.freeword","ファイルサイズが大きいため送信できません。"));
        request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
        return;
      } catch (FileUploadException e) {
        e.printStackTrace();
        SICustomErrors errors = new SICustomErrors();
        errors.addError(new SICustomError("database.execute.error"));
        request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
        return;
      } catch (Exception e) {
        e.printStackTrace();
        SICustomErrors errors = new SICustomErrors();
        errors.addError(new SICustomError("manager.message.freeword","添付ファイルが無いため送信できません。"));
        request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
        return;
      }
      
      try{
        //SMTP
        Properties props = System.getProperties();
        props.put("mail.smtp.host",SIMailUtil.getMailHost());
        Session session = Session.getDefaultInstance(props,null);
        MimeMessage msg = new MimeMessage(session);
        log.debug("mail.smtp.host:"+SIMailUtil.getMailHost());
        
        //TO
        InternetAddress toList[] = InternetAddress.parse("contract@beautygarage.jp",false);
        msg.addRecipients(MimeMessage.RecipientType.TO,toList);
        
        //CC
        InternetAddress ccList[] = InternetAddress.parse("",false);
        msg.addRecipients(MimeMessage.RecipientType.CC,ccList);
        
        //BCC
        InternetAddress bccList[] = InternetAddress.parse("",false);
        msg.addRecipients(MimeMessage.RecipientType.BCC,bccList);
        
        //FROM
        InternetAddress fromAddress = new InternetAddress("contract@beautygarage.jp");
        msg.setFrom(fromAddress);
        msg.setSentDate(new Date());
        
        //SUBJECT
        msg.setSubject("【ビューティガレージ】化粧品購買/販売特約サロンお取引申込","ISO-2022-JP");
        
        //BODY
        MimeMultipart mm = new MimeMultipart();
        
        //MESSAGE
        MimeBodyPart mbText = new MimeBodyPart();
        mbText.setText(lMailBuf.toString(),"ISO-2022-JP");
        mm.addBodyPart(mbText);  
        
        //APPEND
        if (lOrderTempFile!=null) appendFlg =true;
        if (appendFlg){
          String file = lOrderTempFile.getPath();
          String suffix = file.substring(file.lastIndexOf(".") + 1);
          String fileName = "image_" + (new SIDateTime().getDateTimeString()) + "." + suffix;
          
          MimeBodyPart mbFile1 = new MimeBodyPart();
          FileDataSource fds1 = new FileDataSource(file);
          DataHandler dh1 = new DataHandler(fds1);
          mbFile1.setDataHandler(dh1);
          mbFile1.setFileName(MimeUtility.encodeWord(fileName));
          mm.addBodyPart(mbFile1);
        }
        msg.setContent(mm);
        
        //ENCODE
        msg.addHeader("Content-Transfer-Encoding", "7bit");
        
        //SEND
        Transport.send(msg);
        log.info("send mail ok!!");
        
      }catch(Exception e){
        e.printStackTrace();
        SICustomErrors errors = new SICustomErrors();
        errors.addError(new SICustomError("database.execute.error"));
        request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
        return;
      }
      
      // 臨時ファイルの削除
      if (appendFlg) lOrderTempFile.delete();
      
      log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信OK! メール種類=化粧品購買/販売特約サロン申請メール");
      SIModifyRec lRec = new SIModifyRec("custtbl");
      lRec.addCondition("CustCode",lUserLogin.getCustCode());
      lRec.addCondition("hairCosmeFlg", "0");
      lRec.add("hairCosmeFlg", "2");
      lRec.execute(lConnection);
      lUserLogin.setHairCosmeFlg("2");
      
      // お客様向けメール
      lMail = new SIMail();
      lMail.setFrom("contract@beautygarage.jp");
      lMail.addTo(lUserLogin.getEmail());
      lMail.setSubject("【ビューティガレージ】化粧品購買/販売特約サロンのお申込");
      lMailBuf = new StringBuffer();
      if (SIUtil.isNotNull(lUserLogin.getCorporationName())) lMailBuf.append(lUserLogin.getCorporationName() + "\n");
      if (SIUtil.isNotNull(lUserLogin.getCompanyName())) lMailBuf.append(lUserLogin.getCompanyName() + "\n");
      lMailBuf.append(lUserLogin.getCustName() + " 様\n\n");
      lMailBuf.append("この度は、ビューティガレージの「化粧品購買/販売特約サロン」\n");
      lMailBuf.append("お取引申込みをいただきまして誠にありがとうございました。\n\n");
      lMailBuf.append("現在、お客様のお申込内容について確認中ですので、\n");
      lMailBuf.append("いましばらくお待ち下さい。\n\n");
      lMailBuf.append("また確認の際、お客様がサロン経営者またはスクール、その従業員、\n");
      lMailBuf.append("美容学生（以下、サロン様等とする）であることを確認させていただきます。\n\n");
      lMailBuf.append("お客様がサロン様等であることが確認でき次第、\n");
      lMailBuf.append("当社からお取引開始のご連絡をメールにてさせていただきます。\n\n");
      lMailBuf.append("ご確認には多少お時間を頂戴する場合がございますので\n");
      lMailBuf.append("予めご了承ください。（土日祝日を除く2〜3営業日程度）\n\n");
      lMailBuf.append("ご不明な点等ございましたら、\n");
      lMailBuf.append("お気軽に下記連絡先までお問い合わせください。\n\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMailBuf.append("株式会社ビューティガレージ\n");
      lMailBuf.append("〒154-0015\n");
      lMailBuf.append("東京都世田谷区桜新町1-34-25\n");
      lMailBuf.append("エステティック化粧品審査専用ダイヤル：03-5752-3884\n");
      lMailBuf.append("頭髪用化粧品審査専用ダイヤル：03-5752-3885\n");
      lMailBuf.append("E-mail：contract@beautygarage.jp\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + lUserLogin.getEmail() + "> 宛先に送信OK! メール種類=化粧品購買/販売特約サロン申請メール");
      }else{
        log.debug("<" + lUserLogin.getEmail() + "> 宛先に送信NG! メール種類=化粧品購買/販売特約サロン申請メール");
      }
    } catch (Exception e) {
      e.printStackTrace();
      SICustomErrors errors = new SICustomErrors();
      errors.addError(new SICustomError("database.execute.error"));
      request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
      return;
    }
    return;
  }
  
  public static void contractHairCosme2(SIUserInfo lUserLogin,Connection lConnection) {
    SIMail lMail = null;
    try {
      StringBuffer lMailBuf = new StringBuffer();
      //お客様向けメール
      lMail = new SIMail();
      lMail.setFrom("contract@beautygarage.jp");
      lMail.addTo(lUserLogin.getEmail());
      //lMail.addBcc("contract@beautygarage.jp");
      lMail.setSubject("【ビューティガレージ】化粧品購買/販売特約サロンのお申込");
      if (SIUtil.isNotNull(lUserLogin.getCorporationName())) lMailBuf.append(lUserLogin.getCorporationName() + "\n");
      if (SIUtil.isNotNull(lUserLogin.getCompanyName())) lMailBuf.append(lUserLogin.getCompanyName() + "\n");
      lMailBuf.append(lUserLogin.getCustName() + " 様\n\n");
      lMailBuf.append("いつもお世話になっております。株式会社ビューティガレージです。\n");
      lMailBuf.append("この度は、「化粧品購買/販売特約サロン」お取引申込みをいただきまして誠にありがとうございました。\n\n");
      lMailBuf.append("化粧品および頭髪用化粧品の、お申込みについて承認致しました。\n");
      lMailBuf.append("弊社オンラインショップよりログイン後、ご購入のお手続きが可能です。\n");
      lMailBuf.append("↓↓↓ \n");
      lMailBuf.append("http://www.beautygarage.jp/ws/main\n\n");
      lMailBuf.append("尚、同意頂いた規約内容につきましてはこちらからご確認頂けます。\n");
      lMailBuf.append("http://www.beautygarage.jp/agreement/cosmetics.php\n\n");
      lMailBuf.append("今後もご愛顧を賜りますようお願い申し上げます。\n");
      lMailBuf.append("何卒、よろしくお願い申し上げます。\n\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMailBuf.append("株式会社ビューティガレージ\n");
      lMailBuf.append("〒154-0015\n");
      lMailBuf.append("東京都世田谷区桜新町1-34-25\n");
      lMailBuf.append("エステティック化粧品審査専用ダイヤル：03-5752-3884\n");
      lMailBuf.append("頭髪用化粧品審査専用ダイヤル：03-5752-3885\n");
      lMailBuf.append("E-mail：contract@beautygarage.jp\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + lUserLogin.getEmail() + "> 宛先に送信OK! メール種類=化粧品購買/販売特約サロン同意メール");
      }else{
        log.debug("<" + lUserLogin.getEmail() + "> 宛先に送信NG! メール種類=化粧品購買/販売特約サロン同意メール");
      }
      //BG向けメール
      lMail = new SIMail();
      lMail.setFrom("contract@beautygarage.jp");
      lMail.addTo("contract@beautygarage.jp");
      lMail.setSubject("【ビューティガレージ】化粧品購買/販売特約サロンお取引同意");
      lMailBuf = new StringBuffer();
      lMailBuf.append("\n以下のお客様より「化粧品購買/販売特約サロン」のお取引同意を受け付けました。\n\n");
      lMailBuf.append("【お客様情報】\n");
      lMailBuf.append("■お客様コード：").append(lUserLogin.getCustCode()).append("\n");
      lMailBuf.append("■お客様氏名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCustName())).append("\n");
      lMailBuf.append("■お客様氏名カナ：").append(lUserLogin.getCustPronName()).append("\n");
      lMailBuf.append("■サロン様名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCompanyName())).append("\n");
      lMailBuf.append("■業態：").append(lUserLogin.getJob()).append("\n");
      lMailBuf.append("■郵便番号：").append(lUserLogin.getPostCode()).append("\n");
      lMailBuf.append("■ご住所：").append(SIStringUtil.toZenkakuKana(lUserLogin.getAddress())).append("\n");
      lMailBuf.append("■連絡先電話番号１：").append(lUserLogin.getStoreTel()).append("\n");
      lMailBuf.append("■連絡先電話番号２：").append(lUserLogin.getTel()).append("\n");
      lMailBuf.append("■FAX番号：").append(lUserLogin.getFax()).append("\n");
      lMailBuf.append("■お客様メールアドレス：").append(lUserLogin.getEmail()).append("\n");
      lMailBuf.append("■サロンホームページURL：").append(lUserLogin.getSalonUrl()).append("\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信OK! メール種類=化粧品購買/販売特約サロン同意メール");
        SIModifyRec lRec = new SIModifyRec("custtbl");
        lRec.addCondition("CustCode",lUserLogin.getCustCode());
        lRec.addCondition("hairCosmeFlg", "4");
        lRec.add("hairCosmeFlg", "1");
        lRec.execute(lConnection);
        lUserLogin.setHairCosmeFlg("1");
        
        SIModifyRec mRec = new SIModifyRec("custtbl");
        mRec.addCondition("CustCode", lUserLogin.getCustCode());
        mRec.addCondition("ContractDateTime","");
        mRec.addCondition("hairCosmeFlg", "1");
        mRec.add("ContractDateTime", new SISpcType("TO_CHAR(now(),'YYYY/MM/DD HH24:MI:SS')::timestamp(0)"));
        mRec.execute(lConnection);
      }else{
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信NG! メール種類=化粧品購買/販売特約サロン同意メール");
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  
  public static void contractHairCosme3(HttpServletRequest request,SIUserInfo lUserLogin,Connection lConnection) {
    SIMail lMail = null;
    try {
      StringBuffer lMailBuf = new StringBuffer();
      //BG向けメール
      lMail = new SIMail();
      lMail.setFrom("contract@beautygarage.jp");
      lMail.addTo("contract@beautygarage.jp");
      lMail.addBcc("contract@beautygarage.jp");
      lMail.setSubject("【ビューティガレージ】化粧品購買/販売特約サロンお取引申込");
      lMailBuf = new StringBuffer();
      lMailBuf.append("\n以下のお客様より「化粧品購買/販売特約サロン」お取引申込を受け付けました。\n\n");
      lMailBuf.append("【お客様情報】\n");
      lMailBuf.append("■お客様コード：").append(lUserLogin.getCustCode()).append("\n");
      lMailBuf.append("■お客様氏名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCustName())).append("\n");
      lMailBuf.append("■お客様氏名カナ：").append(lUserLogin.getCustPronName()).append("\n");
      lMailBuf.append("■サロン様名：").append(SIStringUtil.toZenkakuKana(lUserLogin.getCompanyName())).append("\n");
      lMailBuf.append("■業態：").append(lUserLogin.getJob()).append("\n");
      lMailBuf.append("■郵便番号：").append(lUserLogin.getPostCode()).append("\n");
      lMailBuf.append("■ご住所：").append(SIStringUtil.toZenkakuKana(lUserLogin.getAddress())).append("\n");
      lMailBuf.append("■連絡先電話番号１：").append(lUserLogin.getStoreTel()).append("\n");
      lMailBuf.append("■連絡先電話番号２：").append(lUserLogin.getTel()).append("\n");
      lMailBuf.append("■FAX番号：").append(lUserLogin.getFax()).append("\n");
      lMailBuf.append("■お客様メールアドレス：").append(lUserLogin.getEmail()).append("\n");
      lMailBuf.append("■サロンホームページURL：").append(lUserLogin.getSalonUrl()).append("\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信OK! メール種類=化粧品購買/販売特約サロン申請メール");
      } else {
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信NG! メール種類=化粧品購買/販売特約サロン申請メール");
      }
      SIModifyRec lRec = new SIModifyRec("custtbl");
      lRec.addCondition("CustCode",lUserLogin.getCustCode());
      lRec.addCondition("hairCosmeFlg", "0");
      lRec.add("hairCosmeFlg", "2");
      lRec.execute(lConnection);
      lUserLogin.setHairCosmeFlg("2");
      
      // お客様向けメール
      lMail = new SIMail();
      lMail.setFrom("contract@beautygarage.jp");
      lMail.addTo(lUserLogin.getEmail());
      lMail.setSubject("【ビューティガレージ】化粧品購買/販売特約サロンのお申込");
      lMailBuf = new StringBuffer();
      if (SIUtil.isNotNull(lUserLogin.getCorporationName())) lMailBuf.append(lUserLogin.getCorporationName() + "\n");
      if (SIUtil.isNotNull(lUserLogin.getCompanyName())) lMailBuf.append(lUserLogin.getCompanyName() + "\n");
      lMailBuf.append(lUserLogin.getCustName() + " 様\n\n");
      lMailBuf.append("この度は、ビューティガレージの「化粧品購買/販売特約サロン」\n");
      lMailBuf.append("お取引申込みをいただきまして誠にありがとうございました。\n\n");
      lMailBuf.append("現在、お客様のお申込内容について確認中ですので、\n");
      lMailBuf.append("いましばらくお待ち下さい。\n\n");
      lMailBuf.append("また確認の際、お客様がサロン経営者またはスクール、その従業員、\n");
      lMailBuf.append("美容学生（以下、サロン様等とする）であることを確認させていただきます。\n\n");
      lMailBuf.append("お客様がサロン様等であることが確認でき次第、\n");
      lMailBuf.append("当社からお取引開始のご連絡をメールにてさせていただきます。\n\n");
      lMailBuf.append("ご確認には多少お時間を頂戴する場合がございますので\n");
      lMailBuf.append("予めご了承ください。（土日祝日を除く2〜3営業日程度）\n\n");
      lMailBuf.append("ご不明な点等ございましたら、\n");
      lMailBuf.append("お気軽に下記連絡先までお問い合わせください。\n\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMailBuf.append("株式会社ビューティガレージ\n");
      lMailBuf.append("〒154-0015\n");
      lMailBuf.append("東京都世田谷区桜新町1-34-25\n");
      lMailBuf.append("エステティック化粧品審査専用ダイヤル：03-5752-3884\n");
      lMailBuf.append("頭髪用化粧品審査専用ダイヤル：03-5752-3885\n");
      lMailBuf.append("E-mail：contract@beautygarage.jp\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + lUserLogin.getEmail() + "> 宛先に送信OK! メール種類=化粧品購買/販売特約サロン申請メール");
      }else{
        log.debug("<" + lUserLogin.getEmail() + "> 宛先に送信NG! メール種類=化粧品購買/販売特約サロン申請メール");
      }
    } catch (Exception e) {
      e.printStackTrace();
      SICustomErrors errors = new SICustomErrors();
      errors.addError(new SICustomError("database.execute.error"));
      request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
      return;
    }
    return;
  }
  
  public static void sendCatalogMail(UIRegCatalogCust lUser, boolean newFlg) {
    SIMail lMail = null;
    try {
      StringBuffer lMailBuf = new StringBuffer();
      //お客様向けメール
      lMail = new SIMail();
      lMail.setFrom("center@beautygarage.jp");
      lMail.addTo(lUser.getEmail());
      lMail.addBcc("center@beautygarage.jp");
      lMail.setSubject("【ビューティガレージ】無料カタログ請求お申込");
      lMailBuf.append("この度はビューティガレージに\n");
      lMailBuf.append("お問合せいただきありがとうございます。\n");
      lMailBuf.append("以下の内容でカタログ無料プレゼントのお申し込みを受け付けました。\n");
      lMailBuf.append("カタログのお届けは、お申し込み受付後、 \n");
      lMailBuf.append("約1週間程度を頂いておりますので\n");
      lMailBuf.append("到着までしばらくお待ちください。\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMailBuf.append("営業形態：").append(lUser.getJob()).append("\n");
      lMailBuf.append("お名前（漢字）：").append(lUser.getCustName()).append("\n");
      lMailBuf.append("お名前（フリガナ）：").append(lUser.getCustPronName()).append("\n");
      lMailBuf.append("郵便番号：").append(lUser.getPostCode()).append("\n");
      lMailBuf.append("都道府県：").append(lUser.getAddress1()).append("\n");
      lMailBuf.append("ご住所（市区町村・番地）：").append(lUser.getAddress2()).append("\n");
      lMailBuf.append("ご住所（マンション名等）：").append(lUser.getAddress3()).append("\n");
      lMailBuf.append("サロン名：").append(lUser.getCompanyName()).append("\n");
      lMailBuf.append("会社名：").append(lUser.getCorporationName()).append("\n");
      lMailBuf.append("TEL：").append(lUser.getStoreTel()).append("\n");
      lMailBuf.append("FAX：").append(lUser.getFax()).append("\n");
      lMailBuf.append("E-mail：").append(lUser.getEmail()).append("\n");
      if ("1".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望カタログ：BG STYLE (for ヘアサロン)\n");
      }else if ("2".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望カタログ：BG STYLE (for エステ・ネイル・アイラッシュ)\n");
      }else if ("3".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望カタログ：BG STYLE (for ヘアサロン)、BG STYLE (for エステ・ネイル・アイラッシュ)\n");
      }
      lMailBuf.append("--------------------------------------------------\n");
      lMailBuf.append("株式会社ビューティガレージ\n");
      lMailBuf.append("〒154-0015\n");
      lMailBuf.append("東京都世田谷区桜新町1-34-25\n");
      lMailBuf.append("TEL：0120-974-554\n");
      lMailBuf.append("E-mail：center@beautygarage.jp\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + lUser.getEmail() + "> 宛先に送信OK! メール種類=カタログ請求完了メール");
      }else{
        log.debug("<" + lUser.getEmail() + "> 宛先に送信NG! メール種類=カタログ請求完了メール");
      }
      //BG向けメール
      lMail = new SIMail();
      lMail.setFrom("center@beautygarage.jp");
      lMail.addTo("catalog@beautygarage.jp");
      lMail.setSubject("【ビューティガレージ】無料カタログ請求お申込");
      lMailBuf = new StringBuffer();
      lMailBuf.append("営業形態：").append(lUser.getJob()).append("\n");
      lMailBuf.append("お名前（漢字）：").append(SIStringUtil.toZenkakuKana(lUser.getCustName())).append("\n");
      lMailBuf.append("お名前（フリガナ）：").append(lUser.getCustPronName()).append("\n");
      lMailBuf.append("郵便番号：").append(lUser.getPostCode()).append("\n");
      lMailBuf.append("都道府県：").append(lUser.getAddress1()).append("\n");
      lMailBuf.append("ご住所（市区町村・番地）：").append(SIStringUtil.toZenkakuKana(lUser.getAddress2())).append("\n");
      lMailBuf.append("ご住所（マンション名等）：").append(SIStringUtil.toZenkakuKana(lUser.getAddress3())).append("\n");
      lMailBuf.append("サロン名：").append(SIStringUtil.toZenkakuKana(lUser.getCompanyName())).append("\n");
      lMailBuf.append("会社名：").append(SIStringUtil.toZenkakuKana(lUser.getCorporationName())).append("\n");
      lMailBuf.append("TEL：").append(lUser.getStoreTel()).append("\n");
      lMailBuf.append("FAX：").append(lUser.getFax()).append("\n");
      lMailBuf.append("E-mail：").append(lUser.getEmail()).append("\n");
      if ("1".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望カタログ：BG STYLE (for ヘアサロン)\n");
      }else if ("2".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望カタログ：BG STYLE (for エステ・ネイル・アイラッシュ)\n");
      }else if ("3".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望カタログ：BG STYLE (for ヘアサロン)、BG STYLE (for エステ・ネイル・アイラッシュ)\n");
      }
      if (newFlg) lMailBuf.append("\n※新規会員登録フォームからのお申し込み\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信OK! メール種類=カタログ申請メール");
      }else{
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信NG! メール種類=カタログ申請メール");
      }
    } catch (SIFatalException e) {
      e.printStackTrace();
    }
  }
  
  public static void sendDirectMail(UIRegCatalogCust lUser, boolean newFlg) {
    SIMail lMail = null;
    try {
      StringBuffer lMailBuf = new StringBuffer();
      //お客様向けメール
      lMail = new SIMail();
      lMail.setFrom("center@beautygarage.jp");
      lMail.addTo(lUser.getEmail());
      lMail.addBcc("center@beautygarage.jp");
      lMail.setSubject("【ビューティガレージ】開業お役立ち情報DM請求お申込");
      lMailBuf.append("この度はビューティガレージに\n");
      lMailBuf.append("お問合せいただきありがとうございます。\n");
      lMailBuf.append("以下の内容で開業お役立ち情報DMのお申し込みを受け付けました。\n");
      lMailBuf.append("開業お役立ち情報DMのお届けは、お申し込み受付後、 \n");
      lMailBuf.append("約1週間程度を頂いておりますので\n");
      lMailBuf.append("到着までしばらくお待ちください。\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMailBuf.append("営業形態：").append(lUser.getJob()).append("\n");
      lMailBuf.append("お名前（漢字）：").append(lUser.getCustName()).append("\n");
      lMailBuf.append("お名前（フリガナ）：").append(lUser.getCustPronName()).append("\n");
      lMailBuf.append("郵便番号：").append(lUser.getPostCode()).append("\n");
      lMailBuf.append("都道府県：").append(lUser.getAddress1()).append("\n");
      lMailBuf.append("ご住所（市区町村・番地）：").append(lUser.getAddress2()).append("\n");
      lMailBuf.append("ご住所（マンション名等）：").append(lUser.getAddress3()).append("\n");
      lMailBuf.append("サロン名：").append(lUser.getCompanyName()).append("\n");
      lMailBuf.append("会社名：").append(lUser.getCorporationName()).append("\n");
      lMailBuf.append("TEL：").append(lUser.getStoreTel()).append("\n");
      lMailBuf.append("FAX：").append(lUser.getFax()).append("\n");
      lMailBuf.append("E-mail：").append(lUser.getEmail()).append("\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMailBuf.append("株式会社ビューティガレージ\n");
      lMailBuf.append("〒154-0015\n");
      lMailBuf.append("東京都世田谷区桜新町1-34-25\n");
      lMailBuf.append("TEL：0120-974-554\n");
      lMailBuf.append("E-mail：center@beautygarage.jp\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + lUser.getEmail() + "> 宛先に送信OK! メール種類=DM請求完了メール");
      }else{
        log.debug("<" + lUser.getEmail() + "> 宛先に送信NG! メール種類=DM請求完了メール");
      }
      //BG向けメール
      lMail = new SIMail();
      lMail.setFrom("center@beautygarage.jp");
      lMail.addTo("dm@beautygarage.jp");
      lMail.setSubject("【ビューティガレージ】開業お役立ち情報DM請求お申込");
      lMailBuf = new StringBuffer();
      lMailBuf.append("営業形態：").append(lUser.getJob()).append("\n");
      lMailBuf.append("お名前（漢字）：").append(SIStringUtil.toZenkakuKana(lUser.getCustName())).append("\n");
      lMailBuf.append("お名前（フリガナ）：").append(lUser.getCustPronName()).append("\n");
      lMailBuf.append("郵便番号：").append(lUser.getPostCode()).append("\n");
      lMailBuf.append("都道府県：").append(lUser.getAddress1()).append("\n");
      lMailBuf.append("ご住所（市区町村・番地）：").append(SIStringUtil.toZenkakuKana(lUser.getAddress2())).append("\n");
      lMailBuf.append("ご住所（マンション名等）：").append(SIStringUtil.toZenkakuKana(lUser.getAddress3())).append("\n");
      lMailBuf.append("サロン名：").append(SIStringUtil.toZenkakuKana(lUser.getCompanyName())).append("\n");
      lMailBuf.append("会社名：").append(SIStringUtil.toZenkakuKana(lUser.getCorporationName())).append("\n");
      lMailBuf.append("TEL：").append(lUser.getStoreTel()).append("\n");
      lMailBuf.append("FAX：").append(lUser.getFax()).append("\n");
      lMailBuf.append("E-mail：").append(lUser.getEmail()).append("\n");
      if (newFlg) lMailBuf.append("\n※新規会員登録フォームからのお申し込み\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信OK! メール種類=DM申請メール");
      }else{
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信NG! メール種類=DM申請メール");
      }
    } catch (SIFatalException e) {
      e.printStackTrace();
    }
  }
  
  public static void recordPurchaseComment(Connection lConnection,String custCode,String comment) throws SIDBAccessException,SIDuplicateKeyException{
    SIDateTime time = new SIDateTime();
    String num = SIDBUtil.getFirstData(lConnection, "SELECT coalesce(max(CommentNumber),0)+1 FROM purchaseCommentTbl WHERE custcode="+custCode);
    SIInsertRec iRec = new SIInsertRec("purchaseCommentTbl");
    iRec.add("CustCode", custCode);
    iRec.add("CommentNumber", num);
    iRec.add("InitDateTime", time.getFullDateTime());
    iRec.add("UpdateDateTime", time.getFullDateTime());
    iRec.add("UserName", "システム");
    iRec.add("Comment", comment);
    iRec.add("MemoStatus", "8");
    iRec.execute(lConnection);
  }
  
  public static void sendPresentMail(UIRegCatalogCust lUser) {
    SIMail lMail = null;
    try {
      StringBuffer lMailBuf = new StringBuffer();
      //お客様向けメール
      lMail = new SIMail();
      lMail.setFrom("center@beautygarage.jp");
      lMail.addTo(lUser.getEmail());
      lMail.addBcc("center@beautygarage.jp");
      lMail.setSubject("【ビューティガレージ】アプリ限定人気商品無料プレゼントお申込");
      lMailBuf.append("この度はビューティガレージの\n");
      lMailBuf.append("アプリ限定人気商品プレゼントにお申し込みいただき\n");
      lMailBuf.append("ありがとうございます。\n\n");
      lMailBuf.append("プレゼントのお届けは、お申し込み受付後、\n");
      lMailBuf.append("約2週間程度を頂いておりますので\n");
      lMailBuf.append("到着までしばらくお待ちください。\n\n");
      lMailBuf.append("なお、本商品は先着限定プレゼントの為、\n");
      lMailBuf.append("無くなり次第終了となります。\n");
      lMailBuf.append("お申し込み頂いてもすでに限定数に達している場合もございますので、\n");
      lMailBuf.append("その際はご了承ください。\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMailBuf.append("営業形態：").append(lUser.getJob()).append("\n");
      lMailBuf.append("お名前（漢字）：").append(lUser.getCustName()).append("\n");
      lMailBuf.append("お名前（フリガナ）：").append(lUser.getCustPronName()).append("\n");
      lMailBuf.append("郵便番号：").append(lUser.getPostCode()).append("\n");
      lMailBuf.append("都道府県：").append(lUser.getAddress1()).append("\n");
      lMailBuf.append("ご住所（市区町村・番地）：").append(lUser.getAddress2()).append("\n");
      lMailBuf.append("ご住所（マンション名等）：").append(lUser.getAddress3()).append("\n");
      lMailBuf.append("サロン名：").append(lUser.getCompanyName()).append("\n");
      lMailBuf.append("会社名：").append(lUser.getCorporationName()).append("\n");
      lMailBuf.append("TEL：").append(lUser.getStoreTel()).append("\n");
      lMailBuf.append("FAX：").append(lUser.getFax()).append("\n");
      lMailBuf.append("E-mail：").append(lUser.getEmail()).append("\n");
      if ("1".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望商品：[forエステサロン]おもてなしセット\n");
      }else if ("2".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望商品：[forヘアサロン]シャンプーセット\n");
      }else if ("3".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望商品：[forネイルサロン]Raygelセット\n");
      }else if ("4".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望商品：[forアイラッシュサロン]まつエクセット\n");
      }
      lMailBuf.append("--------------------------------------------------\n");
      lMailBuf.append("株式会社ビューティガレージ\n");
      lMailBuf.append("〒154-0015\n");
      lMailBuf.append("東京都世田谷区桜新町1-34-25\n");
      lMailBuf.append("TEL：0120-974-554\n");
      lMailBuf.append("E-mail：center@beautygarage.jp\n");
      lMailBuf.append("--------------------------------------------------\n");
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + lUser.getEmail() + "> 宛先に送信OK! メール種類=アプリ限定プレゼント完了メール");
      }else{
        log.debug("<" + lUser.getEmail() + "> 宛先に送信NG! メール種類=アプリ限定プレゼント完了メール");
      }
      //BG向けメール
      lMail = new SIMail();
      lMail.setFrom("center@beautygarage.jp");
      lMail.addTo("planning@beautygarage.jp");
      lMail.setSubject("【ビューティガレージ】アプリ限定人気商品無料プレゼントお申込");
      lMailBuf = new StringBuffer();
      lMailBuf.append("営業形態：").append(lUser.getJob()).append("\n");
      lMailBuf.append("お名前（漢字）：").append(SIStringUtil.toZenkakuKana(lUser.getCustName())).append("\n");
      lMailBuf.append("お名前（フリガナ）：").append(lUser.getCustPronName()).append("\n");
      lMailBuf.append("郵便番号：").append(lUser.getPostCode()).append("\n");
      lMailBuf.append("都道府県：").append(lUser.getAddress1()).append("\n");
      lMailBuf.append("ご住所（市区町村・番地）：").append(SIStringUtil.toZenkakuKana(lUser.getAddress2())).append("\n");
      lMailBuf.append("ご住所（マンション名等）：").append(SIStringUtil.toZenkakuKana(lUser.getAddress3())).append("\n");
      lMailBuf.append("サロン名：").append(SIStringUtil.toZenkakuKana(lUser.getCompanyName())).append("\n");
      lMailBuf.append("会社名：").append(SIStringUtil.toZenkakuKana(lUser.getCorporationName())).append("\n");
      lMailBuf.append("TEL：").append(lUser.getStoreTel()).append("\n");
      lMailBuf.append("FAX：").append(lUser.getFax()).append("\n");
      lMailBuf.append("E-mail：").append(lUser.getEmail()).append("\n");
      if ("1".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望商品：[forエステサロン]おもてなしセット\n");
      }else if ("2".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望商品：[forヘアサロン]シャンプーセット\n");
      }else if ("3".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望商品：[forネイルサロン]Raygelセット\n");
      }else if ("4".equals(lUser.getCatalogRequest())){
        lMailBuf.append("希望商品：[forアイラッシュサロン]まつエクセット\n");
      }
      lMail.setContent(lMailBuf.toString());
      if (lMail.sendMail()){
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信OK! メール種類=アプリ限定プレゼント申請メール");
      }else{
        log.debug("<" + SIConfig.SIMALL.getEmail() + "> 宛先に送信NG! メール種類=アプリ限定プレゼント申請メール");
      }
    } catch (SIFatalException e) {
      e.printStackTrace();
    }
  }
}
