File: /var/www/html/sarvodayahospital/app/Http/Controllers/SpecialityController.php
<?php
namespace App\Http\Controllers;
use App\Models\CMSPage;
use App\Models\CPSDoctor;
use App\Models\Doctor;
use App\Models\Hospital;
use App\Models\Speciality;
use App\Models\Testimonial;
use Artesaos\SEOTools\Facades\OpenGraph;
use Artesaos\SEOTools\Facades\SEOMeta;
class SpecialityController extends Controller
{
public function index()
{
$seo = [];
$search = request('search');
$hospital = request('hospital');
$specialities = Speciality::query()
->when($search, function ($query) use ($search) {
$query->where('Slug', $search);
})
->when($hospital, function ($query) use ($hospital) {
$query->whereHas('hospitals', function ($value) use ($hospital) {
$value->where('Slug', $hospital);
});
})
->orderBy('IsCentreOfExcellence', 'DESC')
->orderBy('Weight', 'ASC')
->get();
$specialitiesDropdown = Speciality::query()
->orderBy('Weight', 'ASC')
->get();
$hospitals = Hospital::whereHas('specialities')->get();
$cmsPage = CMSPage::query()
->where('Slug', request()->path())
->firstOrFail();
if ($cmsPage) {
$seo = $cmsPage->seoComponent()->first();
}
return view('pages.speciality', compact('specialities', 'specialitiesDropdown', 'hospitals', 'seo'));
}
public function show($slug)
{
$seo = [];
$sp = [];
$speciality = Speciality::query()
->with(['hospitals', 'doctors', 'technologies', 'procedures', 'treatments', 'seoComponent', 'faqs', 'banner', 'mobileBanner'])
->where('Slug', $slug)
->first();
if (!$speciality) {
$cpsDoctor = CPSDoctor::query()
->with('cpsLocation')
->where('Slug', $slug)
->where('published_at', '!=', null)
->first();
if ($cpsDoctor) {
$specialities = $cpsDoctor->specialities()->get();
$seo = $cpsDoctor->seoComponent()->first();
$cpsLocations = $cpsDoctor->cpsLocation()->first()->load('hospitals');
if(!is_null($cpsLocations)) {
$hospitals = $cpsLocations->hospitals->map(function($query) {
return $hospitalID[] = $query->id;
});
}
$doctors = Doctor::getDoctorBySpecialityAndHospital($specialities->pluck('id'), $hospitals);
$location = $cpsDoctor->cpsLocation->Slug;
$commonTreatmentDoctors = CPSDoctor::query()
->with('cpsLocation')
->whereHas('cpsLocation', function($query) use($location) {
$query->where('Slug', $location);
})
->where('Slug', '!=', $slug)
->where('published_at', '!=', null)
->get();
$sameSpecialityWithDiffLocationDoctors = CPSDoctor::query()
->with('cpsLocation')
->where('Title', $cpsDoctor->Title)
->where('Slug', '!=', $slug)
->where('published_at', '!=', null)
->get();
$data = [
'cpsDoctors' => $cpsDoctor,
'specialities' => $specialities,
'doctors' => $doctors,
'commonTreatmentDoctors' => $commonTreatmentDoctors,
'sameSpecialityWithDiffLocationDoctors' => $sameSpecialityWithDiffLocationDoctors
];
return view('pages.cps-doctor', compact('data', 'seo'));
}
return abort(404);
}
$seo = $speciality->seoComponent()->first();
$spo = Speciality::where('Slug', $slug)
->with('ss')
->get();
foreach ($spo as $p) {
$sp[] = $p->Slug;
foreach ($p->ss as $s) {
$sp[] = $s->Slug;
}
}
$doctors = Doctor::WhereHas('specialities', function ($q) use ($sp) {
$q->WhereIn('Slug', $sp);
})->orderByRaw('ISNULL(Weight), Weight ASC')->orderBy('Surname', 'asc')->get();
$testimonials = $speciality ? $speciality->testimonials : [];
return view('pages.single-speciality', compact('speciality', 'seo', 'doctors', 'testimonials'));
}
}