Skip to content

Commit 0db7deb

Browse files
committed
Add mount update and deletion services, add MountController@update and MountController@delete
1 parent 77150b2 commit 0db7deb

File tree

6 files changed

+154
-11
lines changed

6 files changed

+154
-11
lines changed

app/Http/Controllers/Admin/MountController.php

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22

33
namespace Pterodactyl\Http\Controllers\Admin;
44

5+
use Pterodactyl\Models\Mount;
56
use Prologue\Alerts\AlertsMessageBag;
7+
use Pterodactyl\Exceptions\DisplayException;
68
use Pterodactyl\Http\Controllers\Controller;
7-
use Pterodactyl\Http\Requests\Admin\MountFormRequest;
9+
use Pterodactyl\Services\Mounts\MountUpdateService;
810
use Pterodactyl\Services\Mounts\MountCreationService;
11+
use Pterodactyl\Services\Mounts\MountDeletionService;
12+
use Pterodactyl\Http\Requests\Admin\MountFormRequest;
913
use Pterodactyl\Repositories\Eloquent\MountRepository;
1014

1115
class MountController extends Controller
@@ -21,25 +25,41 @@ class MountController extends Controller
2125
protected $repository;
2226

2327
/**
24-
* @var \Pterodactyl\Services\Locations\LocationCreationService
28+
* @var \Pterodactyl\Services\Mounts\MountCreationService
2529
*/
2630
protected $creationService;
2731

32+
/**
33+
* @var \Pterodactyl\Services\Mounts\MountDeletionService
34+
*/
35+
protected $deletionService;
36+
37+
/**
38+
* @var \Pterodactyl\Services\Mounts\MountUpdateService
39+
*/
40+
protected $updateService;
41+
2842
/**
2943
* MountController constructor.
3044
*
3145
* @param \Prologue\Alerts\AlertsMessageBag $alert
3246
* @param \Pterodactyl\Repositories\Eloquent\MountRepository $repository
3347
* @param \Pterodactyl\Services\Mounts\MountCreationService $creationService
48+
* @param \Pterodactyl\Services\Mounts\MountDeletionService $deletionService
49+
* @param \Pterodactyl\Services\Mounts\MountUpdateService $updateService
3450
*/
3551
public function __construct(
3652
AlertsMessageBag $alert,
3753
MountRepository $repository,
38-
MountCreationService $creationService
54+
MountCreationService $creationService,
55+
MountDeletionService $deletionService,
56+
MountUpdateService $updateService
3957
) {
4058
$this->alert = $alert;
4159
$this->repository = $repository;
4260
$this->creationService = $creationService;
61+
$this->deletionService = $deletionService;
62+
$this->updateService = $updateService;
4363
}
4464

4565
/**
@@ -82,7 +102,48 @@ public function create(MountFormRequest $request)
82102
$mount = $this->creationService->handle($request->normalize());
83103
$this->alert->success('Mount was created successfully.')->flash();
84104

85-
//return redirect()->route('admin.mounts.view', $mount->id);
86-
return redirect()->route('admin.mounts');
105+
return redirect()->route('admin.mounts.view', $mount->id);
106+
}
107+
108+
/**
109+
* Handle request to update or delete location.
110+
*
111+
* @param \Pterodactyl\Http\Requests\Admin\MountFormRequest $request
112+
* @param \Pterodactyl\Models\Mount $mount
113+
* @return \Illuminate\Http\RedirectResponse
114+
*
115+
* @throws \Throwable
116+
*/
117+
public function update(MountFormRequest $request, Mount $mount)
118+
{
119+
if ($request->input('action') === 'delete') {
120+
return $this->delete($mount);
121+
}
122+
123+
$this->updateService->handle($mount->id, $request->normalize());
124+
$this->alert->success('Mount was updated successfully.')->flash();
125+
126+
return redirect()->route('admin.mounts.view', $mount->id);
127+
}
128+
129+
/**
130+
* Delete a location from the system.
131+
*
132+
* @param \Pterodactyl\Models\Mount $mount
133+
* @return \Illuminate\Http\RedirectResponse
134+
*
135+
* @throws \Exception
136+
*/
137+
public function delete(Mount $mount)
138+
{
139+
try {
140+
$this->deletionService->handle($mount->id);
141+
142+
return redirect()->route('admin.mounts');
143+
} catch (DisplayException $ex) {
144+
$this->alert->danger($ex->getMessage())->flash();
145+
}
146+
147+
return redirect()->route('admin.mounts.view', $mount->id);
87148
}
88149
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace Pterodactyl\Services\Mounts;
4+
5+
use Webmozart\Assert\Assert;
6+
use Pterodactyl\Models\Mount;
7+
use Pterodactyl\Repositories\Eloquent\MountRepository;
8+
9+
class MountDeletionService
10+
{
11+
/**
12+
* @var \Pterodactyl\Repositories\Eloquent\MountRepository
13+
*/
14+
protected $repository;
15+
16+
/**
17+
* MountDeletionService constructor.
18+
*
19+
* @param \Pterodactyl\Repositories\Eloquent\MountRepository $repository
20+
*/
21+
public function __construct(MountRepository $repository)
22+
{
23+
$this->repository = $repository;
24+
}
25+
26+
/**
27+
* Delete an existing location.
28+
*
29+
* @param int|\Pterodactyl\Models\Mount $mount
30+
* @return int|null
31+
*/
32+
public function handle($mount)
33+
{
34+
$mount = ($mount instanceof Mount) ? $mount->id : $mount;
35+
36+
Assert::integerish($mount, 'First argument passed to handle must be numeric or an instance of ' . Mount::class . ', received %s.');
37+
38+
return $this->repository->delete($mount);
39+
}
40+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
namespace Pterodactyl\Services\Mounts;
4+
5+
use Pterodactyl\Models\Mount;
6+
use Pterodactyl\Repositories\Eloquent\MountRepository;
7+
8+
class MountUpdateService
9+
{
10+
/**
11+
* @var \Pterodactyl\Repositories\Eloquent\MountRepository
12+
*/
13+
protected $repository;
14+
15+
/**
16+
* MountUpdateService constructor.
17+
*
18+
* @param \Pterodactyl\Repositories\Eloquent\MountRepository $repository
19+
*/
20+
public function __construct(MountRepository $repository)
21+
{
22+
$this->repository = $repository;
23+
}
24+
25+
/**
26+
* Update an existing location.
27+
*
28+
* @param int|\Pterodactyl\Models\Mount $mount
29+
* @param array $data
30+
* @return \Pterodactyl\Models\Mount
31+
*
32+
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
33+
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
34+
*/
35+
public function handle($mount, array $data)
36+
{
37+
$mount = ($mount instanceof Mount) ? $mount->id : $mount;
38+
39+
return $this->repository->update($mount, $data);
40+
}
41+
}

resources/views/admin/mounts/index.blade.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
<tr>
4848
<td><code>{{ $mount->id }}</code></td>
4949
<td><a href="{{ route('admin.mounts.view', $mount->id) }}">{{ $mount->name }}</a></td>
50-
<td>{{ $mount->source }}</td>
51-
<td>{{ $mount->target }}</td>
50+
<td><code>{{ $mount->source }}</code></td>
51+
<td><code>{{ $mount->target }}</code></td>
5252
<td class="text-center">{{ $mount->eggs_count }}</td>
5353
<td class="text-center">{{ $mount->nodes_count }}</td>
5454
<td class="text-center">{{ $mount->servers_count }}</td>

resources/views/admin/mounts/view.blade.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@
5757

5858
<div>
5959
<div class="radio radio-success radio-inline">
60-
<input type="radio" id="pReadOnlyFalse" name="read_only" value="0" @if($mount->read_only) checked @endif>
60+
<input type="radio" id="pReadOnlyFalse" name="read_only" value="0" @if(!$mount->read_only) checked @endif>
6161
<label for="pReadOnlyFalse">False</label>
6262
</div>
6363

6464
<div class="radio radio-warning radio-inline">
65-
<input type="radio" id="pReadOnly" name="read_only" value="1" @if(!$mount->read_only) checked @endif>
65+
<input type="radio" id="pReadOnly" name="read_only" value="1" @if($mount->read_only) checked @endif>
6666
<label for="pReadOnly">True</label>
6767
</div>
6868
</div>
@@ -73,12 +73,12 @@
7373

7474
<div>
7575
<div class="radio radio-success radio-inline">
76-
<input type="radio" id="pUserMountableFalse" name="user_mountable" value="0" @if($mount->user_mountable) checked @endif>
76+
<input type="radio" id="pUserMountableFalse" name="user_mountable" value="0" @if(!$mount->user_mountable) checked @endif>
7777
<label for="pUserMountableFalse">False</label>
7878
</div>
7979

8080
<div class="radio radio-warning radio-inline">
81-
<input type="radio" id="pUserMountable" name="user_mountable" value="1" @if(!$mount->user_mountable) checked @endif>
81+
<input type="radio" id="pUserMountable" name="user_mountable" value="1" @if($mount->user_mountable) checked @endif>
8282
<label for="pUserMountable">True</label>
8383
</div>
8484
</div>

routes/admin.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@
178178
Route::get('/view/{mount}', 'MountController@view')->name('admin.mounts.view');
179179

180180
Route::post('/', 'MountController@create');
181+
Route::patch('/view/{mount}', 'MountController@update');
181182
});
182183

183184
/*

0 commit comments

Comments
 (0)