<?php
/**
 * 成长值获取方式操作类
 *
 * @author sun
 */
class GrowthExpWay {
    /**
     * 主数据库
     */
    private $db;

    /**
     * 从数据库
     */
    private $dbback;

    /**
     * 缓存对象
     */
    private $mc;
    
    /**
     * 关联的表名
     * @var string
     */
    private $table;
    
    /**
     * 表中包含字段
     * @var array
     */
    private static $fields = array('id','type','name','alias','is_display',
        'description','repeatable');
    
    public function __construct() {
        $container = Container::getInstance();
        $this->db = $container->get('db');
        $this->dbback = $container->get('dbback');
        $this->mc = $container->get('mc');
        $this->table = ' growth_exp_way';
    }

    /**
     * 获取方式的频道
     * 1套餐，100认证，200活跃度，300房源，400贡献，
     * 500系统赠送，1000竞投，1500兑换礼品，2000违规 
     */
    public static  $type = array(
        '1'    => '套餐',
        '100'  => '认证',
        '200'  => '活跃度',
        '300'  => '房源',
        '400'  => '贡献',
        '500'  => '系统赠送',
        '1000' => '竞投',
        '1500' => '兑换礼品',
        '2000' => '违规',);
    
    /**
     * 初始化成长值获取方式
     * @param array $fields
     * @return boolean
     */
    public function initData($fields) {
        $sql = SqlCombinHelper::insert_sql($this->table, $fields);
        return $this->db->execute($sql);
    }
    
    /**
     * 按照是否可显示的方式获取
     * @param int $isDisplay 是否展示状态位 1展示
     */
    public function findAllByDisplayable($isDisplay = 1) {
        $sql = SqlCombinHelper::select_sql($this->table, self::$fields, 
                "is_display = $isDisplay ORDER BY type,id asc");
        return $this->dbback->getAll($sql);
    }
    
    /**
     * 根据ID删除一条记录
     * @param type $id 
     * @return type
     */
    public function delDataById($id) {
        $sql = SqlCombinHelper::delete_sql($this->table, "id = $id");
        return $this->db->execute($sql);
    }
    
    /**
     * 根据类型删除方式
     * @param int $typeId 类型
     * @return boolean
     */
    public function delDataByType($typeId) {
       $sql = SqlCombinHelper::delete_sql($this->table, "type = $typeId");
        return $this->db->execute($sql);
    }
    
    /**
     * 根据获取方式类型获得成长值获取方式
     * @param int string 获取方式类型
     * @return Mixed 返回数组
     */
    public function findByType($type) {
        $sql = SqlCombinHelper::select_sql($this->table, self::$fields,
                "type ='$type'");
        return $this->dbback->getAll($sql);
    }
    
    /**
     * 根据获取方式名字查找获取方式
     * @param String $name
     * @return Mixed 返回数组
     */
    public function findByName($name) {
        $sql = SqlCombinHelper::select_sql($this->table, self::$fields, 
                "name ='$name'");
        return $this->dbback->getRow($sql);
    }
    
    /**
     * 根据别名获得获取方式
     * @param String $alias
     * @return Mixed 返回数组
     */
    public function findByAlias($alias) {
        $sql = SqlCombinHelper::select_sql($this->table, self::$fields,
                "alias ='$alias'");
        return $this->dbback->getRow($sql);
    }
    
    /**
     * 获取别名的描述文字
     * @return string 别名的描述文字
     */
    public function findDescriptionByAlias($alias) {
        $arrRow = $this->findByAlias($alias);
        return $arrRow['description'];
    }
    
    /**
     * 获取别名的项目名称
     * @return string 别名的项目名称
     */
    public function findNameByAlias($alias) {
        $arrRow = $this->findByAlias($alias);
        return $arrRow['name'];
    }
    
    /**
     * 保存数据
     * @param array $fields 数据结构
     * @return boolean
     */
    public function saveData($fields) {
        $sql = SqlCombinHelper::replace_sql($sql, $fields);
        return $this->db->execute($sql);
    }
    
    /**
     * 清空成长值获取方式表
     */
    public function emptyTable() {
        $sql = "TRUNCATE TABLE $this->table";
        $this->db->Execute($sql);
    }
}
