diff --git a/Modules/Linksehat/Http/Controllers/Api/DashboardController.php b/Modules/Linksehat/Http/Controllers/Api/DashboardController.php index 27756bc1..4a3e0cba 100755 --- a/Modules/Linksehat/Http/Controllers/Api/DashboardController.php +++ b/Modules/Linksehat/Http/Controllers/Api/DashboardController.php @@ -11,7 +11,6 @@ use Illuminate\Support\Facades\Http; use Modules\Linksehat\Transformers\Article\ArticleResource; use Modules\Linksehat\Transformers\Doctor\DoctorResource; use Modules\Linksehat\Transformers\Hospital\HospitalResource; -use Symfony\Component\HttpFoundation\Response; class DashboardController extends Controller { @@ -32,7 +31,7 @@ class DashboardController extends Controller ->get(['id', 'practitioner_id', 'speciality_id']) ->random($limit); - $data = DoctorResource::collection($queryDoctors); + $data = ['doctors' => DoctorResource::collection($queryDoctors)]; } elseif ($query === 'hospitals') { $queryHospitals = Organization::query() ->leftJoin('addresses', function ($query) { @@ -54,9 +53,9 @@ class DashboardController extends Controller ->limit($limit) ->get(); - $data = HospitalResource::collection($queryHospitals); + $data = ['hospitals' => HospitalResource::collection($queryHospitals)]; } elseif ($query === 'articles') { - $data = ArticleResource::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles'))); + $data = ['articles' => ArticleResource::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles')))]; } return Helper::responseJson($data); diff --git a/Modules/Linksehat/Http/Controllers/Api/DoctorController.php b/Modules/Linksehat/Http/Controllers/Api/DoctorController.php index f65904d7..0e8283e5 100755 --- a/Modules/Linksehat/Http/Controllers/Api/DoctorController.php +++ b/Modules/Linksehat/Http/Controllers/Api/DoctorController.php @@ -3,14 +3,14 @@ namespace Modules\Linksehat\Http\Controllers\Api; use App\Helpers\Helper; +use App\Models\Organization; use App\Models\Practitioner; use App\Models\PractitionerRole; -use App\Models\PractitionerRoleAvailability; -use DB; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; -use Modules\Linksehat\Transformers\Doctor\DoctorResourceDetail; +use Illuminate\Support\Facades\DB; +use Modules\Linksehat\Transformers\DoctorResource; use Modules\Linksehat\Transformers\PractitionerRoleToDoctorResource; class DoctorController extends Controller @@ -60,7 +60,7 @@ class DoctorController extends Controller $doctors = $doctors->paginate($limit); - return Helper::responseJson(Helper::paginateResources(PractitionerRoleToDoctorResource::collection($doctors))); + return Helper::responseJson(['doctors' => Helper::paginateResources(PractitionerRoleToDoctorResource::collection($doctors))]); } /** @@ -89,23 +89,25 @@ class DoctorController extends Controller */ public function show(Request $request, $id) { - $queryDoctor = PractitionerRole::query() + $doctor = Practitioner::query() ->with([ - 'practitioner', - 'speciality', - 'practices.prices' + 'practitionerRoles', + 'practitionerRoles.metas', + 'practitionerRoles.speciality', + 'practitionerRoles.organization' => function ($query) { + $query->leftJoin('addresses', function ($q) { + $q->on('organizations.main_address_id', '=', 'addresses.id'); + $q->where('addresses.addressable_type', Organization::class); + }); + }, + 'practitionerRoles.practices', + 'practitionerRoles.availabilities', + 'person', + 'metas', ]) ->findOrFail($id); - $queryAvailables = PractitionerRoleAvailability::query()->with(['days' => function ($query) { - $query->select(['availability_id', 'day']); - }])->where('practitioner_role_id', $id)->get(['id', 'start_time']); - - $doctor = DoctorResourceDetail::make($queryDoctor); - $doctor['day_available'] = Helper::dailyAvailabilities($queryAvailables); - - // return Helper::responseJson(); - return response()->json(compact('doctor')); + return response()->json(DoctorResource::make($doctor)); } /** diff --git a/Modules/Linksehat/Http/Controllers/Api/HospitalController.php b/Modules/Linksehat/Http/Controllers/Api/HospitalController.php index c2cedb96..8a6e322c 100755 --- a/Modules/Linksehat/Http/Controllers/Api/HospitalController.php +++ b/Modules/Linksehat/Http/Controllers/Api/HospitalController.php @@ -9,6 +9,7 @@ use Illuminate\Contracts\Support\Renderable; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; use Illuminate\Routing\Controller; +use Illuminate\Support\Facades\DB; use Modules\Linksehat\Transformers\Hospital\HospitalResource; class HospitalController extends Controller @@ -19,7 +20,7 @@ class HospitalController extends Controller */ public function index(Request $request) { - /**$hospitals = Organization::query() + $hospitals = Organization::query() ->with(['currentAddress']) ->where('organizations.type', 'hospital') ->when($request->search ?? null, function ($query, $search) { @@ -32,7 +33,6 @@ class HospitalController extends Controller }); $hospitals->select([ "organizations.*", - // DB::raw("ST_Distance_Sphere(point(addresses.lng,addresses.lat), point(".$request->lng.",".$request->lat.")) /1000 as distance_km"), DB::raw("6371 * acos (cos ( radians($request->lat) ) * cos( radians( addresses.lat ) ) * cos( radians( addresses.lng ) - radians($request->lng) ) + sin ( radians($request->lat) ) * sin( radians( addresses.lat ) )) as distance_km") ]); @@ -42,7 +42,7 @@ class HospitalController extends Controller } if ($request->has('order_by')) { - switch($request->order_by) { + switch ($request->order_by) { case 'distance_asc': if ($request->order_by == 'distance_asc' && $request->has('lat') && !empty($request->lat) && $request->has('lng') && !empty($request->lng)) { $hospitals->orderBy('distance_km', 'asc'); @@ -53,7 +53,7 @@ class HospitalController extends Controller $hospitals->orderBy('distance_km', 'desc'); break; } - default: + default: $hospitals->orderBy('organizations.name', 'asc'); break; } @@ -65,13 +65,11 @@ class HospitalController extends Controller } $hospitals = $hospitals->paginate($limit); - // dd($hospitals->toArray()); - return response()->json([ 'message' => 'Sukses mengambil data Rumah Sakit', 'hospitals' => Helper::paginateResources(HospitalResource::collection($hospitals)) - ]);*/ + ]); } /** diff --git a/Modules/Linksehat/Http/Controllers/Api/PersonController.php b/Modules/Linksehat/Http/Controllers/Api/PersonController.php index 29c0f094..7e601967 100755 --- a/Modules/Linksehat/Http/Controllers/Api/PersonController.php +++ b/Modules/Linksehat/Http/Controllers/Api/PersonController.php @@ -69,7 +69,7 @@ class PersonController extends Controller $personModel = Person::query()->create($personData); - return Helper::responseJson(['person' => $personModel], Response::HTTP_CREATED, 'Data berhasil di buat'); + return Helper::responseJson(['persons' => $personModel], Response::HTTP_CREATED, 'Data berhasil di buat'); } /** @@ -152,7 +152,7 @@ class PersonController extends Controller ]); } - return Helper::responseJson(data: $person, message: 'Data Berhasil di update'); + return Helper::responseJson(data: ['persons' => $person], message: 'Data Berhasil di update'); } /** diff --git a/Modules/Linksehat/Http/Controllers/Api/ProfileController.php b/Modules/Linksehat/Http/Controllers/Api/ProfileController.php index 09ab0437..d4218492 100755 --- a/Modules/Linksehat/Http/Controllers/Api/ProfileController.php +++ b/Modules/Linksehat/Http/Controllers/Api/ProfileController.php @@ -121,7 +121,7 @@ class ProfileController extends Controller } $user = User::find($user->id); // ReLoad User Data - return Helper::responseJson(new UserProfileResource($user)); + return Helper::responseJson(['users' => new UserProfileResource($user)]); } /** diff --git a/Modules/Linksehat/Http/Controllers/Api/SearchController.php b/Modules/Linksehat/Http/Controllers/Api/SearchController.php index 274b9d10..1bf284fe 100644 --- a/Modules/Linksehat/Http/Controllers/Api/SearchController.php +++ b/Modules/Linksehat/Http/Controllers/Api/SearchController.php @@ -12,7 +12,6 @@ use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Modules\Linksehat\Transformers\Hospital\HospitalResource; use Modules\Linksehat\Transformers\Speciality\SpecialityResource; -use Symfony\Component\HttpFoundation\Response; class SearchController extends Controller { @@ -33,7 +32,7 @@ class SearchController extends Controller ->where('organization_id', $request->organization_id) ->get(['persons.name AS person_name', 'specialities.name AS speciality_name', 'practitioner_id', 'practitioner_roles.id']); - return Helper::responseJson(SpecialityResource::collection($doctors)); + return Helper::responseJson(['doctors' => SpecialityResource::collection($doctors)]); } public function searchHospital(Request $request) @@ -68,6 +67,6 @@ class SearchController extends Controller ->groupBy(['practitioner_roles.organization_id', 'practitioner_roles.speciality_id']) ->get(); - return Helper::responseJson(data: HospitalResource::collection($queryHospitals), message: 'Data rumah sakit berhasil di ambil'); + return Helper::responseJson(data: ['hospitals' => HospitalResource::collection($queryHospitals)], message: 'Data rumah sakit berhasil di ambil'); } } diff --git a/Modules/Linksehat/Http/Controllers/Api/SpecialityController.php b/Modules/Linksehat/Http/Controllers/Api/SpecialityController.php index 09fde3f2..a010664e 100755 --- a/Modules/Linksehat/Http/Controllers/Api/SpecialityController.php +++ b/Modules/Linksehat/Http/Controllers/Api/SpecialityController.php @@ -53,6 +53,6 @@ class SpecialityController extends Controller { $querySpecialities = Speciality::query()->get(['name']); - return Helper::responseJson(SpecialityResource::collection($querySpecialities)); + return Helper::responseJson(['specialities' => SpecialityResource::collection($querySpecialities)]); } } diff --git a/Modules/Linksehat/Transformers/DoctorResource.php b/Modules/Linksehat/Transformers/DoctorResource.php index 1bbd951e..aa0524fb 100755 --- a/Modules/Linksehat/Transformers/DoctorResource.php +++ b/Modules/Linksehat/Transformers/DoctorResource.php @@ -3,7 +3,7 @@ namespace Modules\Linksehat\Transformers; use Illuminate\Http\Resources\Json\JsonResource; -use Illuminate\Support\Facades\Route; +use Modules\Linksehat\Transformers\Speciality\SpecialityResource; class DoctorResource extends JsonResource { @@ -112,8 +112,8 @@ class DoctorResource extends JsonResource 'is_online' => false, 'is_insurance_covered' => rand(0, 1) == 1, 'price_range' => 'Rp 100.000 - Rp 350.000', - 'price_start' => '100000', - 'price_end' => '350000', + 'price_start' => '100000', // min + 'price_end' => '350000', // max 'currency' => 'IDR', 'avatar_url' => asset('images/default-doctor-avatar.png'), 'education' => $this->meta->education ?? '', diff --git a/Modules/Linksehat/Transformers/Hospital/HospitalResource.php b/Modules/Linksehat/Transformers/Hospital/HospitalResource.php index b1345a2e..6cf887cb 100755 --- a/Modules/Linksehat/Transformers/Hospital/HospitalResource.php +++ b/Modules/Linksehat/Transformers/Hospital/HospitalResource.php @@ -15,6 +15,12 @@ class HospitalResource extends JsonResource */ public function toArray($request) { + if ($this->specialities) { + $specialities = SpecialityForHospitalDetailResource::collection($this->specialities); + } else { + $specialities = []; + } + return [ 'id' => $this->id, 'name' => $this->name, @@ -33,7 +39,7 @@ class HospitalResource extends JsonResource 'photo_url' => url('images/default-hospital-image.png'), ], $this->mergeWhen($this->specialities, [ - 'specialities' => SpecialityForHospitalDetailResource::collection($this->specialities) + 'specialities' => $specialities ]) ]; }