forked from eatvio/eatvio-infra
same at 22.05.2023
This commit is contained in:
83
app/Http/Controllers/DietController.php
Normal file
83
app/Http/Controllers/DietController.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\User;
|
||||
use App\Models\Diet;
|
||||
use Spatie\QueryBuilder\QueryBuilder;
|
||||
use Spatie\QueryBuilder\AllowedFilter;
|
||||
|
||||
class DietController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
if ($request->has('author')) {
|
||||
$author = $request->get('author');
|
||||
$user = User::find($author);
|
||||
$diets = $user ? $user->author_of_diets : [];
|
||||
} else {
|
||||
|
||||
$hasTypes = data_get($request->get('filter'), 'contains_type', []);
|
||||
$diets = QueryBuilder::for(Diet::class)
|
||||
->allowedFilters([
|
||||
'name',
|
||||
AllowedFilter::callback('contains_type', function ($query, $v) use ($hasTypes) {
|
||||
return $query->containsType($hasTypes);
|
||||
}),
|
||||
AllowedFilter::scope('duration_min'),
|
||||
AllowedFilter::scope('duration_max'),
|
||||
AllowedFilter::scope('involved_min'),
|
||||
AllowedFilter::scope('involved_max'),
|
||||
])
|
||||
->get();
|
||||
}
|
||||
|
||||
return view(
|
||||
'diet/index',
|
||||
[
|
||||
'diets' => $diets,
|
||||
'filter' => $request->get('filter'),
|
||||
'hasTypes' => $hasTypes,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('diet/edit_form');
|
||||
}
|
||||
|
||||
public function edit(Diet $diet)
|
||||
{
|
||||
return view('diet/edit_form', ['diet' => $diet]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param \App\Models\Diet $diet
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(Diet $diet)
|
||||
{
|
||||
$expiresAt = now()->addHours(24);
|
||||
|
||||
views($diet)
|
||||
->cooldown($expiresAt)
|
||||
->record();
|
||||
|
||||
return view('diet/show', ['diet' => $diet]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user