Skip to content

Commit

Permalink
Merge pull request #19 from Draginraptor/submission_new_old_sorting
Browse files Browse the repository at this point in the history
Add newest/oldest sorting for submissions
  • Loading branch information
itinerare authored Oct 14, 2020
2 parents 0deb8c4 + c262fe7 commit a3e40e3
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 15 deletions.
39 changes: 33 additions & 6 deletions app/Http/Controllers/Admin/SubmissionController.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,25 @@ class SubmissionController extends Controller
public function getSubmissionIndex(Request $request, $status = null)
{
$submissions = Submission::with('prompt')->where('status', $status ? ucfirst($status) : 'Pending')->whereNotNull('prompt_id');
if($request->get('prompt_category_id'))
$submissions->whereHas('prompt', function($query) use ($request) {
$query->where('prompt_category_id', $request->get('prompt_category_id'));
$data = $request->only(['prompt_category_id', 'sort']);
if(isset($data['prompt_category_id']) && $data['prompt_category_id'] != 'none')
$submissions->whereHas('prompt', function($query) use ($data) {
$query->where('prompt_category_id', $data['prompt_category_id']);
});
if(isset($data['sort']))
{
switch($data['sort']) {
case 'newest':
$submissions->sortNewest();
break;
case 'oldest':
$submissions->sortOldest();
break;
}
}
else $submissions->sortOldest();
return view('admin.submissions.index', [
'submissions' => $submissions->orderBy('id', 'DESC')->paginate(30)->appends($request->query()),
'submissions' => $submissions->paginate(30)->appends($request->query()),
'categories' => ['none' => 'Any Category'] + PromptCategory::orderBy('sort', 'DESC')->pluck('name', 'id')->toArray(),
'isClaims' => false
]);
Expand Down Expand Up @@ -65,10 +78,24 @@ public function getSubmission($id)
* @param string $status
* @return \Illuminate\Contracts\Support\Renderable
*/
public function getClaimIndex($status = null)
public function getClaimIndex(Request $request, $status = null)
{
$submissions = Submission::where('status', $status ? ucfirst($status) : 'Pending')->whereNull('prompt_id');
$data = $request->only(['sort']);
if(isset($data['sort']))
{
switch($data['sort']) {
case 'newest':
$submissions->sortNewest();
break;
case 'oldest':
$submissions->sortOldest();
break;
}
}
else $submissions->sortOldest();
return view('admin.submissions.index', [
'submissions' => Submission::where('status', $status ? ucfirst($status) : 'Pending')->whereNull('prompt_id')->orderBy('id', 'DESC')->paginate(30),
'submissions' => $submissions->paginate(30),
'isClaims' => true
]);
}
Expand Down
11 changes: 11 additions & 0 deletions app/Models/Submission/Submission.php
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,17 @@ public function scopeSortOldest($query)
return $query->orderBy('id');
}

/**
* Scope a query to sort submissions by newest first.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeSortNewest($query)
{
return $query->orderBy('id', 'DESC');
}

/**********************************************************************************************
ACCESSORS
Expand Down
26 changes: 17 additions & 9 deletions resources/views/admin/submissions/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,26 @@
</li>
</ul>

@if(!$isClaims)
<div>
{!! Form::open(['method' => 'GET', 'class' => 'form-inline justify-content-end']) !!}
<div class="form-group mr-sm-3 mb-3">
{!! Form::open(['method' => 'GET', 'class' => 'form-inline justify-content-end']) !!}
<div class="form-inline justify-content-end">
@if(!$isClaims)
<div class="form-group ml-3 mb-3">
{!! Form::select('prompt_category_id', $categories, Request::get('prompt_category_id'), ['class' => 'form-control']) !!}
</div>
<div class="form-group mb-3">
{!! Form::submit('Search', ['class' => 'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
@endif
</div>
@endif
<div class="form-inline justify-content-end">
<div class="form-group ml-3 mb-3">
{!! Form::select('sort', [
'newest' => 'Newest First',
'oldest' => 'Oldest First',
], Request::get('sort') ? : 'oldest', ['class' => 'form-control']) !!}
</div>
<div class="form-group ml-3 mb-3">
{!! Form::submit('Search', ['class' => 'btn btn-primary']) !!}
</div>
</div>
{!! Form::close() !!}

{!! $submissions->render() !!}
<table>
Expand Down

0 comments on commit a3e40e3

Please sign in to comment.