Files
cssd-back/app/Repositories/PackageRepository.php
T
2024-03-17 10:49:50 +03:30

87 lines
3.8 KiB
PHP

<?php
namespace App\Repositories;
use App\Constants\StatusTypeEnum;
use App\Interfaces\PackageRepositoryInterface;
use App\Package;
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.'%');
})
->when($request->has('package_id') && $request->package_id != '', function ($query) use ($request) {
$query->where('id', $request->package_id);
})
->when($request->has('medical_center_id') && $request->medical_center_id != '' && $request->medical_center_id != 'undefined', function ($query) use ($request) {
$query->whereHas('user', function ($query) use ($request) {
$query->where('medical_center_id', $request->medical_center_id);
});
})
->with([
'user',
'user.medical_center' => function ($query) {
$query->select('id', 'name', 'address', 'phone_number');
},
])
->whereHas('user', function ($query) use ($user) {
$query->where('medical_center_id', $user->medical_center_id);
})
->where("user_id", $user->id)
->orWhere("status", StatusTypeEnum::APPROVED)
->orderByDesc('id')
->paginate(10);
}
public function indexForSupervisor($request, $user)
{
return Package::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);
})
->when($request->has('medical_center_id') && $request->medical_center_id != '' && $request->medical_center_id != 'undefined', function ($query) use ($request) {
$query->whereHas('user', function ($query) use ($request) {
$query->where('medical_center_id', $request->medical_center_id);
});
})
->with([
'user',
'user.medical_center' => function ($query) {
$query->select('id', 'name', 'address', 'phone_number');
},
])->whereHas('user', function ($query) use ($user) {
$query->where('medical_center_id', $user->medical_center_id);
})
->orderByDesc('id')
->paginate(10);
}
public function indexForAdmin($request, $user)
{
return Package::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);
})
->when($request->has('medical_center_id') && $request->medical_center_id != '' && $request->medical_center_id != 'undefined', function ($query) use ($request) {
$query->whereHas('user', function ($query) use ($request) {
$query->where('medical_center_id', $request->medical_center_id);
});
})
->with([
'user',
'user.medical_center' => function ($query) {
$query->select('id', 'name', 'address', 'phone_number');
},
])
->orderByDesc('id')
->paginate(10);
}
}