<?php

namespace App\Http\Controllers\Admin;


use App\Http\Models\Product;
use App\Http\Requests\ProductSaveRequest;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

/**
 * 引擎力产品
 * Class ProductController
 * @package App\Http\Controllers\Admin
 */
class ProductController extends Controller
{
    //产品列表
    public function index(Request $request)
    {
        if (!$request->ajax()) {
            return view('admin/product/index');
        }

        $records = Product::query()->orderByDesc('id')
            ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
        $items = $records->items();
        $statusMap = Product::STATUS_MAP;
        array_walk($items, function ($item) use ($statusMap) {
            $item->status_title = $statusMap[$item->status] ?? '';
        });
        return response()->json([
            'rows' => $items,
            'total' => $records->total()
        ]);
    }
    //切换状态
    public function toggleStatus(Request $request)
    {
        $ids = $request->input('ids');
        $toggle = $request->input('toggle');
        Product::query()->whereIn('id', $ids)->update(['status' => $toggle]);
        return response()->json(['message' => '操作成功']);
    }


    public function save(ProductSaveRequest $request, $id)
    {
        if (!$request->ajax()) {
            if ($id > 0) {
                $record = Product::query()->find($id);
            }
            return view('admin/product/save', [
                'data' => $record ?? null
            ]);
        }
        $validated = $request->validated();
        if ($id > 0) {
            $validated['status'] = 1;
        }
        Product::query()->updateOrCreate(['id' => $id], $validated);
        return response()->json(['message' => '操作成功']);
    }

    public function batchDelete(Request $request)
    {
        $ids = $request->input('ids');
        Product::query()->whereIn('id', $ids)->delete();
        return response()->json(['message' => '操作成功']);
    }

}