Improve pagination

This commit is contained in:
Djery-Tom 2022-01-26 16:33:55 +01:00
parent b938338627
commit 23f8d79ff9
4 changed files with 90 additions and 9 deletions

View File

@ -1017,6 +1017,16 @@ class HealthCareSheetController extends Controller
* type="integer"
* )
* ),
* @OA\Parameter(
* parameter="pagination",
* name="pagination",
* description="pagination",
* in="query",
* required=false,
* @OA\Schema(
* type="boolean",
* )
* ),
* @OA\Response(
* response=200,
* description="OK",
@ -1044,7 +1054,8 @@ class HealthCareSheetController extends Controller
'beneficiary_id' => 'nullable|integer|exists:nh_having_rights,id',
'network_agent_id' => 'required_without:user_id|integer|exists:networks_agents,id',
'type' => 'nullable|in:CONSULTATION,EXECUTION',
'state' => 'nullable|in:UNTREATED,TREATED,ACCEPTED,TO_BILL,ALL'
'state' => 'nullable|in:UNTREATED,TREATED,ACCEPTED,TO_BILL,ALL',
'pagination' => 'nullable|boolean'
]);
$type = $request->input('type');
@ -1052,6 +1063,7 @@ class HealthCareSheetController extends Controller
$user_id = $request->input('user_id');
$beneficiary_id = $request->input('beneficiary_id');
$network_agent_id = $request->input('network_agent_id');
$pagination = $request->input('pagination');
if (!empty($user_id)) {
$query = NhInfosHealthCareSheets::where('user_id', $user_id);
@ -1107,23 +1119,34 @@ class HealthCareSheetController extends Controller
}
}
$sheets = $query->orderBy('created_at', 'DESC')->paginate($request->input('perPage', 10));
$query = $query->orderBy('created_at', 'DESC');
if ($pagination) {
$sheets = $query->paginate($request->input('perPage', 10));
} else {
$sheets = $query->get();
}
if (!empty($state) && $state == 'TO_BILL') {
// Liste des feuilles de soins a afficher pour l'execution ,
// Retirer les feuilles de soins qui n'ont ni exams ou prescriptions non soldes
$notEmptySheets = [];
foreach ($sheets->items() as $s) {
$array = $pagination ? $sheets->items() : $sheets;
foreach ($array as $s) {
if (sizeof($s->exams) == 0 && sizeof($s->prescriptions) == 0) {
continue;
}
$notEmptySheets[] = $s;
}
// $sheets = $notEmptySheets;
if ($pagination) {
$sheets->setCollection(collect($notEmptySheets));
} else {
$sheets = $notEmptySheets;
}
}
foreach ($sheets->items() as $sheet) {
$array = $pagination ? $sheets->items() : $sheets;
foreach ($array as $sheet) {
$this->formalizeHealthCareSheet($sheet);
}

View File

@ -703,6 +703,16 @@ class InsuranceSubscriptionController extends Controller
* type="integer"
* )
* ),
* @OA\Parameter(
* parameter="pagination",
* name="pagination",
* description="pagination",
* in="query",
* required=false,
* @OA\Schema(
* type="boolean",
* )
* ),
* @OA\Response(
* response=200,
* description="OK",
@ -727,10 +737,12 @@ class InsuranceSubscriptionController extends Controller
{
$this->validate($request, [
'user_id' => 'nullable|integer|exists:users,id',
'type' => 'nullable|in:ALL,ACCEPTED'
'type' => 'nullable|in:ALL,ACCEPTED',
'pagination' => 'nullable|boolean'
]);
$user = User::findOrFail($request->input('user_id'));
$currency_code = $user->network->country->currency_code;
$pagination = $request->input('pagination');
$query = NhInsurancesSubscription::with(['network:id,name', 'beneficiaries']);
@ -745,8 +757,14 @@ class InsuranceSubscriptionController extends Controller
}
}
$subscriptions = $query->paginate($request->input('perPage', 10));;
foreach ($subscriptions->items() as $subscription) {
if ($pagination) {
$subscriptions = $query->paginate($request->input('perPage', 10));
} else {
$subscriptions = $query->get();
}
$array = $pagination ? $subscriptions->items() : $subscriptions;
foreach ($array as $subscription) {
$subscription->state = trans('states.' . $subscription->state);
$subscription->insurance_action = trans('states.' . $subscription->insurance_action);
$subscription->bonus_amount = $this->toMoneyWithCurrencyCode($subscription->bonus_amount, $currency_code);

View File

@ -0,0 +1,39 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class BooleanMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$request->replace($this->transform($request->all()));
return $next($request);
}
/**
* Transform boolean strings to boolean
* @param array $parameters
* @return array
*/
private function transform(array $parameters): array
{
return collect($parameters)->map(function ($param) {
if ($param == 'true' || $param == 'false') {
return filter_var($param, FILTER_VALIDATE_BOOLEAN);
}
return $param;
})->all();
}
}

View File

@ -82,6 +82,7 @@ $app->alias('mailer', Illuminate\Contracts\Mail\MailQueue::class);
$app->middleware([
App\Http\Middleware\Localization::class,
App\Http\Middleware\BooleanMiddleware::class,
]);
$app->routeMiddleware([