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

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.http.*;

import org.apache.log4j.Category;
import jp.co.sint.tools.*;
import jp.co.sint.config.*;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.basic.*;
import jp.co.sint.tools.SIURLParameter;//7.1.1 ST0236 追加

/**
 * @version $Id : UIRegShop.java,v 1.0 2003/08/06 Exp $
 * @author      : Jinwang Chen
 * <br>Description : ショップ管理の編集画面に対する管理 beans
 * <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/08/06  Original
 */

public class UIRegPurchase extends SIPurchase {
  //ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  //戻るURL
  private String backURL="";
  //次へ進むURL
  private String nid="";
  
  public UIRegPurchase() {
  }
  
  public void setBackUrl(String string){
    if (SIUtil.isNull(string)) string="";
    this.backURL=SIUtil.changeTo(string.trim(),this.encode);
  }
  
  public void setNextUrlTxt(String string){
    if (SIUtil.isNull(string)) string="";
    this.nid=SIUtil.changeTo(string.trim(),this.encode);
  }
  
  public String getBackURL(){
    return backURL;
  }
  
  public String getNextUrlTxt(){
    return nid;
  }
  
  /**
   * init
   * 入力したデータから、このbeansを設定します。
   * @param HttpServletRequest
   * @param SIURLParameter
   * @return なし
   * @throws なし
   */
  public void init(HttpServletRequest lRequest,SIURLParameter lUrlParam){//7.1.1 ST0236 修正
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    super.init(lRequest,lUrlParam);
    String lAct=(String)lUrlParam.getParam("actionNameTxt");
      if (lAct==null)lAct="";
      if(lAct.equals(SIConfig.SIACTION_NEXT)||lAct.equals(SIConfig.SIACTION_REGIST)||
          lAct.equals(SIConfig.SIACTION_NOTREGIST)||lAct.equals(SIConfig.SIACTION_CONFIRM)){
        this.setCmdtyName1((String)lUrlParam.getParam("cmdtyName1"));
        this.setCmdtyName2((String)lUrlParam.getParam("cmdtyName2"));
        this.setCmdtyName3((String)lUrlParam.getParam("cmdtyName3"));
        this.setCmdtyName4((String)lUrlParam.getParam("cmdtyName4"));
        this.setCmdtyName5((String)lUrlParam.getParam("cmdtyName5"));
        this.setPurchaseTime1((String)lUrlParam.getParam("purchaseTime1"));
        this.setPurchaseTime2((String)lUrlParam.getParam("purchaseTime2"));
        this.setPurchaseTime3((String)lUrlParam.getParam("purchaseTime3"));
        this.setPurchaseTime4((String)lUrlParam.getParam("purchaseTime4"));
        this.setPurchaseTime5((String)lUrlParam.getParam("purchaseTime5"));
        this.setUsedYear1((String)lUrlParam.getParam("usedYear1"));
        this.setUsedYear2((String)lUrlParam.getParam("usedYear2"));
        this.setUsedYear3((String)lUrlParam.getParam("usedYear3"));
        this.setUsedYear4((String)lUrlParam.getParam("usedYear4"));
        this.setUsedYear5((String)lUrlParam.getParam("usedYear5"));
        this.setAmount1((String)lUrlParam.getParam("amount1"));
        this.setAmount2((String)lUrlParam.getParam("amount2"));
        this.setAmount3((String)lUrlParam.getParam("amount3"));
        this.setAmount4((String)lUrlParam.getParam("amount4"));
        this.setAmount5((String)lUrlParam.getParam("amount5"));
        this.setPictureUrl1((String)lUrlParam.getParam("pictureUrl1"));
        this.setPictureUrl2((String)lUrlParam.getParam("pictureUrl2"));
        this.setPictureUrl3((String)lUrlParam.getParam("pictureUrl3"));
        this.setPictureUrl4((String)lUrlParam.getParam("pictureUrl4"));
        this.setPictureUrl5((String)lUrlParam.getParam("pictureUrl5"));
        this.setPurchaseHopeTime((String)lUrlParam.getParam("purchaseHopeTime"));
        this.setDetails((String)lUrlParam.getParam("details"));
      }
      if(lAct.equals(SIConfig.SIACTION_REMODIFY)||lAct.equals(SIConfig.SIACTION_CON)||lAct.equals(SIConfig.SIACTION_CONFIRM)
              ||lAct.equals(SIConfig.SIACTION_ZIPDIC)||lAct.equals(SIConfig.SIACTION_ZIPDIC2)){
        this.setCustName((String)lUrlParam.getParam("custName"));
        this.setCustPronName((String)lUrlParam.getParam("custPronName"));
        this.setPostCode1((String)lUrlParam.getParam("postCode1"));
        this.setPostCode2((String)lUrlParam.getParam("postCode2"));
        this.setAddress1((String)lUrlParam.getParam("address1"));
        this.setAddress2((String)lUrlParam.getParam("address2"));
        this.setAddress3((String)lUrlParam.getParam("address3"));
        this.setTel1((String)lUrlParam.getParam("tel1"));
        this.setTel2((String)lUrlParam.getParam("tel2"));
        this.setFax((String)lUrlParam.getParam("fax"));
        this.setCompanyName((String)lUrlParam.getParam("companyName"));
        this.setEmail((String)lUrlParam.getParam("email"));
        this.setPostCodeOther1((String)lUrlParam.getParam("postCodeOther1")); 
        this.setPostCodeOther2((String)lUrlParam.getParam("postCodeOther2"));
        this.setAddressOther1((String)lUrlParam.getParam("addressOther1"));
        this.setAddressOther2((String)lUrlParam.getParam("addressOther2"));
        this.setAddressOther3((String)lUrlParam.getParam("addressOther3"));
        this.setTelOther1((String)lUrlParam.getParam("telOther1"));
      }
      
    if (getActionNameTxt().equals(SIConfig.SIACTION_ZIPDIC)&&SIConfig.SIZIP!=null){//郵便番号から県名と市区町村名を検索
      String lEncode=this.getEncode();//既存のコードの保存
      this.setEncode(SIConfig.SIENCODE_NONE);
      String lResult=SIConfig.SIZIP.getPrefectureName(getPostCode1(),getPostCode2());//県名の検索
      if (SIUtil.isNotNull(lResult))this.setAddress1(lResult);//県名の設定
      lResult=SIConfig.SIZIP.getAddressName(getPostCode1(),getPostCode2());//市区町村名の検索
      if (SIUtil.isNotNull(lResult))this.setAddress2(lResult);//市区町村名の設定
      this.setEncode(lEncode);//既存のコードの回復
    }
    if (getActionNameTxt().equals(SIConfig.SIACTION_ZIPDIC2)&&SIConfig.SIZIP!=null){//郵便番号から県名と市区町村名を検索
      String lEncode=this.getEncode();//既存のコードの保存
      this.setEncode(SIConfig.SIENCODE_NONE);
      String lResult=SIConfig.SIZIP.getPrefectureName(getPostCodeOther1(),getPostCodeOther2());//県名の検索
      if (SIUtil.isNotNull(lResult))this.setAddressOther1(lResult);//県名の設定
      lResult=SIConfig.SIZIP.getAddressName(getPostCodeOther1(),getPostCodeOther2());//市区町村名の検索
      if (SIUtil.isNotNull(lResult))this.setAddressOther2(lResult);//市区町村名の設定
      this.setEncode(lEncode);//既存のコードの回復
    }
  }
  
  /**
   * reset
   * 修正モードの場合には、PKのデータを元に、明細データをデータベースから取り込んで
   * 画面に表示します。
   * @param lConnection データベースへのコネンクション
   * @return なし
   * @throws なし
   */
  public void reset(Connection lConnection) {
    if (SIUtil.isNull(this.getCustCode())) return;
    
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    StringBuffer sqlStatement = new StringBuffer();
    //出力項目
    sqlStatement.append(" SELECT c.*,d.paymethodname FROM  ");
    sqlStatement.append(" (SELECT a.*,b.memberlevelname FROM custtbl a,memberlevelmtbl b WHERE a.memberlevelcode=b.memberlevelcode ");
    sqlStatement.append(" ) c  ");
    sqlStatement.append(" LEFT OUTER JOIN ");
    sqlStatement.append(" ( ");
    sqlStatement.append(" SELECT b.paymethodcode,b.paymethodname FROM mallvw a  ");
    sqlStatement.append(" INNER JOIN paymethodmtbl b ");
    sqlStatement.append(" ON a.mallshopcode=b.mallshopcode ");
    sqlStatement.append(" ) d ");
    sqlStatement.append(" ON c.paymethodcode = d.paymethodcode ");
    sqlStatement.append(" WHERE 1=1");
    sqlStatement.append(" AND CustCode=" + SIDBUtil.SQL2Str(this.getCustCode()));
    
    log.debug("reset:lSqlStatement=" + sqlStatement.toString());
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(sqlStatement.toString());
      
      if (lResultSet.next()) {
        this.setEncode(SIConfig.SIENCODE_NONE);
        
        this.setCustCode(lResultSet.getString("custCode"));
        this.setCustName(lResultSet.getString("custName"));
        this.setCustPronName(lResultSet.getString("custPronName"));
        this.setEmail(lResultSet.getString("email"));
        this.setPostCode1(lResultSet.getString("postCode1"));
        this.setPostCode2(lResultSet.getString("postCode2"));
        this.setAddress1(lResultSet.getString("address1"));
        this.setAddress2(lResultSet.getString("address2"));
        this.setAddress3(lResultSet.getString("address3"));
        this.setTel1(lResultSet.getString("storetel"));
        this.setTel2(lResultSet.getString("tel"));
        this.setFax(lResultSet.getString("fax"));
        this.setCompanyName(lResultSet.getString("companyName"));
        this.setEmail(lResultSet.getString("email"));
        
      }
    } catch (SQLException sqle) {
      sqle.printStackTrace();
    }finally{
      SIDBUtil.close(lStatement, lResultSet);
    }
  }
  
  public void initUrl(SIURLParameter lUrlParam){
    this.setBackUrl((String)lUrlParam.getParam("backURL"));
    this.setNextUrlTxt((String)lUrlParam.getParam("nid"));
  }
}
