Add "All Applications" page

This commit is contained in:
Miguel Nogueira 2020-07-11 02:43:59 +01:00
parent bbe3001157
commit 035c9399a6
8 changed files with 244 additions and 8 deletions

View File

@ -119,13 +119,14 @@ class Install extends Command
$this->info('>> Saved configuration settings!');
$this->info('>> Preparing database...');
$this->callSilent('config:cache');
$this->call('migrate');
$this->call('db:seed');
touch($basePath . '/INSTALLED');
$this->call('up');
$this->info('>> All done! Visit ' . $baseURL . ' to start using your brand new installation of Raspberry Teams!');
$this->info('>> All done! Visit ' . $basePath . ' to start using your brand new installation of Raspberry Teams!');
}
else

View File

@ -45,10 +45,9 @@ class ApplicationController extends Controller
}
public function showUserApp(Request $request, $applicationID)
{
// TODO: Inject it instead (do this where there is no injection, not just here)
$application = Application::find($applicationID);
$this->authorize('view', $application);
@ -77,6 +76,12 @@ class ApplicationController extends Controller
public function showAllApps()
{
return view('dashboard.appmanagement.all')
->with('applications', Application::paginate(6));
}
public function showAllPendingApps()
{
@ -87,9 +92,6 @@ class ApplicationController extends Controller
}
public function showPendingInterview()
{
$this->authorize('viewAny', Application::class);

View File

@ -251,6 +251,12 @@ return [
'header' => 'Application Management',
'can' => ['applications.view.all', 'applications.vote']
],
[
'text' => 'All applications',
'url' => 'applications/staff/all',
'icon' => 'fas fa-list-ol',
'can' => 'applications.view.all'
],
[
'text' => 'Outstanding Applications',
'url' => '/applications/staff/outstanding',
@ -521,6 +527,7 @@ return [
'location' => 'https://cdn.jsdelivr.net/npm/fullcalendar@5.0.1/main.min.css'
]
]
]
],
],
];

0
install.sh Normal file → Executable file
View File

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -0,0 +1,217 @@
@extends('adminlte::page')
@section('title', 'Raspberry Network | Profile')
@section('content_header')
<h4>Application Management / All Applications</h4>
@stop
@section('js')
<script type="text/javascript" src="/js/app.js"></script>
@stop
@section('content')
<div class="row">
<div class="col">
<div class="callout callout-info">
<div class="row">
<div class="col-3">
<img src="/img/applications_all.svg" alt="Applications illustration" class="img-responsive" width="200px"/>
</div>
<div class="col">
<h3><i class="fas fa-info-circle"></i> You're looking at all applications ever received</h3>
<p>
Here, you have quick and easy access to all applications ever received by the system.
</p>
</div>
</div>
</div>
</div>
</div>
<div class="row mt-5">
<div class="col">
<div class="card">
<!-- MAIN CONTENT - APPS AND PICS -->
<div class="card-header">
<div class="row">
<div class="col-3">
<h3>All applications</h3>
</div>
<div class="col">
<div class="navbtn right" style="whitespace: nowrap">
<button type="button" class="btn btn-sm btn-primary" onclick="window.location.href='{{ route('staffPendingApps') }}'"><i class="far fa-folder-open"></i> Outstanding Applications</button>
<button type="button" class="btn btn-sm btn-primary" onclick="window.location.href='{{ route('pendingInterview') }}'"><i class="fas fa-microphone-alt"></i> Interview Queue</button>
<button type="button" class="btn btn-sm btn-primary" onclick="window.location.href='{{ route('peerReview') }}'"><i class="fas fa-search"></i> Peer Review</button>
</div>
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-3 center">
<img src="/img/placeholders.svg" alt="Placeholder illustration" class="img-responsive" width="200px"/>
</div>
<div class="col">
@if (!$applications->isEmpty())
<table class="table table-borderless" style="whitespace: nowrap">
<thead>
<tr>
<th>#</th>
<th>Applicant</th>
<th>Status</th>
<th>Date</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach($applications as $application)
<tr>
<td>{{ $application->id }}</td>
<td><a href="{{ route('showSingleProfile', ['user' => $application->user->id]) }}">{{ $application->user->name }}</a></td>
<td>
@switch($application->applicationStatus)
@case('STAGE_SUBMITTED')
<span class="badge badge-primary"><i class="far fa-clock"></i> Outstanding (Submitted)</span>
@break
@case('STAGE_PEERAPPROVAL')
<span class="badge badge-warning"><i class="fas fa-vote-yea"></i> Peer Approval</span>
@break
@case('STAGE_INTERVIEW')
<span class="badge badge-warning"><i class="fas fa-microphone-alt"></i> Interview</span>
@break
@case('STAGE_INTERVIEW_SCHEDULED')
<span class="badge badge-warning"><i class="far fa-clock"></i>Interview Scheduled</span>
@break
@case('APPROVED')
<span class="badge badge-success"><i class="fas fa-check"></i> Approved</span>
@break
@case('DENIED')
<span class="badge badge-danger"><i class="fas fa-times"></i> Denied</span>
@break;
@default
<span class="badge badge-secondary"><i class="fas fa-question-circle"></i> Unknown</span>
@endswitch
</td>
<td>{{ $application->created_at }}</td>
<td>
<button type="button" class="btn btn-success btn-sm" onclick="window.location.href='{{ route('showUserApp', ['id' => $application->id]) }}'"><i class="fas fa-eye"></i> View</button>
</td>
</tr>
@endforeach
</tbody>
</table>
@else
<div class="alert alert-warning">
<h3><i class="fas fa-question-circle"></i> There are no applications here</h3>
<p>
We couldn't find any applications. Maybe no one has applied yet?
Please try again later.
</p>
</div>
@endif
</div>
</div>
</div>
<!-- end main content card -->
</div>
@if (!$applications->isEmpty() && isset($applications->links))
<div class="card-footer">
{{ $applications->links }}
</div>
@endif
</div>
</div>
@stop

View File

@ -40,7 +40,6 @@ Route::group(['middleware' => ['auth', 'forcelogout']], function(){
->name('showUserApps')
->middleware('eligibility');
Route::get('/view/{id}', 'ApplicationController@showUserApp')
->name('showUserApp');
@ -58,16 +57,24 @@ Route::group(['middleware' => ['auth', 'forcelogout']], function(){
Route::patch('/update/{id}/{newStatus}', 'ApplicationController@updateApplicationStatus')
->name('updateApplicationStatus');
Route::get('/staff/all', 'ApplicationController@showAllApps')
->name('allApplications');
Route::get('/staff/outstanding', 'ApplicationController@showAllPendingApps')
->name('staffPendingApps');
Route::get('/staff/peer-review', 'ApplicationController@showPeerReview')
->name('peerReview');
Route::get('/staff/pending-interview', 'ApplicationController@showPendingInterview')
->name('pendingInterview');
Route::post('{id}/staff/vote', 'VoteController@vote')
->name('voteApplication');