Files
ploi-core/app/Http/Controllers/Admin/SiteController.php
Dennis 94d50c11ef wip
2022-04-07 14:46:56 +02:00

94 lines
2.7 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Resources\Admin\SiteResource;
use App\Models\Site;
use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\ServerAttachRequest;
class SiteController extends Controller
{
public function index()
{
return inertia('Admin/Sites/Index', [
'filters' => request()->all('search'),
'sites' => SiteResource::collection(
Site::query()
->when(request()->input('search'), function ($query, $value) {
return $query->where('domain', 'like', '%' . $value . '%');
})
->with('server:id,name', 'users:id,name')
->latest()
->paginate(config('core.pagination.per_page'))
->withQueryString()
)
]);
}
public function edit($id)
{
$site = Site::findOrFail($id);
$users = $site->users()->select('id', 'name', 'email')->get()->map(function ($user) {
return [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email
];
});
return inertia('Admin/Services/Site/Edit', [
'site' => $site,
'users' => $users
]);
}
public function update(Request $request, $id)
{
$site = Site::findOrFail($id);
$site->update($request->all());
return redirect()->route('admin.services.index')->with('success', __('Server has been updated'));
}
public function destroy($id)
{
$site = Site::findOrFail($id);
$site->delete();
return redirect()->route('admin.services.index')->with('success', __('Server has been deleted'));
}
public function attach(ServerAttachRequest $request, $id)
{
/* @var $site \App\Models\Server */
$site = Site::findOrFail($id);
$user = User::where('email', $request->input('email'))->first();
if ($site->users()->where('email', $request->input('email'))->count()) {
return redirect()->back()->withErrors([
'email' => __('This user is already attached to this site')
]);
}
$site->users()->attach($user);
return redirect()->route('admin.services.sites.edit', $id)->with('success', __('User has been attached'));
}
public function detach($id, $userId)
{
$site = Site::findOrFail($id);
$site->users()->detach($userId);
return redirect()->route('admin.services.sites.edit', $site->id)->with('success', __('User has been detached'));
}
}