multiline wip

This commit is contained in:
salam committed 2025-12-15 18:23:16 +01:00
1 parent 3fb481afd0
commit 79bb8a0226
16 files changed
+143 -222

No files matched your search

+5 -7
View File
@@ -2,21 +2,19 @@
namespace App\Actions;
use App\Models\Multiline;
use App\Models\MultilineClient;
class MultilineSlots
{
public static function addSlots(&$data, $bettype_id, $matchpart_id)
public static function addSlots(&$data)
{
$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')
$slots = MultilineClient::select('bookmaker_id')
->where('multiline_setting_id', auth()->user()->multiline_setting_id)
->orderBy('sort')
->get();
$multilines = [];
foreach ($slots as $id => $slot) {
$open = true;
foreach ($data as $item) {
@@ -53,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);
@@ -3,36 +3,21 @@
namespace App\Filament\Resources\Events\Tables;
use App\Filament\Tables\Columns\Odds3Way;
use App\Models\Client;
use App\Models\CompetitionGroup;
use App\Models\Sport;
use App\Models\User;
use Carbon\Carbon;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteAction;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Forms\Components\Select;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Support\Enums\FontWeight;
use Filament\Support\Enums\IconSize;
use Filament\Tables\Columns\IconColumn;
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 EventsTable
{
protected $listeners = [
'bettypeswitch' => '$refresh',
];
public static function configure(Table $table): Table
{
return $table
// ->poll('10s')
->poll('10s')
->striped()
->columns([
IconColumn::make('sport.icon')
@@ -56,56 +41,14 @@ class EventsTable
TextColumn::make('home.name')->alignRight()->searchable(),
TextColumn::make('away.name')->searchable(),
Odds3Way::make('odds_3way.bookmaker')->label('1X2'),
Odds3Way::make('odds_3way.bookmaker')->label('Market')->visible(auth()->user()->multiline_setting_id == 1),
])
->defaultSort('starttime', 'ASC')
->deferFilters(false)
->filters([
Filter::make('event')
->form([
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');
})
->afterStateUpdated(function ($state) {
User::where('id', auth()->user()->id)->update(['sport_id' => $state]);
}),
Select::make('competition_group_id')
->label('League')
->default(1)
->options(function (Get $get) {
return CompetitionGroup::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['competition_group_id'],
fn (Builder $query, $competition_group_id) => $query->where('competition_group_id', $competition_group_id)
);
})
->columns(3)->columnSpan(3),
], layout: FiltersLayout::AboveContent)
->hiddenFilterIndicators(false)
->persistFiltersInSession()
->recordActions([
// EditAction::make(),
DeleteAction::make()->iconButton(),
])
->toolbarActions([
BulkActionGroup::make([
DeleteBulkAction::make(),
]),
// DeleteAction::make()->iconButton(),
]);
}
}
@@ -47,7 +47,7 @@ class MultilineClientsTable
->defaultSort('sort')
->deferFilters(false)
->filters([
Filter::make('multilineclient')
Filter::make('multiline')
->form([
Select::make('sport_id')
->label('Sport')
+5 -5
View File
@@ -9,15 +9,15 @@ class Odds3Way extends Column
{
protected string $view = 'filament.tables.columns.odds3-way';
protected ?array $multiline;
protected ?array $slots = [];
public function loadMultiline(&$data)
public function loadSlots(&$data)
{
$this->multiline = MultilineSlots::addSlots($data, 1, 1);
$this->slots = MultilineSlots::addSlots($data);
}
public function getMultiline(): ?array
public function getSlots(): ?array
{
return $this->multiline;
return $this->slots;
}
}
+29 -12
View File
@@ -2,26 +2,40 @@
namespace App\Livewire;
use App\Models\Client;
use App\Models\MultilineSetting;
use App\Models\MultilineUser;
use App\Models\Sport;
use App\Models\User;
use Livewire\Component;
class MonitorBettypeSwitch extends Component
{
public $multilines = [];
public $sports = [];
public $sport_id = 0;
public $sporticon = '';
public $iconcolor = '';
public function mount()
{
$settings = MultilineSetting::where('sport_id', auth()->user()->sport_id)->get();
$cps = Client::where('id', auth()->user()->client_id)->pluck('sport')->first();
$multiline_setting_id = MultilineUser::where('user_id', auth()->user()->id)->where('sport_id', auth()->user()->sport_id)->pluck('multiline_setting_id')->first();
$this->sports = Sport::whereIn('id', $cps)->pluck('name', 'id');
if (! $multiline_setting_id) {
$multiline_setting_id = MultilineSetting::where('sport_id', auth()->user()->sport_id)->pluck('id')->first();
}
$this->sporticon = Sport::where('id', auth()->user()->sport_id)->pluck('icon')->first();
$this->iconcolor = Sport::where('id', auth()->user()->sport_id)->pluck('color')->first();
$this->sport_id = auth()->user()->sport_id;
$this->multilines = [];
$settings = MultilineSetting::where('sport_id', auth()->user()->sport_id)->get();
foreach ($settings as $setting) {
$this->multilines[] = [
@@ -30,7 +44,7 @@ class MonitorBettypeSwitch extends Component
'name' => $setting->name,
'short' => $setting->short,
'table' => $setting->table,
'is_active' => $setting->id == $multiline_setting_id ? 1 : 0,
'is_active' => $setting->id == auth()->user()->multiline_setting_id ? 1 : 0,
];
}
}
@@ -40,13 +54,16 @@ class MonitorBettypeSwitch extends Component
return view('livewire.monitor-bettype-switch');
}
public function swop($multiline_setting_id)
public function swopBettype($multiline_setting_id)
{
User::where('id', auth()->user()->id)->update(['multiline_setting_id' => $multiline_setting_id]);
MultilineUser::updateOrCreate(
['user_id' => auth()->user()->id, 'sport_id' => auth()->user()->sport_id],
['multiline_setting_id' => $multiline_setting_id]
);
$this->js('window.location.reload()');
}
public function swopSport()
{
User::where('id', auth()->user()->id)->update(['sport_id' => $this->sport_id]);
$this->js('window.location.reload()');
}
-24
View File
@@ -1,24 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MultilineUser extends Model
{
protected $fillable = [
'user_id',
'sport_id',
'multiline_setting_id',
];
public function sport()
{
return $this->belongsTo(Sport::class);
}
public function multiline_setting()
{
return $this->belongsTo(MultilineSetting::class);
}
}
+1
View File
@@ -31,6 +31,7 @@ class User extends Authenticatable implements FilamentUser, HasAppAuthentication
'password',
'agb_akzeptiert',
'app_verified_at',
'sport_id',
];
protected static function newFactory(): Factory
+1 -1
View File
@@ -48,7 +48,7 @@ class AppServiceProvider extends ServiceProvider
'gray' => Color::Zinc,
'primary' => Color::Blue,
'success' => Color::Green,
'warning' => Color::Yellow,
'warning' => Color::Amber,
'info' => Color::Fuchsia,
]);