fix route dashboard
This commit is contained in:
@@ -7,42 +7,43 @@ use App\Models\PractitionerRole;
|
|||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use Modules\Linksehat\Transformers\Dashboard\DoctorResource;
|
use Modules\Linksehat\Transformers\Dashboard\DoctorResource as DoctorResourceDashboard;
|
||||||
use Modules\Linksehat\Transformers\Dashboard\HospitalResource;
|
use Modules\Linksehat\Transformers\Dashboard\HospitalResource as HospitalResourceDashboard;
|
||||||
use Modules\Linksehat\Transformers\Dashboard\ArticleResource;
|
use Modules\Linksehat\Transformers\Dashboard\ArticleResource as ArticleResourceDashboard;
|
||||||
use SebastianBergmann\Invoker\TimeoutException;
|
|
||||||
|
|
||||||
class DashboardController extends Controller
|
class DashboardController extends Controller
|
||||||
{
|
{
|
||||||
public function index(Request $request)
|
public function index(Request $request, $default, $limit = 20)
|
||||||
{
|
{
|
||||||
$queryDoctors = PractitionerRole::query()
|
if ($default === 'doctors') {
|
||||||
->with([
|
$queryDoctors = PractitionerRole::query()
|
||||||
'practitioner.person', 'speciality'
|
->with([
|
||||||
])
|
'practitioner.person', 'speciality'
|
||||||
->whereHas('speciality')->get()->random(5);
|
])
|
||||||
|
->whereHas('speciality')->get()->random($limit);
|
||||||
|
$data = DoctorResourceDashboard::collection($queryDoctors);
|
||||||
$queryHospitals = Organization::query()
|
} elseif ($default === 'hospitals') {
|
||||||
->without('meta')
|
$queryHospitals = Organization::query()
|
||||||
->where('organizations.type', 'hospital')
|
->without('meta')
|
||||||
->leftJoin('addresses', function ($q) {
|
->where('organizations.type', 'hospital')
|
||||||
$q->on('organizations.main_address_id', '=', 'addresses.id');
|
->leftJoin('addresses', function ($q) {
|
||||||
$q->where('addresses.addressable_type', '=', Organization::class);
|
$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)
|
if ($request->has('lat') && !empty($request->lat) && $request->has('lng') && !empty($request->lng)) {
|
||||||
->get();
|
$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');
|
||||||
|
}
|
||||||
$doctors = DoctorResource::collection($queryDoctors);
|
$queryHospitals = $queryHospitals->orderBy('organizations.name', 'asc')->limit($limit)->get();
|
||||||
$hospitals = HospitalResource::collection($queryHospitals);
|
$data = HospitalResourceDashboard::collection($queryHospitals);
|
||||||
$articles = ArticleResource::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles')));
|
} elseif ($default === 'articles') {
|
||||||
|
$data = ArticleResourceDashboard::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles')));
|
||||||
|
}
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'statusCode' => 200,
|
'statusCode' => 200,
|
||||||
'message' => 'Success',
|
'message' => 'Success',
|
||||||
'data' => compact('doctors', 'hospitals', 'articles'),
|
'data' => $data,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ use Modules\Linksehat\Http\Controllers\Api\ProfileController;
|
|||||||
|
|
||||||
Route::prefix('linksehat')->group(function () {
|
Route::prefix('linksehat')->group(function () {
|
||||||
|
|
||||||
Route::get('dashboard', [DashboardController::class, 'index']);
|
Route::get('dashboard/{default}/{limit?}', [DashboardController::class, 'index']);
|
||||||
|
|
||||||
Route::post('otp-request', [AuthController::class, 'otpRequest']);
|
Route::post('otp-request', [AuthController::class, 'otpRequest']);
|
||||||
Route::post('mock-otp', [AuthController::class, 'mockOtp']);
|
Route::post('mock-otp', [AuthController::class, 'mockOtp']);
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ class HospitalResource extends JsonResource
|
|||||||
return [
|
return [
|
||||||
'id' => $this->id,
|
'id' => $this->id,
|
||||||
'name' => $this->name,
|
'name' => $this->name,
|
||||||
'address' => $this->currentAddress ?? null,
|
'address' => $this->currentAddress->text ?? null,
|
||||||
'distance' => $this->distance < 1 ? round($this->distance * 1000, 2) . " m" : round($this->distance, 2) . " km",
|
'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),
|
||||||
'url' => asset('images/default-doctor-avatar.png')
|
'url' => asset('images/default-doctor-avatar.png')
|
||||||
|
|||||||
Reference in New Issue
Block a user