/**
 * Copyright (c) 2003-2005 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.HttpServletRequest;

import jp.co.sint.basic.SIBasic;
import jp.co.sint.config.SIConfig;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.tools.SIURLParameter;

import org.apache.log4j.Category;

/**
 * @version $Id: UINewOrderDeli.java,
 * @author  Tsuyoshi Yagi
 * <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>
 * Tsuyoshi Yagi   2005/08/25  Original
 */
public class UINewOrderDeli  extends SIBasic{
  //ログ用のインスタンスの生成
  private static Category log=Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  //配送先
  private String address="0";
  //配送希望日（年）個別
  private String deliveryDate1="";
  //配送希望日（年）小物
  private String deliveryDate2="";
  //削除対象
  private String delRow="";
  
  /**
   * @return address を戻します。
   */
  public String getAddress() {
    return address;
  }
  /**
   * @param address address を設定。
   */
  public void setAddress(String address) {
    this.address = address;
  }
  
  /**
   * @return deliveryDate1 を戻します。
   */
  public String getDeliveryDate1() {
    return deliveryDate1;
  }
  
  /**
   * @param deliveryDate1 deliveryDate1 を設定。
   */
  public void setDeliveryDate1(String deliveryDate1) {
    this.deliveryDate1 = deliveryDate1;
  }
  
  /**
   * @return deliveryDate2 を戻します。
   */
  public String getDeliveryDate2() {
    return deliveryDate2;
  }
  
  /**
   * @param deliveryDate2 deliveryDate2 を設定。
   */
  public void setDeliveryDate2(String deliveryDate2) {
    this.deliveryDate2 = deliveryDate2;
  }
  
  /**
   * @return delRow を戻します。
   */
  public String getDelRow() {
    return delRow;
  }
  
  /**
   * @param delRow delRow を設定。
   */
  public void setDelRow(String delRow) {
    this.delRow = delRow;
  }
  
  /**
   * init 入力したデータを基づいて、このbeansを設定します。
   * 
   * @param request
   * @return void
   * @throws なし
   */
  public void init(HttpServletRequest lRequest,SIURLParameter lUrlParam) {
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    this.setAddress((String)lUrlParam.getParam("address"));
    log.debug("setAddressCode:"+(String)lUrlParam.getParam("address"));
    this.setDelRow((String)lUrlParam.getParam("delRowTxt"));
    this.setDeliveryDate1((String)lUrlParam.getParam("deliveryDate1"));
    this.setDeliveryDate2((String)lUrlParam.getParam("deliveryDate2"));
  }
  
  public String getAddressTxt(Connection conn,String custCode){
    String str="";
    Statement statement = null;
    ResultSet resultSet = null;
    StringBuffer sqlStatement = new StringBuffer();
    
    //出力項目
    sqlStatement.append("SELECT postcode1,postcode2,address1,address2,address3 FROM CustAddresstbl ");
    sqlStatement.append("WHERE custCode=").append(SIDBUtil.SQL2Str(custCode," "));
    sqlStatement.append("AND addresscode=").append(SIDBUtil.SQL2Str(this.address));
    try {
      statement = conn.createStatement();
      log.debug("SQL=" + sqlStatement.toString());
      resultSet = statement.executeQuery(sqlStatement.toString());
      while (resultSet.next()) {
        str="〒"+resultSet.getString("postcode1")+"−"+resultSet.getString("postcode2");
        if(resultSet.getString("address3")==null){
        str=str+resultSet.getString("address1")+resultSet.getString("address2");
        } else {
          str=str+resultSet.getString("address1")+resultSet.getString("address2")+resultSet.getString("address3");
        }
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      SIDBUtil.close(statement, resultSet);
    }
    return str;
  }
  
  public String getFeeRule(Connection conn,String custCode,String addressCode){
    String str="";
    Statement statement = null;
    ResultSet resultSet = null;
    StringBuffer sqlStatement = new StringBuffer();
    
    //出力項目
    sqlStatement.append("SELECT CASE WHEN d.prefecturecode='50' THEN f.spprice1 ");
    sqlStatement.append("WHEN d.prefecturecode='51' THEN f.spprice2 ELSE f.price END AS price ");
    sqlStatement.append("FROM feerulemtbl f,custaddresstbl a ");
    sqlStatement.append("LEFT OUTER JOIN spcdeliverymtbl d ON a.postcode1=d.postcode1 AND a.postcode2=d.postcode2 ");
    sqlStatement.append("WHERE a.custCode=").append(SIDBUtil.SQL2Str(custCode," "));
    sqlStatement.append("AND a.addressCode=").append(SIDBUtil.SQL2Str(addressCode," "));
    sqlStatement.append("AND f.deliverytypecode=1");
    try {
      statement = conn.createStatement();
      log.debug("SQL=" + sqlStatement.toString());
      resultSet = statement.executeQuery(sqlStatement.toString());
      while (resultSet.next()) {
        str=resultSet.getString("price");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      SIDBUtil.close(statement, resultSet);
    }
    return str;
  }
  
}
