diff --git a/Modules/Linksehat/Http/Controllers/Api/DashboardController.php b/Modules/Linksehat/Http/Controllers/Api/DashboardController.php index 70adf454..027f0ad6 100644 --- a/Modules/Linksehat/Http/Controllers/Api/DashboardController.php +++ b/Modules/Linksehat/Http/Controllers/Api/DashboardController.php @@ -8,8 +8,8 @@ use Illuminate\Routing\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use Modules\Linksehat\Transformers\Dashboard\DoctorResource as DoctorResourceDashboard; -use Modules\Linksehat\Transformers\Dashboard\HospitalResource as HospitalResourceDashboard; use Modules\Linksehat\Transformers\Dashboard\ArticleResource as ArticleResourceDashboard; +use Modules\Linksehat\Transformers\Hospital\HospitalResource; use Symfony\Component\HttpFoundation\Response; class DashboardController extends Controller @@ -38,21 +38,24 @@ class DashboardController extends Controller $queryHospitals = Organization::query() ->leftJoin('addresses', function ($query) { $query->on('organizations.main_address_id', '=', 'addresses.id'); - $query->where('addresses.addressable_type', '=', Organization::class); }) + ->leftJoin('cities', function ($query) { + $query->on('addresses.city_id', '=', 'cities.id'); + }) + ->where('addresses.addressable_type', '=', Organization::class) ->where('organizations.type', 'hospital') ->where('organizations.status', 'active') ->when($request->lat && $request->lng, function ($query) use ($request) { - $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->selectRaw("organizations.id, organizations.name, addresses.text AS address, cities.name AS city_name, 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'); }, function ($query) { - $query->select(['organizations.id', 'organizations.name', 'addresses.text AS currentAddress']); + $query->select(['organizations.id', 'organizations.name', 'addresses.text AS address', 'cities.name AS city_name']); $query->orderBy('organizations.name', 'asc'); }) ->limit($limit) ->get(); - $data = HospitalResourceDashboard::collection($queryHospitals); + $data = HospitalResource::collection($queryHospitals); } elseif ($query === 'articles') { $data = ArticleResourceDashboard::collection(json_decode(Http::get('https://linksehat.com/api/medical-assistance-articles'))); } diff --git a/Modules/Linksehat/Http/Controllers/Api/PersonController.php b/Modules/Linksehat/Http/Controllers/Api/PersonController.php index 2679f316..cb67f65b 100644 --- a/Modules/Linksehat/Http/Controllers/Api/PersonController.php +++ b/Modules/Linksehat/Http/Controllers/Api/PersonController.php @@ -4,6 +4,7 @@ namespace Modules\Linksehat\Http\Controllers\Api; use App\Models\File; use App\Models\Person; +use Auth; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; @@ -19,7 +20,7 @@ class PersonController extends Controller */ public function index() { - $user = auth()->user(); + $user = Auth::user(); $user->load(['person', 'person.families', 'person.avatar']); $families = $user->person->families; diff --git a/Modules/Linksehat/Http/Controllers/Api/SearchController.php b/Modules/Linksehat/Http/Controllers/Api/SearchController.php index dbf2599a..47097084 100644 --- a/Modules/Linksehat/Http/Controllers/Api/SearchController.php +++ b/Modules/Linksehat/Http/Controllers/Api/SearchController.php @@ -49,11 +49,11 @@ class SearchController extends Controller $queryHospitals = Organization::query() ->when($request->lat && $request->lng, function (EloquentBuilder $query) use ($request) { $query->getQuery() - ->selectRaw("organizations.id, organizations.name, addresses.text AS address, 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") + ->selectRaw("organizations.id, organizations.name, addresses.text AS address, cities.name AS city_name, 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'); }, function (EloquentBuilder $query) { $query->getQuery() - ->select(['organizations.id', 'organizations.name', 'addresses.text AS address']) + ->select(['organizations.id', 'organizations.name', 'addresses.text AS address', 'cities.name AS city_name']) ->orderBy('organizations.name'); }) ->leftJoin('addresses', function (Builder $query) { @@ -65,6 +65,9 @@ class SearchController extends Controller ->leftJoin('specialities', function (Builder $query) { $query->on('practitioner_roles.speciality_id', '=', 'specialities.id'); }) + ->leftJoin('cities', function ($query) { + $query->on('addresses.city_id', '=', 'cities.id'); + }) ->where('specialities.name', 'LIKE', "{$request->value}%") ->where('addresses.addressable_type', '=', Organization::class) ->whereNot('practitioner_roles.speciality_id') diff --git a/Modules/Linksehat/Transformers/Hospital/HospitalResource.php b/Modules/Linksehat/Transformers/Hospital/HospitalResource.php index fc0e397a..43e6030a 100644 --- a/Modules/Linksehat/Transformers/Hospital/HospitalResource.php +++ b/Modules/Linksehat/Transformers/Hospital/HospitalResource.php @@ -18,8 +18,8 @@ class HospitalResource extends JsonResource 'id' => $this->id, 'name' => $this->name, 'address' => $this->address ?? null, - 'distance' => isset($this->distance_km) ? round($this->distance_km) . ' km' : null, - 'city_name' => $this->currentAddress->city->name ?? null, + 'distance' => $this->distance ? ($this->distance < 1 ? round($this->distance * 1000, 2) . " m" : round($this->distance, 2) . " km") : null, + 'city_name' => $this->city_name ?? null, 'phone' => $this->meta->phone, 'photos' => [ 'title' => $this->name,