<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Services\LogService;
use App\Http\Services\ShippingCostRulerService;
use App\Http\Transformers\ShippingCostRulerTransformer;
use App\Model\LogModel;
use App\Model\ShippingCostRulerModel;
use Illuminate\Http\Request;

class ShippingCostRulerApiController extends Controller
{
    public function Entrance(Request $request, $id)
    {
        $this->$id($request, $id);
    }

    public function GetShippingCostRulerList($request)
    {
        $supplierId = $request->get('supplier_id');
        $limit = $request->get('limit', 10);
        $model = new ShippingCostRulerModel();
        $model->where('supplier_id', $supplierId)->paginate();
        $list = $model->where('supplier_id', $supplierId)->orderBy('id', 'desc')
            ->paginate($limit)->toArray();
        $transformer = new ShippingCostRulerTransformer();
        $list['data'] = $transformer->transformList($list['data']);
        $this->response(0, 'ok', $list['data'], $list['total']);
    }

    public function SaveShippingCostRuler($request)
    {
        $id = $request->input('id');
        $currency = $request->input('currency');
        $orderAmount = $request->input('order_amount');
        $shippingCost = $request->input('shipping_cost');
        $supplierId = $request->input('supplier_id');
        $rulerText = $request->input('ruler_text');
        if (!$supplierId) {
            $this->response(-1,'供应商id不能为空');
        }
        if (!$currency) {
            $this->response(-1,'订单币种不能为空');
        }

        if (!$orderAmount) {
            $this->response(-1,'单笔订单金额不能为空');
        }

        $ruler = $request->only([
            'id',
            'supplier_id',
            'order_amount',
            'shipping_cost',
            'currency',
            'condition',
            'ruler_text',
        ]);
        $rulerService = new ShippingCostRulerService();
        $result = $rulerService->saveShippingCostRuler($id,$ruler);
        if (!$result) {
            $this->response(-1, '操作失败');
        } else {
            $logService = new LogService();
            $content = !empty($ruler['id']) ? '修改运费规则' : '添加运费规则';
            $supplierId = $ruler['supplier_id'];
            $ruler = json_encode($ruler);
            $logService->AddLog($supplierId, LogModel::UPDATE_OPERATE, $content, $content, $ruler);
            $this->response(0, '保存成功');
        }
    }


    public function DeleteShippingCostRuler($request)
    {
        $id = $request->get('id');
        $model = new ShippingCostRulerModel();
        $ruler = $model->where('id', $id)->first()->toArray();
        $result = $model->where('id', $id)->delete();
        if ($result) {
            $logService = new LogService();
            $content = "删除运费规则";
            $logService->AddLog($ruler['supplier_id'], LogModel::UPDATE_OPERATE, '删除运费规则', $content);
            $this->response(0, '操作成功');
        }
        $this->response(-1, '操作失败');
    }
}