From 52e5cdb779c1d022c37ed9f7a19a3c4c19c344f9 Mon Sep 17 00:00:00 2001 From: R Date: Thu, 17 Nov 2022 13:43:40 +0700 Subject: [PATCH] Fix Doctor By Speciality --- .../Http/Controllers/Api/DoctorController.php | 11 ++- .../Controllers/Api/SpecialityController.php | 72 +++++++++--------- app/Models/Speciality.php | 19 +++++ .../{akupuntur-medik.png => akupunktur.png} | Bin .../specialities/{kids.png => anak.png} | Bin .../{anesthesia.png => anestesi.png} | Bin .../{lungs.png => jantung-pembuluh-darah.png} | Bin .../{cardiologist.png => kardio-vaskuler.png} | Bin .../{obgyn.png => kebidanan-kandungan.png} | Bin ...ulit-dan-kelamin.png => kulit-kelamin.png} | Bin ...krobiologi-klinik.png => laboratorium.png} | Bin .../{ophthalmologist.png => mata.png} | Bin 12 files changed, 64 insertions(+), 38 deletions(-) rename public/images/specialities/{akupuntur-medik.png => akupunktur.png} (100%) rename public/images/specialities/{kids.png => anak.png} (100%) rename public/images/specialities/{anesthesia.png => anestesi.png} (100%) rename public/images/specialities/{lungs.png => jantung-pembuluh-darah.png} (100%) rename public/images/specialities/{cardiologist.png => kardio-vaskuler.png} (100%) rename public/images/specialities/{obgyn.png => kebidanan-kandungan.png} (100%) rename public/images/specialities/{kulit-dan-kelamin.png => kulit-kelamin.png} (100%) rename public/images/specialities/{mikrobiologi-klinik.png => laboratorium.png} (100%) rename public/images/specialities/{ophthalmologist.png => mata.png} (100%) diff --git a/Modules/Linksehat/Http/Controllers/Api/DoctorController.php b/Modules/Linksehat/Http/Controllers/Api/DoctorController.php index 9a483998..405f02d0 100755 --- a/Modules/Linksehat/Http/Controllers/Api/DoctorController.php +++ b/Modules/Linksehat/Http/Controllers/Api/DoctorController.php @@ -44,8 +44,15 @@ class DoctorController extends Controller $query->whereHas('practitioner.person', function ($person) use ($search) { $person->where('name', 'LIKE', '%' . $search . '%'); }); - }) - ->whereHas('speciality'); + }); + + if ($request->has('speciality_id_in')) { + $speciality_ids = explode(',', $request->speciality_id_in); + $doctors->whereIn('speciality_id', $speciality_ids); + } else if ($request->has('speciality_id')) { + $doctors->where('speciality_id', $request->speciality_id); + } + if ($request->has('hospital_id_in')) { $hospital_ids = explode(',', $request->hospital_id_in); $doctors->whereIn('organization_id', $hospital_ids); diff --git a/Modules/Linksehat/Http/Controllers/Api/SpecialityController.php b/Modules/Linksehat/Http/Controllers/Api/SpecialityController.php index 1740cd9d..adf1d8cb 100755 --- a/Modules/Linksehat/Http/Controllers/Api/SpecialityController.php +++ b/Modules/Linksehat/Http/Controllers/Api/SpecialityController.php @@ -18,43 +18,43 @@ class SpecialityController extends Controller * Display a listing of the resource. * @return Renderable */ - public function index(Request $request) + // public function index(Request $request) + // { + // $organizationId = $request->organization_id; + // $specialityId = $request->speciality_id; + + // if (empty($organizationId) || empty($specialityId)) { + // $messageorganizationId = !empty($organizationId) ? ' ' : ' organization_id or '; + // $messageSpecialityId = !empty($specialityId) ? ' ' : 'speciality_id'; + + // abort(Response::HTTP_BAD_REQUEST, 'Missing Parameter' . $messageorganizationId . $messageSpecialityId); + // } + + // $doctors = PractitionerRole::query() + // ->with(['practitioner.person', 'speciality', 'prices']) + // ->whereHas('prices', function ($query) { + // $query->where('priceable_type', Practice::class); + // }) + // ->where('organization_id', $organizationId) + // ->where('speciality_id', $specialityId) + // ->get(); + + // abort_if(count($doctors) === 0, Response::HTTP_NOT_FOUND, 'Data Doctor tidak ditemukan'); + + // foreach ($doctors as $key => $doctor) { + // $specialisName = $doctor->speciality->name; + // } + + // return Helper::responseJson([ + // 'title' => 'Spesialis ' . $specialisName, + // 'doctors' => SpecialityResource::collection($doctors) + // ]); + // } + + public function index() { - $organizationId = $request->organization_id; - $specialityId = $request->speciality_id; + $specialities = Speciality::query()->get(); - if (empty($organizationId) || empty($specialityId)) { - $messageorganizationId = !empty($organizationId) ? ' ' : ' organization_id or '; - $messageSpecialityId = !empty($specialityId) ? ' ' : 'speciality_id'; - - abort(Response::HTTP_BAD_REQUEST, 'Missing Parameter' . $messageorganizationId . $messageSpecialityId); - } - - $doctors = PractitionerRole::query() - ->with(['practitioner.person', 'speciality', 'prices']) - ->whereHas('prices', function ($query) { - $query->where('priceable_type', Practice::class); - }) - ->where('organization_id', $organizationId) - ->where('speciality_id', $specialityId) - ->get(); - - abort_if(count($doctors) === 0, Response::HTTP_NOT_FOUND, 'Data Doctor tidak ditemukan'); - - foreach ($doctors as $key => $doctor) { - $specialisName = $doctor->speciality->name; - } - - return Helper::responseJson([ - 'title' => 'Spesialis ' . $specialisName, - 'doctors' => SpecialityResource::collection($doctors) - ]); - } - - public function listSpeciality() - { - $querySpecialities = Speciality::query()->get(['name']); - - return Helper::responseJson(['specialities' => SpecialityResource::collection($querySpecialities)]); + return Helper::responseJson(['specialities' => $specialities]); } } diff --git a/app/Models/Speciality.php b/app/Models/Speciality.php index 45ae5c39..0e8951eb 100755 --- a/app/Models/Speciality.php +++ b/app/Models/Speciality.php @@ -6,6 +6,7 @@ use App\Traits\Blameable; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Str; class Speciality extends Model { @@ -20,4 +21,22 @@ class Speciality extends Model 'code', 'name' ]; + + protected $hidden = [ + 'created_at', + 'updated_at', + 'deleted_at', + 'created_by', + 'updated_by', + 'deleted_by', + ]; + + protected $appends = [ + 'image_url' + ]; + + public function getImageUrlAttribute() + { + return asset('images/specialities/'.Str::slug($this->name, '-').'.png'); + } } diff --git a/public/images/specialities/akupuntur-medik.png b/public/images/specialities/akupunktur.png similarity index 100% rename from public/images/specialities/akupuntur-medik.png rename to public/images/specialities/akupunktur.png diff --git a/public/images/specialities/kids.png b/public/images/specialities/anak.png similarity index 100% rename from public/images/specialities/kids.png rename to public/images/specialities/anak.png diff --git a/public/images/specialities/anesthesia.png b/public/images/specialities/anestesi.png similarity index 100% rename from public/images/specialities/anesthesia.png rename to public/images/specialities/anestesi.png diff --git a/public/images/specialities/lungs.png b/public/images/specialities/jantung-pembuluh-darah.png similarity index 100% rename from public/images/specialities/lungs.png rename to public/images/specialities/jantung-pembuluh-darah.png diff --git a/public/images/specialities/cardiologist.png b/public/images/specialities/kardio-vaskuler.png similarity index 100% rename from public/images/specialities/cardiologist.png rename to public/images/specialities/kardio-vaskuler.png diff --git a/public/images/specialities/obgyn.png b/public/images/specialities/kebidanan-kandungan.png similarity index 100% rename from public/images/specialities/obgyn.png rename to public/images/specialities/kebidanan-kandungan.png diff --git a/public/images/specialities/kulit-dan-kelamin.png b/public/images/specialities/kulit-kelamin.png similarity index 100% rename from public/images/specialities/kulit-dan-kelamin.png rename to public/images/specialities/kulit-kelamin.png diff --git a/public/images/specialities/mikrobiologi-klinik.png b/public/images/specialities/laboratorium.png similarity index 100% rename from public/images/specialities/mikrobiologi-klinik.png rename to public/images/specialities/laboratorium.png diff --git a/public/images/specialities/ophthalmologist.png b/public/images/specialities/mata.png similarity index 100% rename from public/images/specialities/ophthalmologist.png rename to public/images/specialities/mata.png