Files
einundzwanzig-portal/app/Http/Livewire/Meetup/MeetupEventTable.php
Shift 5776b01d15 Apply Laravel coding style
Shift automatically applies the Laravel coding style - which uses the PSR-12 coding style as a base with some minor additions.

You may customize the code style applied by configuring [Pint](https://laravel.com/docs/pint), [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer), or [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) for your project root.

For more information on customizing the code style applied by Shift, [watch this short video](https://laravelshift.com/videos/shift-code-style).
2023-02-19 18:05:16 +01:00

96 lines
3.3 KiB
PHP

<?php
namespace App\Http\Livewire\Meetup;
use App\Models\Country;
use App\Models\MeetupEvent;
use Livewire\Component;
use RalphJSmit\Laravel\SEO\Support\SEOData;
use WireUi\Traits\Actions;
class MeetupEventTable extends Component
{
use Actions;
public Country $country;
public ?int $year = null;
protected $queryString = ['year'];
public function mount()
{
if (! $this->year) {
$this->year = now()->year;
}
}
public function render()
{
return view('livewire.meetup.meetup-event-table', [
'markers' => MeetupEvent::query()
->with([
'meetup.city.country',
])
->where('meetup_events.start', '>=', now())
->whereHas('meetup.city.country',
fn ($query) => $query->where('countries.code', $this->country->code))
->get()
->map(fn ($event) => [
'id' => $event->id,
'name' => $event->meetup->name.': '.$event->location,
'coords' => [$event->meetup->city->latitude, $event->meetup->city->longitude],
]),
'events' => MeetupEvent::query()
->with([
'meetup.city.country',
])
->where('meetup_events.start', '>=', now())
->whereHas('meetup.city.country',
fn ($query) => $query->where('countries.code', $this->country->code))
->get()
->map(fn ($event) => [
'id' => $event->id,
'startDate' => $event->start,
'endDate' => $event->start->addHours(1),
'location' => $event->location,
'description' => $event->description,
]),
])->layout('layouts.app', [
'SEOData' => new SEOData(
title: __('Meetup dates'),
description: __('List of all meetup dates'),
image: asset('img/screenshot.png')
),
]);
}
public function filterByMarker($id)
{
return to_route('meetup.table.meetupEvent', [
'#table',
'country' => $this->country->code,
'year' => $this->year,
'meetup_events' => [
'filters' => [
'byid' => $id,
],
],
]);
}
public function popover($content, $ids)
{
return to_route('meetup.table.meetupEvent', [
'#table',
'year' => $this->year,
'country' => $this->country->code,
'meetup_events' => [
'filters' => [
'byid' => $ids,
],
],
]);
}
}