Allow vacancies to be deleted
This commit is contained in:
parent
596d0ab648
commit
c657da951c
@ -147,4 +147,14 @@ class VacancyController extends Controller
|
|||||||
->back()
|
->back()
|
||||||
->with('success', __('Vacancy successfully updated.'));
|
->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.'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,9 @@
|
|||||||
|
|
||||||
namespace App\Observers;
|
namespace App\Observers;
|
||||||
|
|
||||||
|
use App\Application;
|
||||||
use App\Vacancy;
|
use App\Vacancy;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class VacancyObserver
|
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.
|
* Handle the vacancy "deleted" event.
|
||||||
*
|
*
|
||||||
@ -55,7 +67,7 @@ class VacancyObserver
|
|||||||
*/
|
*/
|
||||||
public function deleted(Vacancy $vacancy)
|
public function deleted(Vacancy $vacancy)
|
||||||
{
|
{
|
||||||
// TODO: Handle deletion of children's data
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -85,7 +85,7 @@ class VacancyPolicy
|
|||||||
*/
|
*/
|
||||||
public function delete(User $user, Vacancy $vacancy)
|
public function delete(User $user, Vacancy $vacancy)
|
||||||
{
|
{
|
||||||
//
|
return $user->hasAnyRole('admin', 'hiringManager');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,7 +25,9 @@ use App\Facades\Options;
|
|||||||
use App\Application;
|
use App\Application;
|
||||||
use App\Observers\ApplicationObserver;
|
use App\Observers\ApplicationObserver;
|
||||||
use App\Observers\UserObserver;
|
use App\Observers\UserObserver;
|
||||||
|
use App\Observers\VacancyObserver;
|
||||||
use App\User;
|
use App\User;
|
||||||
|
use App\Vacancy;
|
||||||
use Illuminate\Pagination\Paginator;
|
use Illuminate\Pagination\Paginator;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
@ -59,8 +61,11 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
Schema::defaultStringLength(191);
|
Schema::defaultStringLength(191);
|
||||||
Paginator::useBootstrap();
|
Paginator::useBootstrap();
|
||||||
|
|
||||||
|
// Register observers
|
||||||
User::observe(UserObserver::class);
|
User::observe(UserObserver::class);
|
||||||
Application::observe(ApplicationObserver::class);
|
Application::observe(ApplicationObserver::class);
|
||||||
|
Vacancy::observe(VacancyObserver::class);
|
||||||
|
|
||||||
$https = ($this->app->environment() != 'local');
|
$https = ($this->app->environment() != 'local');
|
||||||
$collect = true;
|
$collect = true;
|
||||||
|
@ -314,8 +314,8 @@ return [
|
|||||||
'url' => '/hr/staff-members',
|
'url' => '/hr/staff-members',
|
||||||
'can' => 'admin.stafflist',
|
'can' => 'admin.stafflist',
|
||||||
],
|
],
|
||||||
[ // players who haven't been promoted yet
|
[
|
||||||
'text' => 'm_reg_players',
|
'text' => 'Registered users',
|
||||||
'icon' => 'fas fa-fw fa-user-friends',
|
'icon' => 'fas fa-fw fa-user-friends',
|
||||||
'url' => '/hr/players',
|
'url' => '/hr/players',
|
||||||
'can' => 'admin.userlist',
|
'can' => 'admin.userlist',
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
@stop
|
@stop
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
@ -161,8 +160,6 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>{{__('messages.contactlabel_name')}}</th>
|
<th>{{__('messages.contactlabel_name')}}</th>
|
||||||
<th>{{__('messages.reusable.description')}}</th>
|
<th>{{__('messages.reusable.description')}}</th>
|
||||||
<th>{{__('messages.vacancy.discord_roleid')}}</th>
|
|
||||||
<th>{{__('messages.vacancy.permission_group')}}</th>
|
|
||||||
<th>{{__('messages.vacancy.free_slots')}}</th>
|
<th>{{__('messages.vacancy.free_slots')}}</th>
|
||||||
<th>{{__('messages.reusable.status')}}</th>
|
<th>{{__('messages.reusable.status')}}</th>
|
||||||
<th>{{__('messages.reusable.created_at')}}</th>
|
<th>{{__('messages.reusable.created_at')}}</th>
|
||||||
@ -178,8 +175,6 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>{{$vacancy->vacancyName}}</td>
|
<td>{{$vacancy->vacancyName}}</td>
|
||||||
<td>{{substr($vacancy->vacancyDescription, 0, 20)}}...</td>
|
<td>{{substr($vacancy->vacancyDescription, 0, 20)}}...</td>
|
||||||
<td><span class="badge badge-success">{{$vacancy->discordRoleID}}</span></td>
|
|
||||||
<td><span class="badge badge-success">{{$vacancy->permissionGroupName}}</span></td>
|
|
||||||
<td>{{$vacancy->vacancyCount}}</td>
|
<td>{{$vacancy->vacancyCount}}</td>
|
||||||
@if($vacancy->vacancyStatus == 'OPEN')
|
@if($vacancy->vacancyStatus == 'OPEN')
|
||||||
<td><span class="badge badge-success">{{__('messages.open')}}</span></td>
|
<td><span class="badge badge-success">{{__('messages.open')}}</span></td>
|
||||||
@ -189,14 +184,14 @@
|
|||||||
<td>{{$vacancy->created_at}}</td>
|
<td>{{$vacancy->created_at}}</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
<button type="button" class="btn btn-sm btn-warning" onclick="window.location.href='{{ route('editPosition', ['vacancy' => $vacancy->id]) }}'"><i class="fas fa-edit"></i></button>
|
<button type="button" class="btn btn-sm btn-success" onclick="window.location.href='{{ route('editPosition', ['vacancy' => $vacancy->id]) }}'"><i class="fas fa-edit"></i></button>
|
||||||
|
|
||||||
@if ($vacancy->vacancyStatus == 'OPEN')
|
@if ($vacancy->vacancyStatus == 'OPEN')
|
||||||
|
|
||||||
<form action="{{route('updatePositionAvailability', ['status' => 'close', 'vacancy' => $vacancy->id])}}" method="POST" id="closePosition" style="display: inline">
|
<form action="{{route('updatePositionAvailability', ['status' => 'close', 'vacancy' => $vacancy->id])}}" method="POST" id="closePosition" style="display: inline">
|
||||||
@csrf
|
@csrf
|
||||||
@method('PATCH')
|
@method('PATCH')
|
||||||
<button type="submit" class="btn btn-sm btn-danger"><i class="fa fa-ban"></i></button>
|
<button type="submit" class="btn btn-sm btn-warning"><i class="fa fa-lock"></i></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@else
|
@else
|
||||||
@ -204,11 +199,17 @@
|
|||||||
<form action="{{route('updatePositionAvailability', ['status' => 'open', 'vacancy' => $vacancy->id])}}" method="POST" id="openPosition" style="display: inline">
|
<form action="{{route('updatePositionAvailability', ['status' => 'open', 'vacancy' => $vacancy->id])}}" method="POST" id="openPosition" style="display: inline">
|
||||||
@csrf
|
@csrf
|
||||||
@method('PATCH')
|
@method('PATCH')
|
||||||
<button type="submit" class="btn btn-sm btn-success"><i class="fa fa-check"></i></button>
|
<button type="submit" class="btn btn-sm btn-warning"><i class="fa fa-unlock"></i></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
<form action="{{route('deletePosition', ['vacancy' => $vacancy->id])}}" method="POST" id="{{ 'deleteVacancy' . $vacancy->id }}" style="display: inline">
|
||||||
|
@csrf
|
||||||
|
@method('DELETE')
|
||||||
|
<button type="submit" class="btn btn-sm btn-danger" onclick="$('#deleteVacancyModal').modal('show')"><i class="fa fa-trash"></i></button>
|
||||||
|
</form>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@ -217,6 +218,7 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
<p class="mt-3 text-bold"><i class="fas fa-info-circle"></i> {{ __('Note: If you delete a vacancy, all its applications are also deleted') }}</p>
|
||||||
|
|
||||||
@else
|
@else
|
||||||
|
|
||||||
|
@ -262,6 +262,9 @@ Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => ['lo
|
|||||||
Route::patch('positions/update/{vacancy}', [VacancyController::class, 'update'])
|
Route::patch('positions/update/{vacancy}', [VacancyController::class, 'update'])
|
||||||
->name('updatePosition');
|
->name('updatePosition');
|
||||||
|
|
||||||
|
Route::delete('positions/delete/{vacancy}', [VacancyController::class, 'delete'])
|
||||||
|
->name('deletePosition');
|
||||||
|
|
||||||
Route::patch('positions/availability/{status}/{vacancy}', [VacancyController::class, 'updatePositionAvailability'])
|
Route::patch('positions/availability/{status}/{vacancy}', [VacancyController::class, 'updatePositionAvailability'])
|
||||||
->name('updatePositionAvailability');
|
->name('updatePositionAvailability');
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user