File: /var/www/html/sarvodayahospital/app/Http/Controllers/TestimonialController.php
<?php
namespace App\Http\Controllers;
use App\Models\CMSPage;
use App\Models\Speciality;
use App\Models\Testimonial;
use Artesaos\SEOTools\Facades\OpenGraph;
use Artesaos\SEOTools\Facades\SEOMeta;
use Illuminate\Http\Request;
class TestimonialController extends Controller
{
public function index(Request $request)
{
$speciality = $request->speciality;
$strQuery = $request->q;
$seo = [];
$testimonials = Testimonial::query()
->when($speciality, function ($query) use ($speciality) {
$query->whereHas('specialities', function ($query) use ($speciality) {
$query->where('Slug', $speciality);
});
})
->when($strQuery, function ($query) use ($strQuery) {
$query->whereHas('doctors', function ($query) use ($strQuery) {
$query->where('DoctorName', 'like', '%'.$strQuery.'%')
->orWhere('Surname', 'like', '%'.$strQuery.'%');
})->whereHas('specialities', function ($speciality) use ($strQuery) {
$speciality->where('Slug', 'like', '%'.$strQuery.'%');
})->orWhere('Title', 'like', '%'.$strQuery.'%');
})
->orderBy('Date', 'DESC')
->paginate(24)
->appends(request()->query());
$specialities = Speciality::query()
->orderBy('Weight', 'ASC')
->get();
$cmsPage = CMSPage::query()
->where('Slug', request()->path())
->firstOrFail();
if ($cmsPage) {
$seo = $cmsPage->seoComponent()->first();
}
return view('pages.testimonial', compact('testimonials', 'specialities', 'seo'));
}
public function show($slug)
{
$seo = [];
$related_testimonials = [];
$testimonial = Testimonial::query()
->with('doctors')
->where('Slug', $slug)
->firstOrFail();
if ($testimonial) {
$specialities = $testimonial->specialities->pluck('id');
$related_testimonials = Testimonial::when(count($specialities), function($q) use($specialities) {
$q->whereHas('specialities', function($query) use($specialities) {
$query->whereIn('specialities.id', $specialities);
});
})
->where('id', '!=', $testimonial->id)
->take(5)
->get();
$seo = $testimonial->seoComponent()->first();
}
return view('pages.single-testimonial', compact('testimonial', 'related_testimonials', 'seo'));
}
}