83 lines
2.0 KiB
PHP
83 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Device;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Validation\Rule;
|
|
use Illuminate\Support\Facades\Gate;
|
|
use Illuminate\Http\RedirectResponse;
|
|
|
|
class DeviceController extends Controller
|
|
{
|
|
|
|
public function index()
|
|
{
|
|
return view('devices.index', [
|
|
'devices' => Device::all()
|
|
]);
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$this->authorize('admin-only');
|
|
return view('devices.create');
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$this->authorize('admin-only');
|
|
$formFields = $request->validate([
|
|
'title' => 'required',
|
|
'device_type' => 'required',
|
|
'description' => 'required',
|
|
'accessories' => 'required',
|
|
'rz_username_buyer' => ['required', Rule::unique('devices', 'device_id')],
|
|
'serial_number' => 'required',
|
|
'image_url' => 'required',
|
|
]);
|
|
|
|
Device::create($formFields);
|
|
|
|
return redirect('/devices');
|
|
}
|
|
|
|
public function edit(Device $device)
|
|
{
|
|
$this->authorize('admin-only');
|
|
return view('devices.edit', ['device' => $device]);
|
|
}
|
|
|
|
public function update(Device $device, Request $request)
|
|
{
|
|
$this->authorize('admin-only');
|
|
$formFields = $request->validate([
|
|
'title' => 'required',
|
|
'device_type' => 'required',
|
|
'description' => 'required',
|
|
'accessories' => 'required',
|
|
'rz_username_buyer' => 'required',
|
|
'serial_number' => 'required',
|
|
'image_url' => 'required',
|
|
]);
|
|
|
|
$device->update($formFields);
|
|
|
|
return back();
|
|
}
|
|
|
|
public function destroy(Device $device): RedirectResponse
|
|
{
|
|
$this->authorize('admin-only');
|
|
$device->delete();
|
|
return redirect('devices');
|
|
}
|
|
|
|
public function show(Device $device)
|
|
{
|
|
return view('devices.show', [
|
|
'device' => $device
|
|
]);
|
|
}
|
|
}
|