fix code dashboard

This commit is contained in:
Muhammad Fajar
2022-10-31 07:09:24 +07:00
parent 9224bcef5b
commit 6d2404cca1
2 changed files with 36 additions and 26 deletions

View File

@@ -10,39 +10,55 @@ use Illuminate\Support\Facades\Http;
use Modules\Linksehat\Transformers\Dashboard\DoctorResource as DoctorResourceDashboard; use Modules\Linksehat\Transformers\Dashboard\DoctorResource as DoctorResourceDashboard;
use Modules\Linksehat\Transformers\Dashboard\HospitalResource as HospitalResourceDashboard; use Modules\Linksehat\Transformers\Dashboard\HospitalResource as HospitalResourceDashboard;
use Modules\Linksehat\Transformers\Dashboard\ArticleResource as ArticleResourceDashboard; use Modules\Linksehat\Transformers\Dashboard\ArticleResource as ArticleResourceDashboard;
use Symfony\Component\HttpFoundation\Response;
class DashboardController extends Controller class DashboardController extends Controller
{ {
public function index(Request $request, $default, $limit = 20) public function index(Request $request, $query, $limit = 20)
{ {
if ($default === 'doctors') { if ($query === 'doctors') {
$queryDoctors = PractitionerRole::query() $queryDoctors = PractitionerRole::query()
->with([ ->with([
'practitioner.person', 'speciality' 'person' => function ($query) {
$query->select(['name']);
},
'speciality' => function ($query) {
$query->select(['id', 'name']);
},
]) ])
->whereHas('speciality')->get()->random($limit); ->where('active', 1)
->whereNot('speciality_id')
->get(['id', 'speciality_id'])
->random($limit);
$data = DoctorResourceDashboard::collection($queryDoctors); $data = DoctorResourceDashboard::collection($queryDoctors);
} elseif ($default === 'hospitals') { } elseif ($query === 'hospitals') {
$queryHospitals = Organization::query() $queryHospitals = Organization::query()
->without('meta') ->leftJoin('addresses', function ($query) {
$query->on('organizations.main_address_id', '=', 'addresses.id');
$query->where('addresses.addressable_type', '=', Organization::class);
})
->where('organizations.type', 'hospital') ->where('organizations.type', 'hospital')
->leftJoin('addresses', function ($q) { ->where('organizations.status', 'active')
$q->on('organizations.main_address_id', '=', 'addresses.id'); ->when($request->lat && $request->lng, function ($query) use ($request) {
$q->where('addresses.addressable_type', '=', Organization::class); $query->selectRaw("organizations.id, organizations.name, addresses.text AS currentAddress, 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");
}); $query->orderBy('distance', 'ASC');
if ($request->has('lat') && !empty($request->lat) && $request->has('lng') && !empty($request->lng)) { }, function ($query) {
$queryHospitals = $queryHospitals->selectRaw("organizations.*, addresses.text AS currentAddress, 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")->orderBy('distance', 'ASC'); $query->select(['organizations.id', 'organizations.name', 'addresses.text AS currentAddress']);
} $query->orderBy('organizations.name', 'asc');
$queryHospitals = $queryHospitals->orderBy('organizations.name', 'asc')->limit($limit)->get(); })
->limit($limit)
->get();
$data = HospitalResourceDashboard::collection($queryHospitals); $data = HospitalResourceDashboard::collection($queryHospitals);
} elseif ($default === 'articles') { } elseif ($query === 'articles') {
$data = ArticleResourceDashboard::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles'))); $data = ArticleResourceDashboard::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles')));
} }
return response()->json([ return response()->json([
'success' => true, 'status' => 'success',
'statusCode' => 200, 'statusCode' => Response::HTTP_OK,
'message' => 'Success', 'message' => 'Data berhasil di ambil',
'data' => $data, 'data' => $data,
]); ]);
} }

View File

@@ -15,16 +15,10 @@ class HospitalResource extends JsonResource
*/ */
public function toArray($request) public function toArray($request)
{ {
if (empty($this->distance)) {
$address = $this->currentAddress->text;
} else {
$address = $this->currentAddress;
}
return [ return [
'id' => $this->id, 'id' => $this->id,
'name' => $this->name, 'name' => $this->name ?? '',
'address' => $address ?? null, 'address' => $this->currentAddress ?? '',
'distance' => $this->distance ? ($this->distance < 1 ? round($this->distance * 1000, 2) . " m" : round($this->distance, 2) . " km") : null, 'distance' => $this->distance ? ($this->distance < 1 ? round($this->distance * 1000, 2) . " m" : round($this->distance, 2) . " km") : null,
'photos' => [ 'photos' => [
'title' => Str::slug($this->name), 'title' => Str::slug($this->name),