File: /var/www/html/sarvodayahospital/app/Http/Controllers/EventController.php
<?php
namespace App\Http\Controllers;
use App\Models\CMSPage;
use App\Models\Event;
use Artesaos\SEOTools\Facades\OpenGraph;
use Artesaos\SEOTools\Facades\SEOMeta;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class EventController extends Controller
{
public function index(Request $request)
{
$by_month = $request->filled('month') ? $request->get('month') : 0;
$by_year = $request->filled('year') ? (int) $request->get('year') : 0;
$seo = [];
$query = Event::query()->where('IsActive', true);
$query->when(
$by_year > 0, function ($q) use ($by_year) {
return $q->whereYear('EventDate', $by_year);
}
);
$query->when(
in_array($by_month, range(1, 12)), function ($q) use ($by_month) {
return $q->whereMonth('EventDate', $by_month);
}
);
$events = $query->orderBy('EventDate', 'DESC')->paginate(20)->appends(request()->query());
$recentEvents = Event::query()
->orderBy('EventDate', 'DESC')
->take(10)
->get();
$years = Event::query()
->select(DB::raw('YEAR(EventDate) as EventYear'))
->distinct()
->orderBy('EventYear', 'DESC')
->get();
$cmsPage = CMSPage::query()
->where('Slug', request()->path())
->firstOrFail();
if ($cmsPage) {
$seo = $cmsPage->seoComponent()->first();
}
return view('pages.event', compact('events', 'recentEvents', 'years', 'seo'));
}
public function show($slug)
{
$seo = [];
$event = Event::query()
->where('Slug', $slug)
->firstOrFail();
if ($event) {
$seo = $event->seoComponent()->first();
}
$events = Event::query()
->where('Slug', '!=', $slug)
->orderBy('EventDate', 'ASC')
->take(5)
->get();
return view('pages.single-event', compact('event', 'events', 'seo'));
}
}