add api linksehat/dashboard
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Linksehat\Http\Controllers\Api;
|
||||
|
||||
use App\Models\Organization;
|
||||
use App\Models\PractitionerRole;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Modules\Linksehat\Transformers\Dashboard\DoctorResource;
|
||||
use Modules\Linksehat\Transformers\Dashboard\HospitalResource;
|
||||
use Modules\Linksehat\Transformers\Dashboard\ArticleResource;
|
||||
use SebastianBergmann\Invoker\TimeoutException;
|
||||
|
||||
class DashboardController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$queryDoctors = PractitionerRole::query()
|
||||
->with([
|
||||
'practitioner.person', 'speciality'
|
||||
])
|
||||
->whereHas('speciality')->get()->random(5);
|
||||
|
||||
|
||||
$queryHospitals = Organization::query()
|
||||
->without('meta')
|
||||
->where('organizations.type', 'hospital')
|
||||
->leftJoin('addresses', function ($q) {
|
||||
$q->on('organizations.main_address_id', '=', 'addresses.id');
|
||||
$q->where('addresses.addressable_type', '=', Organization::class);
|
||||
})
|
||||
->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")
|
||||
->limit(5)
|
||||
->get();
|
||||
|
||||
$doctors = DoctorResource::collection($queryDoctors);
|
||||
$hospitals = HospitalResource::collection($queryHospitals);
|
||||
$articles = ArticleResource::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles')));
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'statusCode' => 200,
|
||||
'message' => 'Success',
|
||||
'data' => compact('doctors', 'hospitals', 'articles'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user