<?php

namespace App\Http\Controllers\Sync;

use App\Http\Controllers\Controller;
use App\Http\Controllers\Filter\SupplierFilter;
use App\Http\Middleware\CheckLogin;
use App\Http\Services\AdminUserService;
use App\Http\Services\SupplierService;
use App\Http\Services\SyncSupplierService;
use App\Model\SupplierChannelModel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;


//提供外部系统的接口
class SupplierSyncController extends BaseSyncController
{
    public function syncUniteResult(Request $request)
    {
        $resultData = $request->only([
            'group_code',
            'source_sn',
            'company_name',
            'init_nature',
            'company_nature',
            'company_category',
        ]);

        $rules = [
            "group_code" => "required",
            "source_sn" => "required",
            "company_name" => "required",
            "init_nature" => 'required',
            "company_nature" => "required",
            "company_category" => "required",
        ];

        $validator = Validator::make($rules, $rules);

        //判断联系方式的表单验证
        if ($validator->fails()) {
            $error = $validator->errors()->first();
            $this->syncResponse(-1, $error);
        }

        $result = (new SyncSupplierService())->syncSupplierToUnitedResult($resultData);
        $this->syncResponse(0, '同步一体化信息成功');

    }

    //获取供应商需要审核的数量
    public function GetNeedAuditSupplierCount(Request $request)
    {
        $userId = $request->input('user_id');
        if (!$userId) {
            $this->response(-1, 'user_id不能为空');
        }
        $codeId = (new AdminUserService())->getCodeIdsByUserId($userId);
        request()->merge([
            'user' => (object)[
                'userId' => $userId,
                'codeId' => $codeId,
            ]
        ]);
        $perms = (new CheckLogin())->getPerms();
        request()->merge(['perms' => $perms]);
        $model = new SupplierChannelModel();
        $query = $model->orderBy('update_time', 'desc');
        $filter = new SupplierFilter();
        $params = $request->except('user','perms');
        $params['need_audit'] = 1;
        $params['source_type'] = 'all';
        $query = $filter->listFilter($params, $query);
        $count = $query->count();
        $this->response(0, 'ok', $count);
    }
}