<?php

namespace app\common\logic\vehicle;

use app\common\logic\BaseLogic;
use app\common\model\Company;
use app\common\model\contract\VehicleContract;
use app\common\model\vehicle\VehicleRent;
use app\common\model\vehicle\VehicleVillageApply;


class VehicleLogic extends BaseLogic
{
    public static string $url = 'http://logistics.lihaink.cn';
//    public static string $url = 'http://www.lst.local';
    public static function initiate_contract_logistic($params):array|bool {
        //查找乙方公司信息
        $party_b = Company::field('id,company_name,organization_code,master_name,master_phone,master_email,company_type')->where('id',$params['party_b'])->find();

        //镇街公司
        if(!$party_b || $party_b->isEmpty() || $party_b['company_type'] != 16){
            return ['code'=>0,'msg'=>'非镇街公司不能签约'];
        }
        //生成合同
        $result = curl_post(self::$url.'/api/signContract',[],[
            'num' => $data['num'],
            'company_id' => $party_b['id'],
            'company_name' => $party_b['company_name'],
            'company_code' => $party_b['organization_code'],
            'company_user' => $party_b['master_name'],
            'company_phone' => $party_b['master_phone'],
            'company_email' => $party_b['master_email'],
        ]);
        if($result && $result['code'] == 1){
            VehicleContract::create($result['data']);
        }
        return  $result ?? false;
    }

    public static function initiate_contract_town($params):array|bool {
        //获取申请信息
        $apply = VehicleVillageApply::where('id',$params['apply_id'])->find();
        if($apply['type'] == 0){
            //获取车辆信息
            $car = VehicleRent::where('car_id',$params['car_id'])->find();
            if($car->isEmpty() || $car['status'] == 1){
                return ['code'=>0,'msg'=>'车辆信息错误'];
            }
            //生成合同
            $carJson = json_encode(['id'=>$car['id'],'license'=>$car['car_license']]);
        }else{
            $carJson = json_encode(['license'=>$apply['car_license']]);
        }
        //获取甲方公司
        if($params['party_a'] != $apply['town_company_id']){
            return ['code'=>0,'msg'=>'镇街公司信息错误'];
        }
        $party_a = Company::field('id,company_name,organization_code,master_name,master_phone,master_email')->where('id',$params['company_id'])->find();
        //获取乙方公司
        $party_b = Company::field('id,company_name,organization_code,master_name,master_phone,master_email,company_type')->where('id',$apply['village_company_id'])->find();
        $data = [
            'contract_no' => time(),
            'company_a_name' => $party_a['company_name'],
            'company_a_code' => $party_a['company_organization_code'],
            'company_a_user' => $party_a['company_user'],
            'company_a_phone' => $party_a['company_phone'],
            'company_a_email' => $party_a['company_email'],
            'company_b_id' => $party_b['company_id'],
            'company_b_name' => $party_b['company_name'],
            'company_b_code' => $party_b['company_code'],
            'company_b_user' => $party_b['company_user'],
            'company_b_phone' => $party_b['company_phone'],
            'company_b_email' => $party_b['company_email'],
            'num' => 1,
            'cars_info' => $carJson,
            'type' => $apply['type'] == 0 ? 0 : 1,
            'status' => 0,
            'create_time' => time(),
            'update_time' => time(),
        ];
        $result = VehicleContract::create($data);
        //返回
        if($result->id){
            return ['code'=>1,'msg'=>'合同发起成功,等待审核'];
        }else{
            return ['code'=>0,'msg'=>'合同发起失败,请稍后重试'];
        }
    }
}