<?php
class Service_UserPosition extends Common_Service
{
    /**
     * @var null
     */
    public static $_modelClass = null;

    /**
     * @return Table_UserPosition|null
     */
    public static function getModelInstance()
    {
        if (is_null(self::$_modelClass)) {
            self::$_modelClass = new Table_UserPosition();
        }
        return self::$_modelClass;
    }

    /**
     * @param $row
     * @return mixed
     */
    public static function add($row)
    {
        $model = self::getModelInstance();
        return $model->add($row);
    }


    /**
     * @param $row
     * @param $value
     * @param string $field
     * @return mixed
     */
    public static function update($row, $value, $field = "up_id")
    {
        $model = self::getModelInstance();
        return $model->update($row, $value, $field);
    }

    /**
     * @param $value
     * @param string $field
     * @return mixed
     */
    public static function delete($value, $field = "up_id")
    {
        $model = self::getModelInstance();
        return $model->delete($value, $field);
    }

    /**
     * @param $value
     * @param string $field
     * @param string $colums
     * @return mixed
     */
    public static function getByField($value, $field = 'up_id', $colums = "*")
    {
        $model = self::getModelInstance();
        return $model->getByField($value, $field, $colums);
    }

    /**
     * @return mixed
     */
    public static function getAll()
    {
        $model = self::getModelInstance();
        return $model->getAll();
    }

    /**
     * @param array $condition
     * @param string $type
     * @param int $pageSize
     * @param int $page
     * @param string $order
     * @return mixed
     */
    public static function getByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = "")
    {
        $model = self::getModelInstance();
        return $model->getByCondition($condition, $type, $pageSize, $page, $order);
    }

    /**
     * @param $val
     * @return array
     */
    public static function validator($val)
    {
        $validateArr = $error = array();
        
        $validateArr[] = array("name" =>EC::Lang('positionName'), "value" =>$val["up_name"], "regex" => array("require",));
        $validateArr[] = array("name" =>EC::Lang('positionNameEn'), "value" =>$val["up_name_en"], "regex" => array("require",));
        $validateArr[] = array("name" =>EC::Lang('departmentName'), "value" =>$val["ud_id"], "regex" => array("require","integer",));
        return  Common_Validator::formValidator($validateArr);
    }


    /**
     * @param array $params
     * @return array
     */
    public  function getFields()
    {
        $row = array(
        
              'E0'=>'up_id',
              'E1'=>'up_name',
              'E2'=>'up_name_en',
              'E3'=>'ud_id',
              'E4'=>'upl_id',
        );
        return $row;
    }

    /**
     * @desc 获取职位权限
     * @param string $positionId
     * @return array
     */
    public static function getUserRightByPositionId($positionId=''){
        $language = Ec::getLang(1);
        $result = array(
            "state" => 0,
            "data" => array(),
            "ids" => array(),
        );
        $showFields = array(
            'ur_name' . $language . ' as title',
            'ur_module as module',
            'um_id as menu_id',
            'ur_id as id',
        );
        $menuArr = Common_DataCache::getUserMenu();
        $result['data'] = Service_UserRight::getByCondition(array(), $showFields, 0, 0, array('um_id', 'ur_module', 'ur_sort'));
        foreach ($result['data'] as $key => $val) {
            $result['data'][$key]['menu'] = isset($menuArr[$val['menu_id']]['um_title' . $language]) ? $menuArr[$val['menu_id']]['um_title' . $language] : '';
        }
        $rightUraIdArr = array();
        if (!empty($positionId)) {
                $rightAction = Service_UserPositionRightMap::getByCondition(array('up_id' => $positionId), 'ur_id');
                if (!empty($rightAction)) {
                    foreach ($rightAction as $v) {
                        $rightUraIdArr[$v['ur_id']] = $v['ur_id'];
                    }
                }
        }
        $result['ids'] = $rightUraIdArr;
        $result['state'] = 1;
        return $result;
    }

    /**
     * @desc 只获取用户已有权限
     * @用于绑定快捷导航
     * @param string $userId
     * @return array
     */
    public static function getUserRightCustomByPositionId($positionId=''){
        $result=self::getUserRightByPositionId($positionId);
        $data=array();
        $quickArr=array();
        if(isset($result['ids']) && !empty($result['ids']) ){
            $quickData=Service_UserRightHeaderMap::getByCondition(array('refer_id'=>$positionId,'urhm_type'=>'0'),array('ur_id'));
            //已选择的
            if(!empty($quickData)){
                foreach($quickData as $k =>$v){
                    $quickArr[$v['ur_id']]=$v['ur_id'];
                }
            }
            foreach($result['data'] as $key =>$val){
                $val['selected']=isset($quickArr[$val['id']])?'1':'0';
                if(isset($result['ids'][$val['id']])){
                    $data[$key]=$val;
                }
            }
        }
        unset($result);
        return $data;
    }

}