From c657da951c5ebf5b3d0235e0923186ded59102da Mon Sep 17 00:00:00 2001 From: Miguel N Date: Mon, 25 Oct 2021 05:45:45 +0100 Subject: [PATCH] Allow vacancies to be deleted --- app/Http/Controllers/VacancyController.php | 10 ++++++++++ app/Observers/VacancyObserver.php | 14 +++++++++++++- app/Policies/VacancyPolicy.php | 2 +- app/Providers/AppServiceProvider.php | 5 +++++ config/adminlte.php | 4 ++-- .../administration/positions.blade.php | 18 ++++++++++-------- routes/web.php | 3 +++ 7 files changed, 44 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/VacancyController.php b/app/Http/Controllers/VacancyController.php index 64e1864..1576b08 100755 --- a/app/Http/Controllers/VacancyController.php +++ b/app/Http/Controllers/VacancyController.php @@ -147,4 +147,14 @@ class VacancyController extends Controller ->back() ->with('success', __('Vacancy successfully updated.')); } + + public function delete(Request $request, Vacancy $vacancy) + { + $this->authorize('delete', $vacancy); + $vacancy->delete(); + + return redirect() + ->back() + ->with('success', __('Vacancy deleted. All applications associated with it are now gone too.')); + } } diff --git a/app/Observers/VacancyObserver.php b/app/Observers/VacancyObserver.php index c363e15..c0752c0 100755 --- a/app/Observers/VacancyObserver.php +++ b/app/Observers/VacancyObserver.php @@ -21,7 +21,9 @@ namespace App\Observers; +use App\Application; use App\Vacancy; +use Illuminate\Support\Facades\Log; class VacancyObserver { @@ -47,6 +49,16 @@ class VacancyObserver // } + public function deleting(Vacancy $vacancy) + { + foreach(Application::with('response.vacancy')->get() as $app) { + if ($app->response->vacancy->id == $vacancy->id) + { + $app->delete(); + } + } + } + /** * Handle the vacancy "deleted" event. * @@ -55,7 +67,7 @@ class VacancyObserver */ public function deleted(Vacancy $vacancy) { - // TODO: Handle deletion of children's data + } /** diff --git a/app/Policies/VacancyPolicy.php b/app/Policies/VacancyPolicy.php index 3ff57ad..9e67fe0 100755 --- a/app/Policies/VacancyPolicy.php +++ b/app/Policies/VacancyPolicy.php @@ -85,7 +85,7 @@ class VacancyPolicy */ public function delete(User $user, Vacancy $vacancy) { - // + return $user->hasAnyRole('admin', 'hiringManager'); } /** diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 51870b8..c383be6 100755 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -25,7 +25,9 @@ use App\Facades\Options; use App\Application; use App\Observers\ApplicationObserver; use App\Observers\UserObserver; +use App\Observers\VacancyObserver; use App\User; +use App\Vacancy; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Schema; @@ -59,8 +61,11 @@ class AppServiceProvider extends ServiceProvider Schema::defaultStringLength(191); Paginator::useBootstrap(); + + // Register observers User::observe(UserObserver::class); Application::observe(ApplicationObserver::class); + Vacancy::observe(VacancyObserver::class); $https = ($this->app->environment() != 'local'); $collect = true; diff --git a/config/adminlte.php b/config/adminlte.php index e2b9e49..23d0b2c 100755 --- a/config/adminlte.php +++ b/config/adminlte.php @@ -314,8 +314,8 @@ return [ 'url' => '/hr/staff-members', 'can' => 'admin.stafflist', ], - [ // players who haven't been promoted yet - 'text' => 'm_reg_players', + [ + 'text' => 'Registered users', 'icon' => 'fas fa-fw fa-user-friends', 'url' => '/hr/players', 'can' => 'admin.userlist', diff --git a/resources/views/dashboard/administration/positions.blade.php b/resources/views/dashboard/administration/positions.blade.php index 001f460..0b73f2a 100755 --- a/resources/views/dashboard/administration/positions.blade.php +++ b/resources/views/dashboard/administration/positions.blade.php @@ -33,7 +33,6 @@ @endforeach @endif - @stop @section('content') @@ -161,8 +160,6 @@ {{__('messages.contactlabel_name')}} {{__('messages.reusable.description')}} - {{__('messages.vacancy.discord_roleid')}} - {{__('messages.vacancy.permission_group')}} {{__('messages.vacancy.free_slots')}} {{__('messages.reusable.status')}} {{__('messages.reusable.created_at')}} @@ -178,8 +175,6 @@ {{$vacancy->vacancyName}} {{substr($vacancy->vacancyDescription, 0, 20)}}... - {{$vacancy->discordRoleID}} - {{$vacancy->permissionGroupName}} {{$vacancy->vacancyCount}} @if($vacancy->vacancyStatus == 'OPEN') {{__('messages.open')}} @@ -189,14 +184,14 @@ {{$vacancy->created_at}} - + @if ($vacancy->vacancyStatus == 'OPEN')
@csrf @method('PATCH') - +
@else @@ -204,11 +199,17 @@
@csrf @method('PATCH') - +
@endif +
+ @csrf + @method('DELETE') + +
+ @@ -217,6 +218,7 @@ +

{{ __('Note: If you delete a vacancy, all its applications are also deleted') }}

@else diff --git a/routes/web.php b/routes/web.php index 8630f9e..50f0a12 100755 --- a/routes/web.php +++ b/routes/web.php @@ -262,6 +262,9 @@ Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => ['lo Route::patch('positions/update/{vacancy}', [VacancyController::class, 'update']) ->name('updatePosition'); + Route::delete('positions/delete/{vacancy}', [VacancyController::class, 'delete']) + ->name('deletePosition'); + Route::patch('positions/availability/{status}/{vacancy}', [VacancyController::class, 'updatePositionAvailability']) ->name('updatePositionAvailability');