<?php

namespace App\Modules\Mini\Controllers;

use App\Base\BaseController;
use App\Models\Order\Order;
use App\Modules\Mini\Services\CartService;
use App\Modules\Mini\Services\FavService;
use App\Modules\Mini\Services\GoodsService;
use App\Modules\Mini\Services\OrderService;
use Faker\Provider\Image;
use Illuminate\Support\Facades\Auth;

class GoodsController extends BaseController
{
    protected GoodsService $service;

    /**
     * @param GoodsService $service
     */
    public function __construct(GoodsService $service)
    {
        $this->service = $service;
    }

    public function goods()
    {
        $params = $this->valid([
            "id" => "required",
        ]);
        return $this->ok($this->service->info($params));
    }

    public function search()
    {
        return $this->ok([
            "total" => 1,
            "page_total" => 1,
            "list" => [
                [
                    "id" => 1,
                    "name" => "商品名称",
                    "thumb" => Image::imageUrl(),
                ],
            ],
            "category" => [
                [
                    "id" => 1,
                    "thumb" => Image::imageUrl(),
                    "name" => "分类名称",
                ],
            ],
        ]);
    }

    public function fav()
    {
        $params = $this->valid([
            "id" => "required",
        ]);

        return $this->ok([
            "was_created" => app(FavService::class)->fav(Auth::id(), $params)->wasRecentlyCreated,
        ]);
    }

    public function ask()
    {
        $params = $this->valid([
            "id" => "required",
            "sku_id" => "",
            "sku_custom" => "",
            "count" => "",
        ]);
        $params['source'] = Order::SOURCE_GOODS;

        return $this->ok(app(OrderService::class)->askOne(Auth::user(), $params));
    }

    public function cart()
    {
        $params = $this->valid([
            "id" => "required",
            'count' => "required",
        ]);
        $cart = app(CartService::class)->add(Auth::user(), $params);
        return $this->ok([
            "id" => $cart->id,
        ]);

    }
}