diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 92f90d63..26e2a026 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -16,9 +16,20 @@ class ItemController extends Controller { public function index( Request $request ) { - $Items = Item::when( $request->has( 'name' ) && $request->name != '' , function ( $query ) use ( $request ) { + $Items = Item::with( [ + 'user' , + 'package' , + 'user.medical_center' => function ( $query ) { + $query->select( 'id' , 'name' , 'address' , 'phone_number' ); + } , + ] )->when( $request->has( 'name' ) && $request->name != '' , function ( $query ) use ( $request ) { $query->where( 'name' , 'LIKE' , '%' . $request->name . '%' ); - } ) + } ) + ->when($request->filled('user_name'), function ($query) use ($request) { + $query->whereHas('user', function ($q) use ($request) { + $q->where('users.name', 'LIKE', '%' . $request->user_name . '%'); + }); + }) ->when( $request->has( 'udi' ) && $request->udi != '' , function ( $query ) use ( $request ) { $query->where( 'udi' , 'LIKE' , '%' . $request->udi . '%' ); } ) @@ -35,14 +46,7 @@ class ItemController extends Controller $query->whereHas( 'user' , function ( $query ) use ( $request ) { $query->where( 'medical_center_id' , $request->medical_center_id ); } ); - } ) - ->with( [ - 'user' , - 'package' , - 'user.medical_center' => function ( $query ) { - $query->select( 'id' , 'name' , 'address' , 'phone_number' ); - } , - ] ); + } ); $user = auth( 'api' )->user(); if ( $user->hasRole( 'User' ) or $user->hasRole( 'Supervisor' ) ) { diff --git a/app/Http/Controllers/TestResultController.php b/app/Http/Controllers/TestResultController.php index cc715189..fa8d2527 100644 --- a/app/Http/Controllers/TestResultController.php +++ b/app/Http/Controllers/TestResultController.php @@ -218,6 +218,7 @@ class TestResultController extends Controller public function edit(TestResult $TestResult) { + $TestResult->load('media'); foreach ($TestResult->input_values as $key => $value) { $input = $value->input; if ($input->type == 'Checkbox' || $input->type == 'Select' || $input['type'] == 'Radiobutton') { @@ -391,7 +392,7 @@ class TestResultController extends Controller public function showTestResult($id) { - $TestResult = TestResult::with('input_values', 'user.medical_center', 'test_type')->select('result', 'verified', 'device_id', 'user_id', 'id', 'test_type_id', 'created_at')->findOrFail($id); + $TestResult = TestResult::with('input_values', 'user.medical_center', 'test_type','media')->select('result', 'verified', 'device_id', 'user_id', 'id', 'test_type_id', 'created_at')->findOrFail($id); $options = []; foreach ($TestResult->input_values as $value) { $input = $value->input; diff --git a/app/Http/Controllers/TestTypeController.php b/app/Http/Controllers/TestTypeController.php index 416e6593..09dd6241 100644 --- a/app/Http/Controllers/TestTypeController.php +++ b/app/Http/Controllers/TestTypeController.php @@ -412,9 +412,9 @@ class TestTypeController extends Controller return MessageResponse::error(); } - public function listNames() + public function list() { - $testType = TestType::pluck('name'); + $testType = TestType::select('id','name')->get(); return MessageResponse::data($testType); } diff --git a/app/Repositories/PackageRepository.php b/app/Repositories/PackageRepository.php index 9e756c55..233a8017 100644 --- a/app/Repositories/PackageRepository.php +++ b/app/Repositories/PackageRepository.php @@ -10,9 +10,19 @@ class PackageRepository implements PackageRepositoryInterface { public function indexForUser($request, $user) { - return Package::when($request->has('name') && $request->name != '', function ($query) use ($request) { - $query->where('name', 'LIKE', '%'.$request->name.'%'); - }) + return Package::with([ + 'user', + 'user.medical_center' => function ($query) { + $query->select('id', 'name', 'address', 'phone_number'); + }, + 'items' + ]) + ->tap(function ($query) use ($request) { + $this->applyUserNameFilter($query, $request); + }) + ->when($request->has('name') && $request->name != '', function ($query) use ($request) { + $query->where('name', 'LIKE', '%'.$request->name.'%'); + }) ->when($request->has('package_id') && $request->package_id != '', function ($query) use ($request) { $query->where('id', $request->package_id); }) @@ -21,13 +31,6 @@ class PackageRepository implements PackageRepositoryInterface $query->where('medical_center_id', $request->medical_center_id); }); }) - ->with([ - 'user', - 'user.medical_center' => function ($query) { - $query->select('id', 'name', 'address', 'phone_number'); - }, - 'items' - ]) ->whereHas('user', function ($query) use ($user) { $query->where('users.medical_center_id', $user->medical_center_id); }) @@ -38,9 +41,19 @@ class PackageRepository implements PackageRepositoryInterface public function indexForSupervisor($request, $user) { - return Package::when($request->has('name') && $request->name != '', function ($query) use ($request) { - $query->where('name', 'LIKE', '%'.$request->name.'%'); - }) + return Package::with([ + 'user', + 'user.medical_center' => function ($query) { + $query->select('id', 'name', 'address', 'phone_number'); + }, + 'items' + ]) + ->tap(function ($query) use ($request) { + $this->applyUserNameFilter($query, $request); + }) + ->when($request->has('name') && $request->name != '', function ($query) use ($request) { + $query->where('name', 'LIKE', '%'.$request->name.'%'); + }) ->when($request->has('package_id') && $request->package_id != '', function ($query) use ($request) { $query->where('id', $request->package_id); }) @@ -49,13 +62,7 @@ class PackageRepository implements PackageRepositoryInterface $query->where('medical_center_id', $request->medical_center_id); }); }) - ->with([ - 'user', - 'user.medical_center' => function ($query) { - $query->select('id', 'name', 'address', 'phone_number'); - }, - 'items' - ])->whereHas('user', function ($query) use ($user) { + ->whereHas('user', function ($query) use ($user) { $query->where('users.medical_center_id', $user->medical_center_id); }) ->orderByDesc('id') @@ -64,9 +71,19 @@ class PackageRepository implements PackageRepositoryInterface public function indexForAdmin($request, $user) { - return Package::when($request->has('name') && $request->name != '', function ($query) use ($request) { - $query->where('name', 'LIKE', '%'.$request->name.'%'); - }) + return Package::with([ + 'user', + 'user.medical_center' => function ($query) { + $query->select('id', 'name', 'address', 'phone_number'); + }, + 'items' + ]) + ->tap(function ($query) use ($request) { + $this->applyUserNameFilter($query, $request); + }) + ->when($request->has('name') && $request->name != '', function ($query) use ($request) { + $query->where('name', 'LIKE', '%'.$request->name.'%'); + }) ->when($request->has('package_id') && $request->package_id != '', function ($query) use ($request) { $query->where('id', $request->package_id); }) @@ -75,14 +92,15 @@ class PackageRepository implements PackageRepositoryInterface $query->where('medical_center_id', $request->medical_center_id); }); }) - ->with([ - 'user', - 'user.medical_center' => function ($query) { - $query->select('id', 'name', 'address', 'phone_number'); - }, - 'items' - ]) ->orderByDesc('id') ->paginate(10); } + + private function applyUserNameFilter($queryBuilder,$request){ + return $queryBuilder->when($request->filled('user_name'), function ($query) use ($request) { + $query->whereHas('user', function ($q) use ($request) { + $q->where('users.name', 'LIKE', '%' . $request->user_name . '%'); + }); + }); + } } diff --git a/routes/api.php b/routes/api.php index 876e1dad..8721deed 100644 --- a/routes/api.php +++ b/routes/api.php @@ -31,7 +31,7 @@ Route::group(['namespace' => 'Api'], function () { }); Route::middleware('auth:api')->group(function () { - Route::get('TestTypes/ListNames', [TestTypeController::class, 'listNames']); + Route::get('TestTypes/List', [TestTypeController::class, 'list']); Route::post('/TestTypes/Barcode/{TestType}', [TestTypeController::class, 'generateBarcode']); Route::resource('TestTypes', TestTypeController::class); Route::resource('MedicalCenters', MedicalCenterController::class);