<?php

namespace app\common\api;

use app\admin\controller\EnterpriseChangeRecord;
use app\common\api\CompanyApi;
use app\enterprise\model\EnterpriseRecord;
use think\facade\Db;
use app\admin\model\Enterprise;

class EnterpriseApi {

    public static function getOne($id) {
        return Enterprise::findOrEmpty($id);
    }

    public static function getSimpleList() {
        $where[] = ["active", "=", 1];
        return $list = Enterprise::where($where)->order("name", 'asc')->field("name,id")->select()->toArray();
    }

    public static function getList($request) {
        $companyId = session('user')['companyId'];
        $company_info = CompanyApi::getOne($companyId);
        $where = [];
        if ($company_info['code'] != 'super') {
            $where[] = ['type', '=', session('user')['type']];
            if (session('user')['type'] == 1) {
                $list = Db::table('sys_enterprisetype_properties')->where('companyIds', 'like', "%{$companyId}%")->select()->toArray();
                $talentType = [];
                foreach ($list as $k => $v) {
                    array_push($talentType, $v['talentType']);
                }
                $where[] = ['enterpriseTag', 'in', $talentType];
            }
        }

        $offset = trim($request->param("offset")) ?: 0;
        $limit = trim($request->param("limit")) ?: 10;

        $name = trim($request->param("name"));
        $idCard = trim($request->param("idCard"));
        $legal = trim($request->param("legal"));
        $ephone = trim($request->param("ephone"));
        $agentName = trim($request->param("agentName"));
        $agentPhone = trim($request->param("agentPhone"));
        $checkState = trim($request->param("checkState"));
        $active = trim($request->param("active"));
        $street = trim($request->param("street"));
        $enterpriseTag = trim($request->param("enterpriseTag"));
        $industryFieldNew = trim($request->param("industryFieldNew"));

        if ($name) {
            $where[] = ["name", "like", "%{$name}%"];
        }
        if ($idCard) {
            $where[] = ["idCard", "like", "%{$idCard}%"];
        }
        if ($legal) {
            $where[] = ["legal", "like", "%{$legal}%"];
        }
        if ($ephone) {
            $where[] = ["ephone", "like", "%{$ephone}%"];
        }
        if ($agentName) {
            $where[] = ["agentName", "like", "%{$agentName}%"];
        }
        if ($agentPhone) {
            $where[] = ["agentPhone", "like", "%{$agentPhone}%"];
        }
        if ($checkState) {
            $where[] = ["checkState", "=", "{$checkState}"];
        }
        if ($active) {
            $where[] = ["active", "=", "{$active}"];
        }
        if ($street) {
            $where[] = ["street", "=", "{$street}"];
        }
        if ($enterpriseTag) {
            $where[] = ["enterpriseTag", "=", "{$enterpriseTag}"];
        }
        if ($industryFieldNew) {
            $where[] = ["industryFieldNew", "=", "{$industryFieldNew}"];
        }

        $count = Enterprise::where($where)->count();
        if ($count > 0) {
            $talentTypeList = DictApi::selectByParentCode("enterprise_tag");
            $industryFieldNewList = DictApi::selectByParentCode("industry_field");
            $streetList = DictApi::selectByParentCode("street");
            //dd($talentTypeList);
            $list = Enterprise::where($where)->limit($offset, $limit)->order("createTime", 'desc')->select()->toArray();
            foreach ($list as $k => &$v) {
                unset($v['password']);
                $v['enterpriseTagName'] = $talentTypeList[$v['enterpriseTag']]; //此处旧字段为talentType,新字段为enterpriseTag，为防止数据污染与丢失，因而这样写
                $v['industryFieldNewName'] = $industryFieldNewList[$v['industryFieldNew']];
                $v['streetName'] = $streetList[$v['street']];
            }
        } else {
            $list = [];
        }
        return ["total" => $count, "rows" => $list];
    }

    public static function getRecordList($request) {
        $companyId = session('user')['companyId'];
        $company_info = CompanyApi::getOne($companyId);
        $where = [];
        if ($company_info['code'] != 'super') {
            $where[] = ['type', '=', session('user')['type']];
            if (session('user')['type'] == 1) {
                $list = Db::table('sys_enterprisetype_properties')->where('companyIds', 'like', $companyId)->select()->toArray();
                $talentType = [];
                foreach ($list as $k => $v) {
                    array_push($talentType, $v['talentType']);
                }
                $where[] = ['newEnterpriseTag', 'in', $talentType];
            }
        }

        $offset = trim($request->param("offset")) ?: 0;
        $limit = trim($request->param("limit")) ?: 10;

        $oldName = trim($request->param("oldName"));
        $oldIdCard = trim($request->param("oldIdCard"));
        $oldLegal = trim($request->param("oldLegal"));
        $oldStreet = trim($request->param("oldStreet"));
        $oldEnterpriseTag = trim($request->param("oldEnterpriseTag"));
        $oldIndustryFieldNew = trim($request->param("oldIndustryFieldNew"));
        $newName = trim($request->param("newName"));
        $newIdCard = trim($request->param("newIdCard"));
        $newAgentName = trim($request->param("newAgentName"));
        $newStreet = trim($request->param("newStreet"));
        $newEnterpriseTag = trim($request->param("newEnterpriseTag"));
        $newIndustryFieldNew = trim($request->param("newIndustryFieldNew"));
        $checkState = trim($request->param("checkState"));

        if ($oldName) {
            $where[] = ["oldName", "like", "%{$oldName}%"];
        }
        if ($oldIdCard) {
            $where[] = ["oldIdCard", "like", "%{$oldIdCard}%"];
        }
        if ($oldLegal) {
            $where[] = ["oldLegal", "like", "%{$oldLegal}%"];
        }
        if ($oldStreet) {
            $where[] = ["oldStreet", "=", "{$oldStreet}"];
        }
        if ($oldEnterpriseTag) {
            $where[] = ["oldEnterpriseTag", "=", "{$oldEnterpriseTag}"];
        }
        if ($oldIndustryFieldNew) {
            $where[] = ["oldIndustryFieldNew", "=", "{$oldIndustryFieldNew}"];
        }
        if ($newName) {
            $where[] = ["newName", "like", "%{$newName}%"];
        }
        if ($newIdCard) {
            $where[] = ["newIdCard", "like", "%{$newIdCard}%"];
        }
        if ($newAgentName) {
            $where[] = ["newAgentName", "like", "%{$newAgentName}%"];
        }
        if ($checkState) {
            $where[] = ["checkState", "=", "{$checkState}"];
        }
        if ($newStreet) {
            $where[] = ["newStreet", "=", "{$newStreet}"];
        }
        if ($newEnterpriseTag) {
            $where[] = ["newEnterpriseTag", "=", "{$newEnterpriseTag}"];
        }
        if ($newIndustryFieldNew) {
            $where[] = ["newIndustryFieldNew", "=", "{$newIndustryFieldNew}"];
        }

        $count = EnterpriseRecord::where($where)->count();
        if ($count > 0) {
            $talentTypeList = DictApi::selectByParentCode("enterprise_tag");
            $industryFieldNewList = DictApi::selectByParentCode("industry_field");
            $streetList = DictApi::selectByParentCode("street");
            $list = EnterpriseRecord::where($where)->limit($offset, $limit)->order("createTime", 'desc')->select()->toArray();
            foreach ($list as $k => &$v) {
                $v['oldStreetName'] = $streetList[$v['oldStreet']];
                $v['newStreetName'] = $streetList[$v['newStreet']];
                $v['oldEnterpriseTagName'] = $talentTypeList[$v['oldEnterpriseTag']];
                $v['newEnterpriseTagName'] = $talentTypeList[$v['newEnterpriseTag']]; //此处旧字段为talentType,新字段为enterpriseTag，为防止数据污染与丢失，因而这样写
                $v['oldIndustryFieldNewName'] = $industryFieldNewList[$v['oldIndustryFieldNew']];
                $v['newIndustryFieldNewName'] = $industryFieldNewList[$v['newIndustryFieldNew']];
            }
        } else {
            $list = [];
        }
        return ["total" => $count, "rows" => $list];
    }

    public static function updateById($data) {
        return Enterprise::update($data);
    }

    public static function getOneRecord($id) {
        return EnterpriseRecord::findOrEmpty($id);
    }

}
