61 lines
1.6 KiB
PHP
61 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Fo;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\News;
|
|
use App\Models\Product;
|
|
use App\Models\Range;
|
|
use App\Models\Slide;
|
|
use Carbon\Carbon;
|
|
use Spatie\CalendarLinks\Link;
|
|
|
|
class HomeController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Contracts\View\View
|
|
*/
|
|
public function index(): \Illuminate\Contracts\View\View
|
|
{
|
|
|
|
// Get Slides.
|
|
|
|
/** @var \Illuminate\Database\Eloquent\Builder $slides */
|
|
$slides = Slide::query();
|
|
$slides->orderBy('order', 'DESC');
|
|
$slides = $slides->get();
|
|
|
|
// Gammes.
|
|
$ranges = Range::all();
|
|
|
|
// VIP Products.
|
|
$threeproducts = Product::where('status', true)
|
|
->where('is_vip', true)
|
|
->take(3)
|
|
->orderBy('order', 'DESC')
|
|
->with('subrange.range')
|
|
->get();
|
|
|
|
// Get Agenda.
|
|
// Events starting in the future.
|
|
$events = News::where('status', true)
|
|
->where('event_start', '>', Carbon::now())
|
|
->orderBy('event_start', 'desc')
|
|
->take(2)->get();
|
|
|
|
$events = $events->reverse();
|
|
|
|
foreach ($events as $event) {
|
|
$event->cal_link = Link::create($event->title, $event->event_start, $event->event_end)
|
|
->description($event->event_text)
|
|
->ics();
|
|
}
|
|
|
|
// Get last 3 News.
|
|
$news = News::latest()->where('status', true)->take(3)->with('categories')->get();
|
|
|
|
return view('fo.pages.home', compact('slides', 'ranges', 'threeproducts', 'events', 'news'));
|
|
}
|
|
}
|