<?php

/**
 * 文件功能：后台座驾独立管理控制器。
 *
 * 提供座驾列表、新增、编辑、上下架切换与删除能力，不依赖商店商品模块。
 */

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\StoreRideRequest;
use App\Http\Requests\UpdateRideRequest;
use App\Models\Ride;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;

/**
 * 后台座驾管理控制器
 * 负责独立 rides 表的后台管理流程。
 */
class RideController extends Controller
{
    /**
     * 显示座驾管理列表页。
     */
    public function index(): View
    {
        $rides = Ride::query()
            ->orderBy('sort_order')
            ->orderBy('id')
            ->get();

        return view('admin.rides.index', compact('rides'));
    }

    /**
     * 新增座驾（仅 id=1 超级站长）。
     */
    public function store(StoreRideRequest $request): RedirectResponse
    {
        $data = $request->validated();
        Ride::create($data);

        return redirect()->route('admin.rides.index')->with('success', '座驾「'.$data['name'].'」创建成功！');
    }

    /**
     * 更新座驾信息。
     */
    public function update(UpdateRideRequest $request, Ride $ride): RedirectResponse
    {
        $ride->update($request->validated());

        return redirect()->route('admin.rides.index')->with('success', '座驾「'.$ride->name.'」更新成功！');
    }

    /**
     * 切换座驾上下架状态。
     */
    public function toggle(Ride $ride): RedirectResponse
    {
        $ride->update(['is_active' => ! $ride->is_active]);
        $status = $ride->is_active ? '上架' : '下架';

        return redirect()->route('admin.rides.index')->with('success', "「{$ride->name}」已{$status}。");
    }

    /**
     * 删除座驾（仅 id=1 超级站长）。
     */
    public function destroy(Ride $ride): RedirectResponse
    {
        abort_unless(Auth::id() === 1, 403);

        $name = $ride->name;
        $ride->delete();

        return redirect()->route('admin.rides.index')->with('success', "「{$name}」已删除。");
    }
}
