mapper wip

This commit is contained in:
salam committed 2025-12-26 12:29:29 +01:00
1 parent 16cc214db6
commit d635ebe563
38 files changed
+98 -680

No files matched your search

@@ -1,14 +0,0 @@
<?php
namespace App\Filament\Clusters\Settings;
use BackedEnum;
use Filament\Clusters\Cluster;
use Filament\Support\Icons\Heroicon;
class SettingsCluster extends Cluster
{
protected static string|BackedEnum|null $navigationIcon = Heroicon::AdjustmentsHorizontal;
protected static ?int $navigationSort = 2;
}
@@ -1,69 +0,0 @@
<?php
namespace App\Filament\Resources\CompetitionGroupFilters;
use App\Filament\Clusters\Settings\SettingsCluster;
use App\Filament\Resources\CompetitionGroupFilters\Pages\CreateCompetitionGroupFilter;
use App\Filament\Resources\CompetitionGroupFilters\Pages\EditCompetitionGroupFilter;
use App\Filament\Resources\CompetitionGroupFilters\Pages\ListCompetitionGroupFilters;
use App\Filament\Resources\CompetitionGroupFilters\Schemas\CompetitionGroupFilterForm;
use App\Filament\Resources\CompetitionGroupFilters\Tables\CompetitionGroupFiltersTable;
use App\Models\CompetitionGroupFilter;
use BackedEnum;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Table;
use UnitEnum;
class CompetitionGroupFilterResource extends Resource
{
protected static ?string $model = CompetitionGroupFilter::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
protected static ?string $recordTitleAttribute = 'name';
protected static ?string $cluster = SettingsCluster::class;
protected static string|UnitEnum|null $navigationGroup = 'Filter';
protected static ?string $navigationLabel = 'Comp Group';
protected static ?string $modelLabel = 'Comp Group';
protected static ?string $title = 'Comp Group';
protected static ?string $pluralModelLabel = 'Comp Groups';
public static function form(Schema $schema): Schema
{
return CompetitionGroupFilterForm::configure($schema);
}
public static function table(Table $table): Table
{
return CompetitionGroupFiltersTable::configure($table);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => ListCompetitionGroupFilters::route('/'),
'create' => CreateCompetitionGroupFilter::route('/create'),
'edit' => EditCompetitionGroupFilter::route('/{record}/edit'),
];
}
public static function getNavigationBadge(): ?string
{
return parent::getEloquentQuery()->count();
}
}
@@ -1,11 +0,0 @@
<?php
namespace App\Filament\Resources\CompetitionGroupFilters\Pages;
use App\Filament\Resources\CompetitionGroupFilters\CompetitionGroupFilterResource;
use Filament\Resources\Pages\CreateRecord;
class CreateCompetitionGroupFilter extends CreateRecord
{
protected static string $resource = CompetitionGroupFilterResource::class;
}
@@ -1,19 +0,0 @@
<?php
namespace App\Filament\Resources\CompetitionGroupFilters\Pages;
use App\Filament\Resources\CompetitionGroupFilters\CompetitionGroupFilterResource;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
class EditCompetitionGroupFilter extends EditRecord
{
protected static string $resource = CompetitionGroupFilterResource::class;
protected function getHeaderActions(): array
{
return [
DeleteAction::make(),
];
}
}
@@ -1,19 +0,0 @@
<?php
namespace App\Filament\Resources\CompetitionGroupFilters\Pages;
use App\Filament\Resources\CompetitionGroupFilters\CompetitionGroupFilterResource;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
class ListCompetitionGroupFilters extends ListRecords
{
protected static string $resource = CompetitionGroupFilterResource::class;
protected function getHeaderActions(): array
{
return [
CreateAction::make(),
];
}
}
@@ -1,16 +0,0 @@
<?php
namespace App\Filament\Resources\CompetitionGroupFilters\Schemas;
use Filament\Schemas\Schema;
class CompetitionGroupFilterForm
{
public static function configure(Schema $schema): Schema
{
return $schema
->components([
//
]);
}
}
@@ -1,30 +0,0 @@
<?php
namespace App\Filament\Resources\CompetitionGroupFilters\Tables;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Tables\Table;
class CompetitionGroupFiltersTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
//
])
->filters([
//
])
->recordActions([
EditAction::make(),
])
->toolbarActions([
BulkActionGroup::make([
DeleteBulkAction::make(),
]),
]);
}
}
@@ -1,69 +0,0 @@
<?php
namespace App\Filament\Resources\ElementFilters;
use App\Filament\Clusters\Settings\SettingsCluster;
use App\Filament\Resources\ElementFilters\Pages\CreateElementFilter;
use App\Filament\Resources\ElementFilters\Pages\EditElementFilter;
use App\Filament\Resources\ElementFilters\Pages\ListElementFilters;
use App\Filament\Resources\ElementFilters\Schemas\ElementFilterForm;
use App\Filament\Resources\ElementFilters\Tables\ElementFiltersTable;
use App\Models\ElementFilter;
use BackedEnum;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Table;
use UnitEnum;
class ElementFilterResource extends Resource
{
protected static ?string $model = ElementFilter::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
protected static ?string $recordTitleAttribute = 'name';
protected static ?string $cluster = SettingsCluster::class;
protected static string|UnitEnum|null $navigationGroup = 'Filter';
protected static ?string $navigationLabel = 'Element';
protected static ?string $modelLabel = 'Element';
protected static ?string $title = 'Element';
protected static ?string $pluralModelLabel = 'Elements';
public static function form(Schema $schema): Schema
{
return ElementFilterForm::configure($schema);
}
public static function table(Table $table): Table
{
return ElementFiltersTable::configure($table);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => ListElementFilters::route('/'),
'create' => CreateElementFilter::route('/create'),
'edit' => EditElementFilter::route('/{record}/edit'),
];
}
public static function getNavigationBadge(): ?string
{
return parent::getEloquentQuery()->count();
}
}
@@ -1,11 +0,0 @@
<?php
namespace App\Filament\Resources\ElementFilters\Pages;
use App\Filament\Resources\ElementFilters\ElementFilterResource;
use Filament\Resources\Pages\CreateRecord;
class CreateElementFilter extends CreateRecord
{
protected static string $resource = ElementFilterResource::class;
}
@@ -1,19 +0,0 @@
<?php
namespace App\Filament\Resources\ElementFilters\Pages;
use App\Filament\Resources\ElementFilters\ElementFilterResource;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
class EditElementFilter extends EditRecord
{
protected static string $resource = ElementFilterResource::class;
protected function getHeaderActions(): array
{
return [
DeleteAction::make(),
];
}
}
@@ -1,19 +0,0 @@
<?php
namespace App\Filament\Resources\ElementFilters\Pages;
use App\Filament\Resources\ElementFilters\ElementFilterResource;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
class ListElementFilters extends ListRecords
{
protected static string $resource = ElementFilterResource::class;
protected function getHeaderActions(): array
{
return [
CreateAction::make(),
];
}
}
@@ -1,16 +0,0 @@
<?php
namespace App\Filament\Resources\ElementFilters\Schemas;
use Filament\Schemas\Schema;
class ElementFilterForm
{
public static function configure(Schema $schema): Schema
{
return $schema
->components([
//
]);
}
}
@@ -1,30 +0,0 @@
<?php
namespace App\Filament\Resources\ElementFilters\Tables;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Tables\Table;
class ElementFiltersTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
//
])
->filters([
//
])
->recordActions([
EditAction::make(),
])
->toolbarActions([
BulkActionGroup::make([
DeleteBulkAction::make(),
]),
]);
}
}
@@ -46,7 +46,6 @@ class EventResource extends Resource
public static function getNavigationBadge(): ?string
{
return parent::getEloquentQuery()
->where('sport_id', auth()->user()->sport_id)
->where('starttime', '>', Carbon::now())
->count();
}
@@ -54,7 +53,6 @@ class EventResource extends Resource
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->where('starttime', '>', Carbon::now())
->where('sport_id', auth()->user()->sport_id);
->where('starttime', '>', Carbon::now());
}
}
@@ -110,7 +110,7 @@ class EventsTable
public static function load_bettype_settings()
{
self::$bettype_settings = BettypeUser::where('user_id', auth()->user()->id)->where('sport_id', auth()->user()->sport_id)->where('is_active', 1)->pluck('multiline_setting_id')->toArray();
self::$bettype_settings = BettypeUser::where('is_active', 1)->pluck('multiline_setting_id')->toArray();
}
public static function configure(Table $table): Table
@@ -1,64 +0,0 @@
<?php
namespace App\Filament\Resources\GroupFilters;
use App\Filament\Clusters\Settings\SettingsCluster;
use App\Filament\Resources\GroupFilters\Pages\ListGroupFilters;
use App\Filament\Resources\GroupFilters\Schemas\GroupFilterForm;
use App\Filament\Resources\GroupFilters\Tables\GroupFiltersTable;
use App\Models\GroupFilter;
use BackedEnum;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Table;
class GroupFilterResource extends Resource
{
protected static ?string $model = GroupFilter::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
protected static ?string $recordTitleAttribute = 'name';
protected static ?string $cluster = SettingsCluster::class;
protected static string|\UnitEnum|null $navigationGroup = 'Filter';
protected static ?string $navigationLabel = 'Group';
protected static ?string $modelLabel = 'Group';
protected static ?string $title = 'Group';
protected static ?string $pluralModelLabel = 'Groups';
public static function form(Schema $schema): Schema
{
return GroupFilterForm::configure($schema);
}
public static function table(Table $table): Table
{
return GroupFiltersTable::configure($table);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => ListGroupFilters::route('/'),
];
}
public static function getNavigationBadge(): ?string
{
return parent::getEloquentQuery()->count();
}
}
@@ -1,11 +0,0 @@
<?php
namespace App\Filament\Resources\GroupFilters\Pages;
use App\Filament\Resources\GroupFilters\GroupFilterResource;
use Filament\Resources\Pages\CreateRecord;
class CreateGroupFilter extends CreateRecord
{
protected static string $resource = GroupFilterResource::class;
}
@@ -1,19 +0,0 @@
<?php
namespace App\Filament\Resources\GroupFilters\Pages;
use App\Filament\Resources\GroupFilters\GroupFilterResource;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
class EditGroupFilter extends EditRecord
{
protected static string $resource = GroupFilterResource::class;
protected function getHeaderActions(): array
{
return [
DeleteAction::make(),
];
}
}
@@ -1,19 +0,0 @@
<?php
namespace App\Filament\Resources\GroupFilters\Pages;
use App\Filament\Resources\GroupFilters\GroupFilterResource;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
class ListGroupFilters extends ListRecords
{
protected static string $resource = GroupFilterResource::class;
protected function getHeaderActions(): array
{
return [
CreateAction::make(),
];
}
}
@@ -1,27 +0,0 @@
<?php
namespace App\Filament\Resources\GroupFilters\Schemas;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Schema;
class GroupFilterForm
{
public static function configure(Schema $schema): Schema
{
return $schema
->components([
TextInput::make('group_id')
->required()
->numeric(),
TextInput::make('bkm_group_id')
->required()
->numeric(),
TextInput::make('bookmaker_id')
->required()
->numeric(),
TextInput::make('name')
->default(null),
]);
}
}
@@ -1,49 +0,0 @@
<?php
namespace App\Filament\Resources\GroupFilters\Tables;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
class GroupFiltersTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
TextColumn::make('group_id')
->numeric()
->sortable(),
TextColumn::make('bkm_group_id')
->numeric()
->sortable(),
TextColumn::make('bookmaker_id')
->numeric()
->sortable(),
TextColumn::make('name')
->searchable(),
TextColumn::make('created_at')
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
TextColumn::make('updated_at')
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
])
->filters([
//
])
->recordActions([
EditAction::make(),
])
->toolbarActions([
BulkActionGroup::make([
DeleteBulkAction::make(),
]),
]);
}
}
@@ -1,48 +0,0 @@
<?php
namespace App\Filament\Resources\MultilineClients;
use App\Filament\Clusters\Settings\SettingsCluster;
use App\Filament\Resources\MultilineClients\Pages\ListMultilineClients;
use App\Filament\Resources\MultilineClients\Schemas\MultilineClientForm;
use App\Filament\Resources\MultilineClients\Tables\MultilineClientsTable;
use App\Models\MultilineClient;
use BackedEnum;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Table;
class MultilineClientResources extends Resource
{
protected static ?string $model = MultilineClient::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::Bars3;
protected static ?string $cluster = SettingsCluster::class;
// protected static string|\UnitEnum|null $navigationGroup = 'Settings';
protected static ?string $navigationLabel = 'Multiline';
protected static ?string $modelLabel = 'Multiline';
protected static ?string $title = 'Multiline';
public static function form(Schema $schema): Schema
{
return MultilineClientForm::configure($schema);
}
public static function table(Table $table): Table
{
return MultilineClientsTable::configure($table);
}
public static function getPages(): array
{
return [
'index' => ListMultilineClients::route('/'),
];
}
}
@@ -1,11 +0,0 @@
<?php
namespace App\Filament\Resources\MultilineClients\Pages;
use App\Filament\Resources\MultilineClients\MultilineClientResources;
use Filament\Resources\Pages\CreateRecord;
class CreateMultilineClient extends CreateRecord
{
protected static string $resource = MultilineClientResources::class;
}
@@ -1,19 +0,0 @@
<?php
namespace App\Filament\Resources\MultilineClients\Pages;
use App\Filament\Resources\MultilineClients\MultilineClientResources;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
class EditMultilineClient extends EditRecord
{
protected static string $resource = MultilineClientResources::class;
protected function getHeaderActions(): array
{
return [
// DeleteAction::make(),
];
}
}
@@ -1,19 +0,0 @@
<?php
namespace App\Filament\Resources\MultilineClients\Pages;
use App\Filament\Resources\MultilineClients\MultilineClientResources;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
class ListMultilineClients extends ListRecords
{
protected static string $resource = MultilineClientResources::class;
protected function getHeaderActions(): array
{
return [
// CreateAction::make()->createAnother(false),
];
}
}
@@ -1,36 +0,0 @@
<?php
namespace App\Filament\Resources\MultilineClients\Schemas;
use App\Models\Bettype;
use App\Models\Bookmaker;
use App\Models\Matchpart;
use App\Models\Sport;
use Filament\Forms\Components\Select;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Schema;
class MultilineClientForm
{
public static $bettypes = [1, 2, 3, 4, 16, 2001, 2002, 2021, 3001, 3002, 3021];
public static function configure(Schema $schema): Schema
{
return $schema
->components([
Select::make('sport_id')
->live()
->options(Sport::where('is_active', 1)->pluck('name', 'id'))
->preload(),
Select::make('matchpart_id')
->options(Matchpart::where('is_active', 1)->pluck('name', 'id'))
->preload(),
Select::make('bettype_id')
->options(fn (Get $get) => Bettype::where('sport_id', $get('sport_id'))->whereIn('bettype_id', self::$bettypes)->pluck('name', 'bettype_id')),
Select::make('bookmaker_id')
->options(Bookmaker::where('is_active', 1)->pluck('name', 'txid'))
->preload()
->searchable(),
]);
}
}
@@ -1,93 +0,0 @@
<?php
namespace App\Filament\Resources\MultilineClients\Tables;
use App\Filament\Tables\Columns\BookmakerIcon;
use App\Models\Bookmaker;
use App\Models\Client;
use App\Models\MultilineSetting;
use App\Models\Sport;
use Filament\Actions\Action;
use Filament\Forms\Components\Select;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\SelectColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Enums\FiltersLayout;
use Filament\Tables\Filters\Filter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
class MultilineClientsTable
{
public static function configure(Table $table): Table
{
return $table
->paginated(false)
->reorderRecordsTriggerAction(
fn (Action $action, bool $isReordering) => $action
->button()
->label($isReordering ? 'Disable reordering' : 'Enable reordering'),
)
->reorderable('sort')
->columns([
IconColumn::make('sport.icon')
->label('')
->width('1rem')
->icon(function ($record): string {
return $record->sport->icon;
}),
TextColumn::make('sport.name'),
TextColumn::make('multiline_setting.name')->label('Bettype'),
BookmakerIcon::make('bookmaker.icon')->label('Icon'),
SelectColumn::make('bookmaker_id')
->label('Bookmaker')
->width('2rem')
->options(function () {
$books = Bookmaker::where('is_active', 1)->orderBy('txid')->pluck('name', 'txid');
foreach ($books as $key => $value) {
$books[$key] = $key.' - '.$value;
}
return $books;
}),
// ->options(Bookmaker::where('is_active', 1)->pluck('name', 'txid')),
])
->defaultSort('sort')
->deferFilters(false)
->filters([
Filter::make('multiline')
->schema([
Select::make('sport_id')
->label('Sport')
->default(1)
->options(function () {
$sports = Client::where('id', auth()->user()->client_id)->pluck('sport')->first();
return Sport::query()->whereIn('id', $sports)->pluck('name', 'id');
})
->live(),
Select::make('multiline_setting_id')
->label('Bettype')
->default(1)
->options(function (Get $get) {
return MultilineSetting::where('sport_id', $get('sport_id'))->pluck('name', 'id');
})
->live(),
])
->query(function (Builder $query, array $data): Builder {
return $query
->when(
$data['sport_id'],
fn (Builder $query, $sport_id) => $query->where('sport_id', $sport_id)
)->when(
$data['multiline_setting_id'],
fn (Builder $query, $multiline_setting_id) => $query->where('multiline_setting_id', $multiline_setting_id)
);
})
->columns(3)->columnSpan(3),
], layout: FiltersLayout::AboveContent)
->hiddenFilterIndicators();
}
}