mirror of
https://github.com/HDInnovations/UNIT3D-Community-Edition.git
synced 2026-04-23 11:39:19 -05:00
refactor: user warnings
Use route model binding. Use mass assignment. Remove unused routes and methods.
This commit is contained in:
@@ -18,7 +18,6 @@ use App\Models\PrivateMessage;
|
||||
use App\Models\User;
|
||||
use App\Models\Warning;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
@@ -26,109 +25,56 @@ use Exception;
|
||||
*/
|
||||
class WarningController extends Controller
|
||||
{
|
||||
/**
|
||||
* Deactivate A Warning.
|
||||
*/
|
||||
public function deactivate(Request $request, int $id): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
abort_unless($request->user()->group->is_modo, 403);
|
||||
$staff = $request->user();
|
||||
$warning = Warning::findOrFail($id);
|
||||
$warning->expires_on = Carbon::now();
|
||||
$warning->active = 0;
|
||||
$warning->save();
|
||||
|
||||
// Send Private Message
|
||||
$privateMessage = new PrivateMessage();
|
||||
$privateMessage->sender_id = $staff->id;
|
||||
$privateMessage->receiver_id = $warning->user_id;
|
||||
$privateMessage->subject = 'Hit and Run Warning Deactivated';
|
||||
$privateMessage->message = $staff->username.' has decided to deactivate your active warning for torrent '.$warning->torrent.' You lucked out! [color=red][b]THIS IS AN AUTOMATED SYSTEM MESSAGE, PLEASE DO NOT REPLY![/b][/color]';
|
||||
$privateMessage->save();
|
||||
|
||||
return to_route('users.show', ['username' => $warning->warneduser->username])
|
||||
->withSuccess('Warning Was Successfully Deactivated');
|
||||
}
|
||||
|
||||
/**
|
||||
* Deactivate All Warnings.
|
||||
*/
|
||||
public function deactivateAllWarnings(Request $request, string $username): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
abort_unless($request->user()->group->is_modo, 403);
|
||||
$staff = $request->user();
|
||||
$user = User::where('username', '=', $username)->sole();
|
||||
|
||||
foreach (Warning::where('user_id', '=', $user->id)->get() as $warning) {
|
||||
$warning->expires_on = Carbon::now();
|
||||
$warning->active = 0;
|
||||
$warning->save();
|
||||
}
|
||||
|
||||
// Send Private Message
|
||||
$privateMessage = new PrivateMessage();
|
||||
$privateMessage->sender_id = $staff->id;
|
||||
$privateMessage->receiver_id = $user->id;
|
||||
$privateMessage->subject = 'All Hit and Run Warning Deactivated';
|
||||
$privateMessage->message = $staff->username.' has decided to deactivate all of your active hit and run warnings. You lucked out! [color=red][b]THIS IS AN AUTOMATED SYSTEM MESSAGE, PLEASE DO NOT REPLY![/b][/color]';
|
||||
$privateMessage->save();
|
||||
|
||||
return to_route('users.show', ['username' => $user->username])
|
||||
->withSuccess('All Warnings Were Successfully Deactivated');
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete A Warning.
|
||||
*
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function deleteWarning(Request $request, int $id): \Illuminate\Http\RedirectResponse
|
||||
public function destroy(Request $request, User $user, Warning $warning): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
abort_unless($request->user()->group->is_modo, 403);
|
||||
|
||||
$staff = $request->user();
|
||||
$warning = Warning::findOrFail($id);
|
||||
|
||||
// Send Private Message
|
||||
$privateMessage = new PrivateMessage();
|
||||
$privateMessage->sender_id = $staff->id;
|
||||
$privateMessage->receiver_id = $warning->user_id;
|
||||
$privateMessage->subject = 'Hit and Run Warning Deleted';
|
||||
$privateMessage->message = $staff->username.' has decided to delete your warning for torrent '.$warning->torrent.' You lucked out! [color=red][b]THIS IS AN AUTOMATED SYSTEM MESSAGE, PLEASE DO NOT REPLY![/b][/color]';
|
||||
$privateMessage->save();
|
||||
PrivateMessage::create([
|
||||
'sender_id' => $staff->id,
|
||||
'receiver_id' => $user->id,
|
||||
'subject' => 'Hit and Run Warning Deleted',
|
||||
'message' => $staff->username.' has decided to delete your warning for torrent '.$warning->torrent.' You lucked out! [color=red][b]THIS IS AN AUTOMATED SYSTEM MESSAGE, PLEASE DO NOT REPLY![/b][/color]',
|
||||
]);
|
||||
|
||||
$warning->update([
|
||||
'deleted_by' => $staff->id,
|
||||
]);
|
||||
|
||||
$warning->deleted_by = $staff->id;
|
||||
$warning->save();
|
||||
$warning->delete();
|
||||
|
||||
return to_route('users.show', ['username' => $warning->warneduser->username])
|
||||
return to_route('users.show', ['username' => $user->username])
|
||||
->withSuccess('Warning Was Successfully Deleted');
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete All Warnings.
|
||||
*/
|
||||
public function deleteAllWarnings(Request $request, string $username): \Illuminate\Http\RedirectResponse
|
||||
public function massDestroy(Request $request, User $user): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
abort_unless($request->user()->group->is_modo, 403);
|
||||
|
||||
$staff = $request->user();
|
||||
$user = User::where('username', '=', $username)->sole();
|
||||
|
||||
foreach (Warning::where('user_id', '=', $user->id)->get() as $warning) {
|
||||
$warning->deleted_by = $staff->id;
|
||||
$warning->save();
|
||||
$warning->delete();
|
||||
}
|
||||
$user->warnings()->update([
|
||||
'deleted_by' => $staff->id,
|
||||
]);
|
||||
|
||||
// Send Private Message
|
||||
$privateMessage = new PrivateMessage();
|
||||
$privateMessage->sender_id = $staff->id;
|
||||
$privateMessage->receiver_id = $user->id;
|
||||
$privateMessage->subject = 'All Hit and Run Warnings Deleted';
|
||||
$privateMessage->message = $staff->username.' has decided to delete all of your warnings. You lucked out! [color=red][b]THIS IS AN AUTOMATED SYSTEM MESSAGE, PLEASE DO NOT REPLY![/b][/color]';
|
||||
$privateMessage->save();
|
||||
$user->warnings()->delete();
|
||||
|
||||
PrivateMessage::create([
|
||||
'sender_id' => $staff->id,
|
||||
'receiver_id' => $user->id,
|
||||
'subject' => 'All Hit and Run Warnings Deleted',
|
||||
'message' => $staff->username.' has decided to delete all of your warnings. You lucked out! [color=red][b]THIS IS AN AUTOMATED SYSTEM MESSAGE, PLEASE DO NOT REPLY![/b][/color]',
|
||||
]);
|
||||
|
||||
return to_route('users.show', ['username' => $user->username])
|
||||
->withSuccess('All Warnings Were Successfully Deleted');
|
||||
@@ -137,14 +83,13 @@ class WarningController extends Controller
|
||||
/**
|
||||
* Restore A Soft Deleted Warning.
|
||||
*/
|
||||
public function restoreWarning(Request $request, int $id): \Illuminate\Http\RedirectResponse
|
||||
public function update(Request $request, User $user, Warning $warning): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
abort_unless($request->user()->group->is_modo, 403);
|
||||
|
||||
$warning = Warning::withTrashed()->findOrFail($id);
|
||||
$warning->restore();
|
||||
|
||||
return to_route('users.show', ['username' => $warning->warneduser->username])
|
||||
return to_route('users.show', ['username' => $user->username])
|
||||
->withSuccess('Warning Was Successfully Restored');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</div>
|
||||
<form
|
||||
class="panel__action"
|
||||
action="{{ route('massDeleteWarnings', ['username' => $user->username]) }}"
|
||||
action="{{ route('users.warnings.mass_destroy', ['user' => $user]) }}"
|
||||
method="POST"
|
||||
x-data
|
||||
>
|
||||
@@ -140,7 +140,7 @@
|
||||
<menu class="data-table__actions">
|
||||
<li class="data-table__action">
|
||||
<form
|
||||
action="{{ route('deleteWarning', ['id' => $warning->id]) }}"
|
||||
action="{{ route('users.warnings.destroy', ['user' => $user, 'warning' => $warning]) }}"
|
||||
method="POST"
|
||||
x-data
|
||||
>
|
||||
@@ -290,11 +290,12 @@
|
||||
<menu class="data-table__actions">
|
||||
<li class="data-table__action">
|
||||
<form
|
||||
action="{{ route('restoreWarning', ['id' => $warning->id]) }}"
|
||||
action="{{ route('users.warnings.update', ['user' => $user, 'warning' => $warning]) }}"
|
||||
method="POST"
|
||||
x-data
|
||||
>
|
||||
@csrf
|
||||
@method('PATCH')
|
||||
<button
|
||||
x-on:click.prevent="Swal.fire({
|
||||
title: 'Are you sure?',
|
||||
|
||||
+7
-10
@@ -547,6 +547,13 @@ Route::middleware('language')->group(function (): void {
|
||||
Route::post('/', [App\Http\Controllers\User\TransactionController::class, 'store'])->name('store');
|
||||
});
|
||||
|
||||
// Warnings
|
||||
Route::prefix('warnings')->name('warnings.')->group(function (): void {
|
||||
Route::delete('/{warning}', [App\Http\Controllers\User\WarningController::class, 'destroy'])->name('destroy');
|
||||
Route::delete('/mass-delete', [App\Http\Controllers\User\WarningController::class, 'massDestroy'])->name('mass_destroy');
|
||||
Route::patch('/{warning}', [App\Http\Controllers\User\WarningController::class, 'update'])->name('update')->withTrashed();
|
||||
});
|
||||
|
||||
// Wishlist
|
||||
Route::prefix('wishes')->name('wishes.')->group(function (): void {
|
||||
Route::get('/', [App\Http\Controllers\User\WishController::class, 'index'])->name('index');
|
||||
@@ -582,16 +589,6 @@ Route::middleware('language')->group(function (): void {
|
||||
Route::prefix('users')->group(function (): void {
|
||||
Route::post('/accept-rules', [App\Http\Controllers\User\UserController::class, 'acceptRules'])->name('accept.rules');
|
||||
});
|
||||
|
||||
// Warnings
|
||||
Route::prefix('warnings')->group(function (): void {
|
||||
Route::post('/{id}/deactivate', [App\Http\Controllers\User\WarningController::class, 'deactivate'])->name('deactivateWarning');
|
||||
Route::post('/{username}/mass-deactivate', [App\Http\Controllers\User\WarningController::class, 'deactivateAllWarnings'])->name('massDeactivateWarnings');
|
||||
Route::delete('/{id}', [App\Http\Controllers\User\WarningController::class, 'deleteWarning'])->name('deleteWarning');
|
||||
Route::delete('/{username}/mass-delete', [App\Http\Controllers\User\WarningController::class, 'deleteAllWarnings'])->name('massDeleteWarnings');
|
||||
Route::post('/{id}/restore', [App\Http\Controllers\User\WarningController::class, 'restoreWarning'])->name('restoreWarning');
|
||||
Route::get('/{username}', [App\Http\Controllers\User\WarningController::class, 'show'])->name('warnings.show');
|
||||
});
|
||||
});
|
||||
|
||||
/*
|
||||
|
||||
@@ -14,40 +14,6 @@ class WarningControllerTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function deactivate_returns_an_ok_response(): void
|
||||
{
|
||||
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
|
||||
|
||||
$warning = Warning::factory()->create();
|
||||
$user = User::factory()->create();
|
||||
|
||||
$response = $this->actingAs($user)->get(route('deactivateWarning', ['id' => $warning->id]));
|
||||
|
||||
$response->assertRedirect(withSuccess('Warning Was Successfully Deactivated'));
|
||||
|
||||
// TODO: perform additional assertions
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function deactivate_all_warnings_returns_an_ok_response(): void
|
||||
{
|
||||
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
|
||||
|
||||
$warning = Warning::factory()->create();
|
||||
$user = User::factory()->create();
|
||||
|
||||
$response = $this->actingAs($user)->get(route('massDeactivateWarnings', ['username' => $warning->username]));
|
||||
|
||||
$response->assertRedirect(withSuccess('All Warnings Were Successfully Deactivated'));
|
||||
|
||||
// TODO: perform additional assertions
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
@@ -55,10 +21,10 @@ class WarningControllerTest extends TestCase
|
||||
{
|
||||
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
|
||||
|
||||
$warning = Warning::factory()->create();
|
||||
$user = User::factory()->create();
|
||||
Warning::factory()->create(['user_id' => $user->id]);
|
||||
|
||||
$response = $this->actingAs($user)->delete(route('massDeleteWarnings', ['username' => $warning->username]));
|
||||
$response = $this->actingAs($user)->delete(route('users.warnings.massDestroy', ['user' => $user]));
|
||||
|
||||
$response->assertRedirect(withSuccess('All Warnings Were Successfully Deleted'));
|
||||
|
||||
@@ -72,10 +38,10 @@ class WarningControllerTest extends TestCase
|
||||
{
|
||||
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
|
||||
|
||||
$warning = Warning::factory()->create();
|
||||
$user = User::factory()->create();
|
||||
$warning = Warning::factory()->create(['user_id' => $user]);
|
||||
|
||||
$response = $this->actingAs($user)->delete(route('deleteWarning', ['id' => $warning->id]));
|
||||
$response = $this->actingAs($user)->delete(route('users.warnings.destroy', ['user' => $user, 'warning' => $warning]));
|
||||
|
||||
$response->assertRedirect(withSuccess('Warning Was Successfully Deleted'));
|
||||
|
||||
@@ -85,42 +51,19 @@ class WarningControllerTest extends TestCase
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function restore_warning_returns_an_ok_response(): void
|
||||
public function update_warning_returns_an_ok_response(): void
|
||||
{
|
||||
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
|
||||
|
||||
$warning = Warning::factory()->create();
|
||||
$user = User::factory()->create();
|
||||
$warning = Warning::factory()->create(['user_id' => $user]);
|
||||
|
||||
$response = $this->actingAs($user)->get(route('restoreWarning', ['id' => $warning->id]));
|
||||
$response = $this->actingAs($user)->get(route('users.warnings.update', ['user' => $user, 'warning' => $warning]));
|
||||
|
||||
$response->assertRedirect(withSuccess('Warning Was Successfully Restored'));
|
||||
|
||||
// TODO: perform additional assertions
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function show_returns_an_ok_response(): void
|
||||
{
|
||||
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
|
||||
|
||||
$warning = Warning::factory()->create();
|
||||
$user = User::factory()->create();
|
||||
|
||||
$response = $this->actingAs($user)->get(route('warnings.show', ['username' => $warning->username]));
|
||||
|
||||
$response->assertOk();
|
||||
$response->assertViewIs('user.warning.index');
|
||||
$response->assertViewHas('warnings');
|
||||
$response->assertViewHas('warningcount');
|
||||
$response->assertViewHas('softDeletedWarnings');
|
||||
$response->assertViewHas('softDeletedWarningCount');
|
||||
$response->assertViewHas('user');
|
||||
|
||||
// TODO: perform additional assertions
|
||||
}
|
||||
|
||||
// test cases...
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user