<?php

namespace App\Http\Controllers\Api;

use App\Http\ApiHelper\ApiCode;
use App\Http\Requests\UserRegister;
use App\Http\Services\CartService;
use App\Http\Services\InquiryService;
use App\Http\Services\OrderService;
use App\Models\User;
use Facade\Ignition\Support\Packagist\Package;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Facades\Validator;

//订单控制器
class OrderApiController extends Controller
{

    //生成订单
    public function addOrder(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'billing_address_id' => 'required|string',
            'shipping_address_id' => 'required|string',
            'items' => 'required|string',
        ], [
            'items.min' => 'items must be at least 1 characters long.'
        ]);

        if ($validator->fails()) {
            return $this->setError($validator->errors()->first());
        }
        $data = $request->only([
            'items',
            'billing_address_id',
            'shipping_address_id',
        ]);

        $order_id = OrderService::addOrder($data, $request->user->id);
        return !$order_id ? $this->setError('Add order failed , please contact administrator'):$this->setSuccessData($order_id,0,ApiCode::API_CODE_SUCCESS,'Add order success');
    }

    //订单列表
    public function orderLists(Request $request){
        $result = OrderService::orderLists($request->user->id,$request->input());
        return $this->setSuccessData($result);
    }

    //取消订单
    public function cancelOrder(Request $request){
        $result = OrderService::cancelOrder($request->user->id,$request->input("order_id"));
        return $result[0] > 0 ? $this->setError($result[1],$result[0]):$this->setSuccessData($result[1]);
    }

    //订单详情
    public function orderDetail(Request $request){
        $result = OrderService::orderDetail($request->user->id,$request->input("order_id"));
        return $this->setSuccessData($result);
    }

    //单个订单售后列表
    public function orderServiceDetail(Request $request){
        $result = OrderService::orderServiceDetail($request->user->id,$request->input("order_id"));
        return $this->setSuccessData($result);
    }

}