multilines wip

This commit is contained in:
salam committed 2025-12-13 09:57:15 +01:00
1 parent 218c1e6e1c
commit 825a8d430c
19 files changed
+145 -78

No files matched your search

-8
View File
@@ -1,8 +0,0 @@
<?php
namespace App\Actions;
class MultilineGenerator
{
public static function run() {}
}
+35
View File
@@ -0,0 +1,35 @@
<?php
namespace App\Actions;
use App\Models\Multiline;
class MultilineSlots
{
public static function addSlots(&$data, $bettype_id, $matchpart_id)
{
$slots = Multiline::where('sport_id', auth()->user()->sport_id)
->where('client_id', auth()->user()->client_id)
->where('bettype_id', $bettype_id)
->where('matchpart_id', $matchpart_id)
->with('bookmaker')
->orderBy('sort')
->get();
$multilines = [];
foreach ($slots as $id => $slot) {
$open = true;
foreach ($data as $item) {
if ($slot->bookmaker_id == $item->bookmaker_id) {
$multilines[$id] = $item;
$open = false;
}
}
if ($open) {
$multilines[$id] = $slot;
}
}
return $multilines;
}
}
@@ -6,7 +6,6 @@ use App\Filament\Resources\Events\Pages\ListEvents;
use App\Filament\Resources\Events\Schemas\EventForm;
use App\Filament\Resources\Events\Tables\EventsTable;
use App\Models\Event;
use App\Models\Multiline;
use Carbon\Carbon;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
@@ -27,11 +26,6 @@ class EventResource extends Resource
protected static ?string $pluralModelLabel = 'Monitor';
public static function getPluralModelLabel(): string
{
return '';
}
public static function form(Schema $schema): Schema
{
return EventForm::configure($schema);
@@ -42,13 +36,6 @@ class EventResource extends Resource
return EventsTable::configure($table);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
@@ -66,15 +53,7 @@ class EventResource extends Resource
public static function getEloquentQuery(): Builder
{
// $_bookmaker = Multiline::where('sport_id', auth()->user()->sport_id)
// ->where('client_id', auth()->user()->client_id)
// ->where('bettype_id', 1)
// ->where('matchpart_id', 1)
// ->pluck('bookmaker_id')
// ->toArray();
return parent::getEloquentQuery()
// ->join('odds_3ways', 'odds_3ways.event_id', '=', 'events.id')
->where('starttime', '>', Carbon::now())
->where('sport_id', auth()->user()->sport_id);
}
@@ -5,6 +5,7 @@ namespace App\Filament\Resources\Events\Tables;
use App\Filament\Tables\Columns\Odds3Way;
use Carbon\Carbon;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteAction;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Support\Enums\FontWeight;
@@ -42,13 +43,14 @@ class EventsTable
TextColumn::make('home.name')->alignRight()->searchable(),
TextColumn::make('away.name')->searchable(),
Odds3Way::make('odds_3way')->label('Market 1X2'),
Odds3Way::make('odds_3way.bookmaker')->label('1X2'),
])
->filters([
//
])
->recordActions([
// EditAction::make(),
DeleteAction::make()->iconButton(),
])
->toolbarActions([
BulkActionGroup::make([
@@ -13,7 +13,7 @@ class EditMultiline extends EditRecord
protected function getHeaderActions(): array
{
return [
DeleteAction::make(),
// DeleteAction::make(),
];
}
}
@@ -13,9 +13,9 @@ class ListMultilines extends ListRecords
protected function getHeaderActions(): array
{
return [
CreateAction::make()
->createAnother(false)
->hidden(! auth()->user()->super_admin),
// CreateAction::make()
// ->createAnother(false)
// ->hidden(! auth()->user()->super_admin),
];
}
}
@@ -7,7 +7,10 @@ use Filament\Actions\Action;
use Filament\Actions\EditAction;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Enums\FiltersLayout;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
class MultilinesTable
{
@@ -20,6 +23,7 @@ class MultilinesTable
->label($isReordering ? 'Disable reordering' : 'Enable reordering'),
)
->reorderable('sort')
->defaultGroup('bettype.name')
->columns([
IconColumn::make('sport.icon')
->label('')
@@ -33,16 +37,25 @@ class MultilinesTable
TextColumn::make('bookmaker.name'),
BookmakerIcon::make('bookmaker.icon')->label('Icon'),
])
->defaultSort('sort')
->deferFilters(false)
->filters([
//
])
SelectFilter::make('sport_id')
->label('Sport')
->default(1)
->selectablePlaceholder(false)
->relationship('sport', 'name', fn (Builder $query) => $query->where('is_active', 1))
->preload(),
], FiltersLayout::AboveContent)
->hiddenFilterIndicators()
->persistFiltersInSession()
->recordActions([
EditAction::make()
->mutateDataUsing(function (array $data): array {
$data['client_id'] = auth()->user()->client_id;
// EditAction::make()
// ->mutateDataUsing(function (array $data): array {
// $data['client_id'] = auth()->user()->client_id;
return $data;
}),
// return $data;
// }),
]);
}
}
+13
View File
@@ -2,9 +2,22 @@
namespace App\Filament\Tables\Columns;
use App\Actions\MultilineSlots;
use Filament\Tables\Columns\Column;
class Odds3Way extends Column
{
protected string $view = 'filament.tables.columns.odds3-way';
protected ?array $multiline;
public function loadMultiline(&$data)
{
$this->multiline = MultilineSlots::addSlots($data, 1, 1);
}
public function getMultiline(): ?array
{
return $this->multiline;
}
}
+1 -10
View File
@@ -52,15 +52,6 @@ class Event extends Model
public function odds_3way()
{
$_bookmaker = Multiline::where('sport_id', auth()->user()->sport_id)
->where('client_id', auth()->user()->client_id)
->where('bettype_id', 1)
->where('matchpart_id', 1)
->pluck('bookmaker_id');
return $this->hasMany(Odds3way::class, 'event_id', 'id')
->join('multilines', 'multilines.bookmaker_id', 'odds_3ways.bookmaker_id')
->orderBy('multilines.sort');
// return $this->hasMany(Odds3way::class, 'event_id', 'id')->whereIn('bookmaker_id', $_bookmaker);
return $this->hasMany(Odds3way::class, 'event_id', 'id')->with('bookmaker');
}
}
+6
View File
@@ -2,6 +2,7 @@
namespace App\Models;
use App\Models\Scopes\ClientScope;
use Illuminate\Database\Eloquent\Model;
class Multiline extends Model
@@ -34,4 +35,9 @@ class Multiline extends Model
{
return $this->belongsTo(Bookmaker::class, 'bookmaker_id', 'txid');
}
protected static function booted(): void
{
static::addGlobalScope(new ClientScope);
}
}
+20
View File
@@ -0,0 +1,20 @@
<?php
namespace App\Models\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class ClientScope implements Scope
{
/**
* Apply the scope to a given Eloquent query builder.
*/
public function apply(Builder $builder, Model $model): void
{
if (auth()->hasUser()) {
$builder->where('client_id', auth()->user()->client_id);
}
}
}
+3 -3
View File
@@ -4,10 +4,10 @@ namespace App\Utilities;
class BkmIconMap
{
public static function get($bookmaker)
public static function get($image)
{
if ($bookmaker) {
return asset("storage/bookmaker-icons/$bookmaker->icon.png");
if ($image) {
return asset("storage/bookmaker-icons/$image.png");
} else {
return asset('storage/bookmaker-icons/missing.png');
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace App\Utilities;
class OddsFormatting
{
public static function get($odd, $stellen = 2)
{
if ($odd != 0) {
return number_format($odd, $stellen);
}
}
}