<?php
/**
 * 房源模板业务逻辑
 *
 * @author sun
 */
class House_template_model extends MY_Model {

    /**
     * 模板表
     * @var string
     */
    private $_tbl = 'zsb_template';

    /**
     * 出售和出租最多各有12个模板
     * @var int
     */
    public $template_num = 12;

    /**
     * 可以处理的模块
     * @var array
     */
    private $_modules = array('sell' => '出售', 'rent' => '出租');

    /**
     * 查询字段
     * @var string
     */
    private $_select_fields = '';

    /**
     * 类的初始化
     */
    public function __construct()
    {
        parent::__construct(1,1,0);
    }

    /**
     * 房源模板对外接口的url地址
     * @param string $func_name 功能名称
     * @return string 相应功能url地址
     */
    public function find_func_url($func_name = 'manage')
    {
        $url = '/house_template/';
        switch ($func_name)
        {
            case 'add': //增加房源模板页
                $url .= 'add/';
                break;
            case 'insert': //插入模板数据
                $url .= 'insert/';
                break;
            case 'modify': //修改房源模板页
                $url .= 'modify/';
                break;
            case 'update': //更新房源数据
                $url .= 'update/';
                break;
            case 'delete': //删除房源数据
                $url .= 'delete/';
                break;
            default :  //房源模板列表页
                $url .= 'manage/';
        }
        return $url;
    }

    /**
     * 获取房源模板名称
     * @param string $module 模板类型
     * @return string 模板名
     */
    public function find_module_name($module)
    {
        return $this->_modules[$module];
    }

    /**
     * 检查模板名称
     * @param string $module 模板类型
     * @return string 模板名
     */
    public function check_module($module)
    {
        $modules = array_keys($this->_modules);
        if (in_array($module, $modules))
        {
            return $module;
        }
        else
        {
            //不传模块参数时默认为第一个
            return $modules[0];
        }
    }

    /**
     * 设置需要查询的字段
     * @param array $select_fields 需要查询的字段数组
     */
    public function set_select_fields($select_fields)
    {
        $select_fields_str = '';
        if(isset( $select_fields ) && !empty($select_fields))
        {
            $select_fields_str = implode( ',', $select_fields) ;
        }
        $this->_select_fields = $select_fields;
    }

    /**
     * 获取需要查询的字段
     * @return string
     */
    public function get_select_fields()
    {
        return $this->_select_fields;
    }

    /**
     * 标志出售和出租的数值
     * @return int 1 = sell 2 = rent
     */
    public function flag($module)
    {
        if ($module == 'sell')
        {
            return 1;
        }
        else if ($module == 'rent')
        {
            return 2;
        }
    }

    /**
     * 有多少个相同名称的模板
     * @param type $template_name 模板名称
     * @param type $module 模板类型
     * @param type $uid 经纪人编号
     */
    public function find_count_by_name($template_name, $module = 'sell', $uid = '')
    {
        $this->db->where('template_name', ltrim($template_name));
        $this->db->where('flag', $this->flag($module));
        if ($uid)
        {
            $this->db->where('broker_id', $uid);
        }
        return $this->db->count_all_results($this->_tbl);
    }

    /**
     * 某个模块下多少个模板数据
     * @param type $module 模板类型
     * @param type $uid 经纪人编号
     */
    public function find_count_by_module($module, $uid = '')
    {
        $this->db->where('flag', $this->flag($module));
        if ($uid)
        {
            $this->db->where('broker_id', $uid);
        }
        return $this->db->count_all_results($this->_tbl);
    }

    /**
     * 根据编号id获取模板详细信息
     * @param int $id  房源模板编号
     * @param int $uid 经纪人编号
     * @return array  返回模板信息组成的一维数组
     */
    public function find_by_id($id, $uid = '')
    {
        $this->dbback->where('id', $id);
        if ($uid)
        {
            $this->dbback->where('broker_id', $uid);
        }
        //查询字段
        if ($this->_select_fields)
        {
            $this->dbback->select($this->_select_fields);
        }
        return $this->dbback->get($this->_tbl)->row_array();
    }

    /**
     * 根据模板类型获取模板列表
     * @param type $module 模板类型
     * @param type $uid 经纪人编号
     * @return array 返回模板信息组成的二维数组
     */
    public function find_by_module($module, $uid = '')
    {
        $this->dbback->where('flag', $this->flag($module));
        if ($uid)
        {
            $this->dbback->where('broker_id', $uid);
        }
        //查询字段
        if ($this->_select_fields)
        {
            $this->dbback->select($this->_select_fields);
        }
        $this->dbback->order_by('id', 'desc');
        return $this->dbback->get($this->_tbl)->result_array();
    }

    /**
     * 插入房源模板数据
     * @param array $insert_data 插入数据源数组
     * @return int 成功 返回插入成功后的房源id 失败 false
     */
    public function insert($insert_data)
    {
        if ($this->db->insert($this->_tbl, $insert_data))
        {
            return $this->db->insert_id();
        }
        return false;
    }

    /**
     * 更新房源模板数据
     * @param array $update_data 更新数据源数组
     * @param int $id 模板编号
     * @param int $uid 经纪人编号
     * @return int 返回更新受影响的行数
     */
    public function update($update_data, $id, $uid = '')
    {
        $this->db->where('id', $id);
        if ($uid)
        {
            $this->db->where('broker_id', $uid);
        }
        $this->db->update($this->_tbl, $update_data);
        return $this->db->affected_rows();
    }

    /**
     * 删除房源模板数据
     * @param int $id 模板编号
     * @param int $uid 经纪人编号
     * @return boolean true 成功 false 失败
     */
    public function delete($id, $uid = '')
    {
        $this->db->where('id', $id);
        {
            $this->db->where('broker_id', $uid);
        }
        $this->db->delete($this->_tbl);
        if ($this->db->affected_rows() > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

}
