multiline wip
This commit is contained in:
1 parent
3fb481afd0
commit
79bb8a0226
16 files changed
+143
-222
No files matched your search
@@ -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')
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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()');
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,7 @@ class User extends Authenticatable implements FilamentUser, HasAppAuthentication
|
||||
'password',
|
||||
'agb_akzeptiert',
|
||||
'app_verified_at',
|
||||
'sport_id',
|
||||
];
|
||||
|
||||
protected static function newFactory(): Factory
|
||||
|
||||
@@ -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,
|
||||
]);
|
||||
|
||||
|
||||
Reference in new issue
Block a user