<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Host;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;

class HostController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     *
     * @param Request $request
     *
     * @return View
     */
    public function index(Request $request): View
    {
        $hosts = Host::with('user');

        // 遍历所有的搜索条件
        foreach (['name', 'module_id', 'status', 'user_id', 'price', 'managed_price', 'created_at', 'updated_at'] as $field) {
            if ($request->has($field)) {
                $hosts->where($field, 'like', '%' . $request->input($field) . '%');
            }
        }

        $hosts = $hosts->paginate(50)->withQueryString();

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

    /**
     * Show the form for editing the specified resource.
     *
     * @param Host $host
     *
     * @return View
     */
    public function edit(Host $host): View
    {
        //

        return view('admin.hosts.edit', compact('host'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param Request $request
     * @param Host    $host
     *
     * @return RedirectResponse
     */
    public function update(Request $request, Host $host): RedirectResponse
    {
        //

        $request->validate([
            // 'name' => 'required|string|max:255',
            'managed_price' => 'nullable|numeric',
        ]);

        $req = $request->only('managed_price');

        $host->update($req);

        return back()->with('success', '此主机已更新。');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param Host $host
     *
     * @return RedirectResponse
     */
    public function destroy(Host $host): RedirectResponse
    {
        $host->safeDelete();

        return redirect()->route('admin.hosts.index')->with('success', '正在排队删除此主机。');
    }
}