<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * zsb
 *
 * 租售宝系统基本类库
 *
 * @package         zsb
 * @author          EllisLab Dev Team
 * @copyright      Copyright (c) 2006 - 2014, HOUSE365, Inc.
 * @link            http://nj.sell.house.com
 * @since           Version 1.0
 * @filesource
 */

// ------------------------------------------------------------------------

/**
 * Sell_demands_model CLASS
 *
 * 求购、求租管理类，提供管理求购、求租信息的方法(查看、匹配、删除等操作)。
 *
 * @package         zsb
 * @subpackage      Models
 * @category        Models
 * @author          xz     
 */
class house_demands_base_model extends MY_Model{
   
    /**
    * 用户ID
    *
    * @access private
    * @var integer
    */
    private $_uid    = 0;
    
    /**
    * 求购、求租信息编号
    *
    * @access private
    * @var integer
    */
    private $_id    = 0;

    /**
    * 用户操作内容所在的城市
    *
    * @access private
    * @var string
    */
    private $_city = NULL;

    /**
    * 二手房、租房房源表
    *
    * @access private
    * @var string
    */
    private  $_tbl_house = NULL;
    
    /**
    * 求购、求租信息表
    *
    * @access private
    * @var string
    */
    private  $_tbl_demand = NULL;
    
    /**
    * 匹配房源信息表
    *
    * @access private
    * @var string
    */
    private $_tbl_match = NULL;

    /**
    * 房源查询字段
    *
    * @access private
    * @var array
    */
    private $_house_fields = array();
    
    /**
    * 需求表查询字段
    *
    * @access private
    * @var array
    */
    private $_demand_fields = array();
    
    
    /**
    * Constructor
    */
    public function __construct() 
    {
        parent::__construct(1,1,1);
    }
    
    
    /**
    * 初始化求购求租信息编号
    *
    * @access	public
    * @param	int $id 经纪人账号编号
    * @return	void
    */
    public function set_id( $id )
    {
        $this->_id = intval( $id );
    }
    
    
    /**
    * 获取求购求租信息编号
    *
    * @access	public
    * @param	void
    * @return	int 求购求租信息编号
    */
    public function get_id( )
    {
        return $this->_id;
    }
    
    /**
    * 初始化经纪人uid参数
    *
    * @access	public
    * @param	int $uid 经纪人账号编号
    * @return	void
    */
    public function set_uid( $uid )
    {
        $this->_uid = intval( $uid );
    }
    
    
    /**
    * 获取经纪人账号编号
    *
    * @access	public
    * @param	void
    * @return	int 经纪人账号编号
    */
    public function get_uid( )
    {
        return $this->_uid;
    }
    
    
    /**
    * 设置房源表
    *
    * @access	public
    * @param	string $tbl_name 表名称
    * @return	void
    */
    public function set_tbl_house( $tbl_name )
    {
        $this->_tbl_house = strip_tags( $tbl_name );
    }
    
    
    /**
    * 获取房源表名称
    *
    * @access	public
    * @param	void
    * @return	string 房源表名称
    */
    public function get_tbl_house( )
    {
        return $this->_tbl_house;
    }
    
    
    /**
    * 设置求购、求组信息表
    *
    * @access	public
    * @param	string $tbl_name 表名称
    * @return	void
    */
    public function set_tbl_demand( $tbl_name )
    {
        $this->_tbl_demand = strip_tags( $tbl_name );
    }
    
    
    /**
    * 获取需求信息表名称
    *
    * @access	public
    * @param	void
    * @return	string 需求信息表名称
    */
    public function get_tbl_demand( )
    {
        return $this->_tbl_demand;
    }
    
    
    /**
    * 设置求购、求组匹配表名称
    *
    * @access	public
    * @param	string $tbl_name 表名称
    * @return	void
    */
    public function set_tbl_match( $tbl_name )
    {
        $this->_tbl_match = strip_tags( $tbl_name );
    }
    
    
    /**
    * 获取求购、求组匹配表名称
    *
    * @access	public
    * @param	void
    * @return	string 求购、求组匹配表名称
    */
    public function get_tbl_match( )
    {
        return $this->_tbl_match;
    }
    
    
    /**
    * 设置房源表需要查询的房源字段
    *
    * @access	public
    * @param	array  $arr_fields 房源信息字段
    * @return	void
    */
    public function set_house_fields( $arr_fields )
    {
        $this->_house_fields = $arr_fields;
    }
    
    
    /**
    * 获取房源表需要查询的房源字段
    *
    * @access	public
    * @param	void
    * @return	array  $house_fields 房源信息字段
    */
    public function get_house_fields()
    {
        return $this->_house_fields;
    }
    
    
    /**
    * 设置的房源需求信息表需要查询的字段数组
    *
    * @access	public
    * @param	array  $arr_fields 房源信息字段
    * @return	void
    */
    public function set_demand_fields( $arr_fields )
    {
        $this->_demand_fields = $arr_fields;
    }
    
    
    /**
    * 获取设置的房源需求信息表需要查询的字段数组
    *
    * @access	public
    * @param	void
    * @return	array  房源需求信息表需要查询的字段数组
    */
    public function get_demand_fields()
    {
        return $this->_demand_fields;
    }
    
    
    /**
    * 获取符合条件的求购求组信息条数
    *
    * @access	protected
    * @param	string  $cond_where 查询条件
    * @return	int   符合条件的求购信息条数
    */
    protected function get_demands_num( $cond_where = '' )
    {
        $demands_num = 0;
        
        //房源需求信息表
        $tbl_demand = $this->get_tbl_demand();
        
        //如果表名称没有设置则返回0
        if( !in_array( $tbl_demand , array( 'buy' , 'rentwanted' ) ) )
        {
           return $demands_num ;
        }
        
        //查询条件
        if( $cond_where != '')
        {
            $this->dbback->where( $cond_where );
        }

        $demands_num = $this->dbback->get( $tbl_demand )->num_rows();
		//echo $this->dbback->last_query().'<br>';

        return  intval( $demands_num );
    }
    
    
    /**
    * 获取符合条件的需求信息列表
    *
    * @access	protected
    * @param	string  $cond_where 查询条件
    * @param	int     $offset 偏移数,默认值为0
    * @param	int     $pagesize 每次取的条数，默认值为10
    * @param	string  $order_key 排序字段，默认值
    * @param	string  $order_by  升序、降序，默认降序排序
    * @return	array   求购求租信息列表
    */
    protected function get_demands_list( $cond_where , $offset = 0 , $limit = 10 , $order_key = 'creattime' , $order_by = 'DESC' )
    {   
        //房源需求信息表
        $tbl_demand = $this->get_tbl_demand();
        
        //需要查询的房源需求信息字段
        $select_fields = $this->get_demand_fields();
        
        if( isset( $select_fields ) && !empty( $select_fields ) )
        {   
            //查询字段
            $select_fields_str = implode( ',' , $select_fields ) ;
            $this->dbback->select( $select_fields_str );
        }
        
        //查询条件
        if( $cond_where != '')
        {
            $this->dbback->where( $cond_where );
        }

        //排序条件
        $this->dbback->order_by( $order_key , $order_by );

        //查询
        $arr_data = $this->dbback->get( $tbl_demand , $limit , $offset )->result_array();
		//echo $this->dbback->last_query().'<br>';

        return  $arr_data;
    }
    
    
    /**
    * 获取符合条件的已匹配信息条数
    *
    * @access	protected
    * @param	string  $cond_where 查询条件
    * @return	int   符合条件的求购信息条数
    */
    protected function get_matched_num ( $cond_where = '' )
    {
        $matched_num = 0;
        
        //房源匹配表
        $tbl_match = $this->get_tbl_match();
        
        //如果表名称没有设置则返回0
        if( !in_array( $tbl_match , array( 'buy_match' , 'rentwanted_match' ) ) )
        {
           return $matched_num ;
        }
        
        //查询条件
        if( $cond_where != '')
        {
            $this->dbback->where( $cond_where );
        }
        
        $matched_num = $this->dbback->get( $tbl_match )->num_rows();

        return  intval( $matched_num );
    }
    
    
    /**
    * 根据查询条件获取的账号已匹配求购求组信息编号数组
    *
    * @access	protected
    * @param	string  $cond_where 查询条件
    * @param	string  $order_key 排序字段，默认值
    * @param	string  $order_by  升序、降序，默认降序排序
    * @return	array   账号已匹配求购求组信息编号数组
    */
    protected function get_matched_ids( $cond_where = '' , $order_key = 'creattime' , $order_by = 'DESC')
    {   
        $arr_ids = array();
        
        //匹配表
        $tbl_match = $this->get_tbl_match();
        
        if( $tbl_match == '')
        {
            return $arr_ids;
        }

        //查询字段
        $this->dbback->select( 'want_id' );
        $this->dbback->distinct();
        
        //查询条件
        if( $cond_where != '')
        {
            $this->dbback->where( $cond_where );
        }

        //排序条件
        $this->dbback->order_by( $order_key , $order_by );

        //查询
        $arr_ids = $this->dbback->get( $tbl_match )->result_array();
        //echo $this->dbback->last_query();
        
        return $arr_ids;
    }
    
    
    /**
    * 获取符合条件的求购、求租列表
    *
    * @access	protected
    * @param	string  $cond_where 查询条件
    * @param	int     $offset 偏移数,默认值为0
    * @param	int     $pagesize 每次取的条数，默认值为10
    * @param	string  $order_key 排序字段，默认值
    * @param	string  $order_by  升序、降序，默认降序排序
    * @return	array   求购求租信息列表
    */
    protected function get_matched_list( $cond_where , $offset = 0 , $limit = 10 , $order_key = 'creattime' , $order_by = 'DESC' )
    {   
        $arr_data = array();
        
        //求购、求租信息表
        $tbl_demand = $this->get_tbl_demand();
        
        //获得需要查询的求购、求租信息字段
        $select_fields = $this->get_demand_fields();
        if( isset( $select_fields ) && !empty( $select_fields ) )
        {   
            $select_fields_str = implode( ',' , $select_fields ) ;
            $this->dbback->select( $select_fields_str );
        }
        
        //查询条件
        if( $cond_where != '')
        {
            $this->dbback->where( $cond_where );
        }

        //排序条件
        $this->dbback->order_by( $order_key , $order );

        //查询
        $arr_data = $this->dbback->get( $tbl_demand , $limit , $offset )->result_array();

        return  $arr_data;
    }
    
    
    /**
    * 查询某条房源已匹配个数
    *
    * @access	public
    * @param	string  $cond_where 查询条件
    * @return	int 某条房源已匹配个数
    */
    public function get_matched_num_by_id( $infofrom = '' , $match_time = '' ,$esta = 0 , $isread = '' )
    {   
        $matched_num = 0;
        
        $id = $this->get_id();

        //房源编号
        $cond_where = 'id = '.$id;
        
        //匹配来源
        if( $infofrom > 0)
        {
            $cond_where .= ' AND infofrom = '.$infofrom;
        }
        
        //匹配时间
        if( $match_time > 0)
        {
            $cond_where .= ' AND creattime >= '.$match_time;
        }
        
        //匹配信息状态
        $cond_where .= ' AND esta = '.$esta;
        
        //匹配信息是否已经查看过
        if( $isread > 0)
        {
            $cond_where .= ' AND isread = '.$isread;
        }
        
        $matched_num = $this->get_matched_num( $cond_where );
        
        return $matched_num;
    }
    /**
    * 匹配房源
    *
    * @access	public
    * @param	array  $match_info 匹配信息
    * @return	boolean 匹配信息是否提交成功
    */
    public function match_house( $match_info )
    {
        $tbl_match = $this->get_tbl_match();
        
        $this->db->insert( $tbl_match , $match_info );
        
        return ( $this->db->affected_rows() == 1 ) ? $this->db->insert_id() : FALSE;
    }   
}
/* End of file house_demands_model.php */
/* Location: ./zsb/model/house_demands_model.php */