From 3ac07d8853234e33d9e6761aac4d4804e4bf9463 Mon Sep 17 00:00:00 2001 From: Masroor Ehsan Date: Tue, 31 Dec 2024 15:17:40 +0600 Subject: [PATCH] dal --- app/DAL/Studies.php | 51 +++++++++++++++++++++++++++++++++++++++++++++ composer.json | 2 +- config/app.php | 1 + 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/app/DAL/Studies.php b/app/DAL/Studies.php index 6db1ca5..09ebad6 100644 --- a/app/DAL/Studies.php +++ b/app/DAL/Studies.php @@ -2,8 +2,11 @@ namespace App\DAL; +use App\Models\Study; use Cache; use DB; +use Illuminate\Database\Query\Builder; +use Illuminate\Support\Collection; final readonly class Studies { @@ -15,4 +18,52 @@ public static function getStudyIdByOrthancUuid(string $orthanc_uuid): ?int ->where('orthanc_uuid', strtolower($orthanc_uuid)) ->value('id')); } + + private static function assignedQuery(?int $user_id = null): Builder + { + $user_id = (int) ($user_id ?? auth()->id()); + + return Study::active() + ->where('assigned_physician_id', $user_id) + ->orderBy('study_priority', 'desc') + ->orderBy('received_at', 'asc'); + } + + public static function getAllAssignedStudies(?int $user_id = null): Collection + { + $user_id = (int) ($user_id ?? auth()->id()); + $per_page = settings()->get("user.{$user_id}.pagination.per_page", config('app.pagination.per_page')); + + return Study::active() + ->where('assigned_physician_id', $user_id) + ->orderBy('study_priority', 'desc') + ->orderBy('received_at', 'asc') + ->paginate($per_page); + } + + public static function getPendingAssignedStudies(?int $user_id = null): Collection + { + $user_id = (int) ($user_id ?? auth()->id()); + $per_page = settings()->get("user.{$user_id}.pagination.per_page", config('app.pagination.per_page')); + + return Study::active() + ->where('assigned_physician_id', $user_id) + ->where('report_status', '<', ReportStatus::Finalized->value) + ->orderBy('study_priority', 'desc') + ->orderBy('received_at', 'asc') + ->paginate($per_page); + } + + public static function getCompletedAssignedStudies(?int $user_id = null): Collection + { + $user_id = (int) ($user_id ?? auth()->id()); + $per_page = settings()->get("user.{$user_id}.pagination.per_page", config('app.pagination.per_page')); + + return Study::active() + ->where('assigned_physician_id', $user_id) + ->where('report_status', '=', ReportStatus::Signed->value) + ->orderBy('study_priority', 'desc') + ->orderBy('received_at', 'asc') + ->paginate($per_page); + } } diff --git a/composer.json b/composer.json index ad0608d..25b7780 100644 --- a/composer.json +++ b/composer.json @@ -19,9 +19,9 @@ "phpoffice/phpword": "^1.3", "propaganistas/laravel-phone": "^5.3", "rap2hpoutre/fast-excel": "^5.5", + "rawilk/laravel-settings": "^3.4", "sentry/sentry-laravel": "^4.10", "spatie/laravel-permission": "^6.10", - "spatie/laravel-settings": "^3.4", "vinkla/hashids": "^12.0", "yajra/laravel-datatables-oracle": "^11.1" }, diff --git a/config/app.php b/config/app.php index 441ff47..c16043a 100644 --- a/config/app.php +++ b/config/app.php @@ -125,6 +125,7 @@ 'pagination' => [ 'study_counts' => [5, 10, 25, 50, 100], + 'per_page' => env('PAGINATION_PER_PAGE', 25), ], ];