mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
proximitySearch added
This commit is contained in:
@@ -6,16 +6,20 @@ use App\Models\City;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Rappasoft\LaravelLivewireTables\DataTableComponent;
|
||||
use Rappasoft\LaravelLivewireTables\Views\Column;
|
||||
use WireUi\Traits\Actions;
|
||||
|
||||
class CityTable extends DataTableComponent
|
||||
{
|
||||
use Actions;
|
||||
|
||||
public string $country;
|
||||
|
||||
protected $model = City::class;
|
||||
|
||||
public function configure(): void
|
||||
{
|
||||
$this->setPrimaryKey('id');
|
||||
$this->setPrimaryKey('id')
|
||||
->setAdditionalSelects(['id']);
|
||||
}
|
||||
|
||||
public function columns(): array
|
||||
@@ -44,4 +48,15 @@ class CityTable extends DataTableComponent
|
||||
return City::query()
|
||||
->whereHas('country', fn($query) => $query->where('code', $this->country));
|
||||
}
|
||||
|
||||
public function proximitySearch($id)
|
||||
{
|
||||
$city = City::query()
|
||||
->find($id);
|
||||
$query = City::radius($city->latitude, $city->longitude, 100)
|
||||
->where('id', '!=', $id);
|
||||
$this->notification()
|
||||
->success('Proximity Search', 'Found '.$query->count().' cities. '.$query->pluck('name')
|
||||
->implode(', '));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,12 +38,12 @@ class EventTable extends DataTableComponent
|
||||
->sortable(),
|
||||
Column::make("Zuletzt geändert", "updated_at")
|
||||
->sortable(),
|
||||
Column::make("Teilnehmer")
|
||||
/*Column::make("Teilnehmer")
|
||||
->label(
|
||||
fn($row, Column $column) => '<strong>'.$row->registrations->count().'</strong>'
|
||||
)
|
||||
->html()
|
||||
->sortable(),
|
||||
->sortable(),*/
|
||||
Column::make('')
|
||||
->label(
|
||||
fn($row, Column $column) => view('columns.events.action')->withRow($row)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Akuechler\Geoly;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Spatie\Sluggable\HasSlug;
|
||||
@@ -11,6 +12,7 @@ class City extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
use HasSlug;
|
||||
use Geoly;
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
|
||||
@@ -2,30 +2,28 @@
|
||||
|
||||
namespace App\Nova;
|
||||
|
||||
use Laravel\Nova\Fields\ID;
|
||||
use Illuminate\Http\Request;
|
||||
use Laravel\Nova\Fields\Text;
|
||||
use Laravel\Nova\Fields\BelongsTo;
|
||||
use Laravel\Nova\Fields\ID;
|
||||
use Laravel\Nova\Fields\Number;
|
||||
use Laravel\Nova\Fields\Text;
|
||||
|
||||
class City extends Resource
|
||||
{
|
||||
/**
|
||||
* The model the resource corresponds to.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public static $model = \App\Models\City::class;
|
||||
|
||||
/**
|
||||
* The single value that should be used to represent the resource when being displayed.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public static $title = 'name';
|
||||
|
||||
/**
|
||||
* The columns that should be searched.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $search = [
|
||||
@@ -37,12 +35,14 @@ class City extends Resource
|
||||
* Get the fields displayed by the resource.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function fields(Request $request)
|
||||
{
|
||||
return [
|
||||
ID::make()->sortable(),
|
||||
ID::make()
|
||||
->sortable(),
|
||||
|
||||
Text::make('Name')
|
||||
->rules('required', 'string'),
|
||||
@@ -50,6 +50,12 @@ class City extends Resource
|
||||
Text::make('Slug')
|
||||
->exceptOnForms(),
|
||||
|
||||
Number::make('Latitude')
|
||||
->rules('required', 'numeric')->step(0.00001),
|
||||
|
||||
Number::make('Longitude')
|
||||
->rules('required', 'numeric')->step(0.00001),
|
||||
|
||||
BelongsTo::make('Country'),
|
||||
|
||||
];
|
||||
@@ -59,6 +65,7 @@ class City extends Resource
|
||||
* Get the cards available for the request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function cards(Request $request)
|
||||
@@ -70,6 +77,7 @@ class City extends Resource
|
||||
* Get the filters available for the resource.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function filters(Request $request)
|
||||
@@ -81,6 +89,7 @@ class City extends Resource
|
||||
* Get the lenses available for the resource.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function lenses(Request $request)
|
||||
@@ -92,6 +101,7 @@ class City extends Resource
|
||||
* Get the actions available for the resource.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function actions(Request $request)
|
||||
|
||||
@@ -53,7 +53,7 @@ class CityPolicy
|
||||
*/
|
||||
public function update(User $user, City $city)
|
||||
{
|
||||
//
|
||||
return $user->is_lecturer;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user