mapping search wip (stuck)

This commit is contained in:
salam committed 2025-12-29 15:32:24 +01:00
1 parent ea91af51fa
commit b475d78f43
14 files changed
+126 -33

No files matched your search

@@ -47,14 +47,17 @@ class Bwin
foreach ($data['results'] as $event) { foreach ($data['results'] as $event) {
$betsapi_id = $event['our_event_id'] ?? 0; $betsapi_id = $event['our_event_id'] ?? 0;
$betradar_id = $event['BetRadarId'] ?? 0; $betradar_id = $event['BetRadarId'] ?? 0;
$bwin_id = $event['Id'] ?? 0; $bwin_id = $event['Id'] ?? 0;
if ($debug) { if ($betradar_id && $betsapi_id) {
Notice::note(["Betsapi ID : $betsapi_id", "Betradar ID : $betradar_id", "Bwin ID : $bwin_id"]);
} if ($debug) {
Notice::note(["Betsapi ID : $betsapi_id", "Betradar ID : $betradar_id", "Bwin ID : $bwin_id"]);
}
if ($betradar_id) {
Event::where('betsapi_id', (int) $betsapi_id)->update(['betradar_id' => $betradar_id, 'bwin_id' => $bwin_id]); Event::where('betsapi_id', (int) $betsapi_id)->update(['betradar_id' => $betradar_id, 'bwin_id' => $bwin_id]);
Mapper::where('event_id', $betsapi_id)->delete(); Mapper::where('event_id', $betsapi_id)->delete();
@@ -4,6 +4,7 @@ namespace App\Console\Commands\Grapper\Betsapi;
use App\Console\Commands\Curl; use App\Console\Commands\Curl;
use App\Console\Commands\Nuh; use App\Console\Commands\Nuh;
use App\Models\Event;
use App\Models\Mapper; use App\Models\Mapper;
use App\Models\Sport; use App\Models\Sport;
use App\Utilities\Notice; use App\Utilities\Notice;
@@ -33,7 +34,7 @@ class Fixtures
$total = 1; $total = 1;
foreach ($sportmap as $sport_id => $betsapi_sport_id) { foreach ($sportmap as $sport_id => $betsapi_sport_id) {
$sport_url = str_replace('###sport_id###', $sport_id, $base_url); $sport_url = str_replace('###sport_id###', $betsapi_sport_id, $base_url);
$page = 1; $page = 1;
while ($page <= $total) { while ($page <= $total) {
@@ -71,8 +72,13 @@ class Fixtures
'group_id' => (int) $row['league']['id'] ?? 0, 'group_id' => (int) $row['league']['id'] ?? 0,
'group_cc' => strtoupper($row['league']['cc']) ?? '', 'group_cc' => strtoupper($row['league']['cc']) ?? '',
]; ];
$event_id = (int) $row['id'];
Mapper::updateOrCreate(['event_id' => (int) $row['id']], $event); $match_id = Event::where('betsapi_id', $event_id)->value('id');
if ($match_id) {
Mapper::where('event_id', $event_id)->delete();
} else {
Mapper::updateOrCreate(['event_id' => $event_id], $event);
}
} }
} }
} }
@@ -28,6 +28,15 @@ class Odds
Notice::note('txodd odd sport: '.Nuh::$options['sport_id'], 'b'); Notice::note('txodd odd sport: '.Nuh::$options['sport_id'], 'b');
} }
/**
* Delete
*/
$info = Event::where('starttime', '<', Carbon::now()->toDateTimeString())->delete();
if ($debug) {
Notice::note("Deleted: $info");
}
/************************************************* /*************************************************
* SINGLE SOCCER * SINGLE SOCCER
* https://xml2.txodds.com/feed/odds/xml.php?ident=betaid1&passwd=Dy59vpRC&peid=3118930 * https://xml2.txodds.com/feed/odds/xml.php?ident=betaid1&passwd=Dy59vpRC&peid=3118930
+17 -4
View File
@@ -26,19 +26,24 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable
use InteractsWithSchemas; use InteractsWithSchemas;
use InteractsWithTable; use InteractsWithTable;
protected $listeners = [
'reload_data' => '$refresh',
];
public function table(Table $table): Table public function table(Table $table): Table
{ {
return $table return $table
->query(Event::query()->where('betradar_id', 0)) ->query(Event::query()->where('betradar_id', 0))
->columns([ ->columns([
MapperLeftColumn::make('left')->label(''), MapperLeftColumn::make('left')->label(''),
])->searchable(['home.name', 'away.name']) ])
->searchable(['competition_group.name', 'home.name', 'away.name'])
->defaultPaginationPageOption(5) ->defaultPaginationPageOption(5)
->filters([ ->filters([
SelectFilter::make('country_id') SelectFilter::make('country_id')
->relationship('country', 'name') ->relationship('country', 'name')
->options( ->options(
fn (Builder $query) => $query->whereNotNull('events.country_id')->where('events.betradar_id', 0)->where('events.starttime', '>', Carbon::now()) fn (Builder $query) => $query->where('countries.tx_id', 'events.country_id')->where('events.betradar_id', 0)->where('events.starttime', '>', Carbon::now())
) )
->searchable() ->searchable()
->preload() ->preload()
@@ -63,11 +68,19 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable
->placeholder('League') ->placeholder('League')
->label('Leagues'), ->label('Leagues'),
], layout: FiltersLayout::AboveContent) ], layout: FiltersLayout::AboveContent)
->hiddenFilterIndicators() // ->hiddenFilterIndicators()
->filtersFormColumns(3) ->filtersFormColumns(3)
->deferFilters(false) ->deferFilters(false)
->toolbarActions([ ->toolbarActions([
// ... Action::make('reload_data_left')
->hiddenLabel()
->color('gray')
->icon('phosphor-x')
->action(function (Component $livewire) {
$livewire->resetTableFiltersForm(); // Clears all filters
$livewire->tableSearch = ''; // Clears the main search bar
$this->dispatch('reload_data');
}),
]); ]);
} }
+17 -2
View File
@@ -24,6 +24,10 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
use InteractsWithSchemas; use InteractsWithSchemas;
use InteractsWithTable; use InteractsWithTable;
protected $listeners = [
'reload_data' => '$refresh',
];
public function table(Table $table): Table public function table(Table $table): Table
{ {
return $table return $table
@@ -49,9 +53,20 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
->placeholder('League') ->placeholder('League')
->label('Leagues'), ->label('Leagues'),
], layout: FiltersLayout::AboveContent) ], layout: FiltersLayout::AboveContent)
->hiddenFilterIndicators() // ->hiddenFilterIndicators()
->filtersFormColumns(3) ->filtersFormColumns(3)
->deferFilters(false); ->deferFilters(false)
->toolbarActions([
Action::make('reload_data')
->hiddenLabel()
->color('gray')
->icon('phosphor-x')
->action(function (Component $livewire) {
$livewire->resetTableFiltersForm(); // Clears all filters
$livewire->tableSearch = ''; // Clears the main search bar
$this->dispatch('reload_data');
}),
]);
} }
public function rightAction(): Action public function rightAction(): Action
+4 -4
View File
@@ -41,21 +41,21 @@ class Event extends Model
public function group() public function group()
{ {
return $this->hasOne(Group::class, 'id', 'group_id'); return $this->belongsTo(Group::class);
} }
public function competition_group() public function competition_group()
{ {
return $this->hasOne(CompetitionGroup::class, 'id', 'competition_group_id'); return $this->belongsTo(CompetitionGroup::class);
} }
public function home() public function home()
{ {
return $this->hasOne(Element::class, 'id', 'home_id'); return $this->belongsTo(Element::class);
} }
public function away() public function away()
{ {
return $this->hasOne(Element::class, 'id', 'away_id'); return $this->belongsTo(Element::class);
} }
} }
+4
View File
@@ -3,6 +3,7 @@
namespace App\Models; namespace App\Models;
use App\Models\Scopes\ClientScope; use App\Models\Scopes\ClientScope;
use App\Models\Scopes\SportScope;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class MultilineClient extends Model class MultilineClient extends Model
@@ -34,5 +35,8 @@ class MultilineClient extends Model
protected static function booted(): void protected static function booted(): void
{ {
static::addGlobalScope(new ClientScope); static::addGlobalScope(new ClientScope);
static::addGlobalScope(new SportScope);
} }
} }
+19
View File
@@ -30,4 +30,23 @@ button[wire\:click="resetTableFiltersForm"] {
.fi-ta-header-cell-oddsdc, .fi-ta-header-cell-oddsdc,
.fi-ta-header-cell-id { .fi-ta-header-cell-id {
@apply !text-center @apply !text-center
}
#mapper {
@layer components {
.fi-ta-ctn {
& .fi-ta-header-toolbar {
@apply !flex-row-reverse;
flex-wrap: inherit;
}
}
.fi-pagination {
& .fi-pagination-overview {
display: block;
font-size: 11px;
}
}
}
} }
@@ -1,11 +1,11 @@
<li class="bg-white dark:bg-gray-900 w-full h-full overflow-hidden p-1 cursor-grab flex space-x-10 drag-and-drop__item" <li class="bg-white dark:bg-gray-900 w-full h-full overflow-hidden p-1 cursor-grab flex space-x-4 drag-and-drop__item"
x-data="{ moveoverleft: false }" id={{ $record->id }} x-data="{ moveoverleft: false }" id={{ $record->id }}
x-on:dragstart.self=" x-on:dragstart.self="
dragging = true; dragging = true;
event.dataTransfer.effectAllowed = 'move'; event.dataTransfer.effectAllowed = 'move';
event.dataTransfer.setData('text/plain', event.target.id);" event.dataTransfer.setData('text/plain', event.target.id);"
x-on:dragover.prevent="moveoverleft = true" x-on:dragleave.prevent="moveoverleft = false" x-on:dragover.prevent="moveoverleft = true" x-on:dragleave.prevent="moveoverleft = false"
x-on:drop="moveoverleft = false" :class="moveoverleft ? 'bg-green-500/10!' : ''" x-on:drop="moveoverleft = false" :class="moveoverleft ? 'bg-primary-500/20!' : ''"
x-on:drop.prevent=" x-on:drop.prevent="
const id = event.dataTransfer.getData('text/plain'); const id = event.dataTransfer.getData('text/plain');
const target = event.target.closest('li'); const target = event.target.closest('li');
@@ -13,14 +13,19 @@
$wire.mountAction('left', { event_id: id, match_id: target.id });" $wire.mountAction('left', { event_id: id, match_id: target.id });"
draggable="true" mapper="left"> draggable="true" mapper="left">
<div class="w-6 flex-none mx-auto my-auto"> <div class="w-10 flex-none mx-auto my-auto">
@if ($record->country->iso2) @if ($record->country?->iso2)
<x-icon name="flag-country-{{ $record->country->iso2 }}" class="h5 w-5" /> <x-icon name="flag-country-{{ $record->country->iso2 }}" class="h5 w-5" />
@else @elseif($record->country?->icon)
<x-icon name="{{ $record->country->icon }}" class="h5 w-5" /> <x-icon name="{{ $record->country->icon }}" class="h5 w-5" />
@endif @endif
</div> </div>
@include('filament.tables.columns.parts.search-button', [
'target' => 'input-2',
'find' => $record->home->name,
])
<div class="flex-1 flex flex-col justify-center space-y-0"> <div class="flex-1 flex flex-col justify-center space-y-0">
<div class="flex justify-around text-gray-600 dark:text-gray-500"> <div class="flex justify-around text-gray-600 dark:text-gray-500">
<div>{{ $record->starttime }}</div> <div>{{ $record->starttime }}</div>
@@ -38,7 +43,11 @@
</div> </div>
<div class="w-6 flex-none my-auto"> @include('filament.tables.columns.parts.search-button', [
<x-filament::icon-button icon="heroicon-o-arrows-pointing-out" /> 'target' => 'input-2',
</div> 'find' => $record->away->name,
])
@include('filament.tables.columns.parts.move-botton')
</li> </li>
@@ -1,24 +1,26 @@
<li class="bg-white dark:bg-gray-900 w-full h-full overflow-hidden p-1 cursor-grab flex <li class="bg-white dark:bg-gray-900 w-full h-full overflow-hidden p-1 cursor-grab flex
space-x-10 drag-and-drop__item" space-x-4 drag-and-drop__item"
x-data="{ moveoverright: false }" id={{ $record->event_id }} x-data="{ moveoverright: false }" id={{ $record->event_id }}
x-on:dragstart.self=" x-on:dragstart.self="
dragging = true; dragging = true;
event.dataTransfer.effectAllowed = 'move'; event.dataTransfer.effectAllowed = 'move';
event.dataTransfer.setData('text/plain', event.target.id);" event.dataTransfer.setData('text/plain', event.target.id);"
x-on:dragover.prevent="moveoverright = true" x-on:dragleave.prevent="moveoverright = false" x-on:dragover.prevent="moveoverright = true" x-on:dragleave.prevent="moveoverright = false"
x-on:drop="moveoverright = false" :class="moveoverright ? 'bg-blue-500/10!' : ''" x-on:drop="moveoverright = false" :class="moveoverright ? 'bg-primary-500/20!' : ''"
x-on:drop.prevent=" x-on:drop.prevent="
const id = event.dataTransfer.getData('text/plain'); const id = event.dataTransfer.getData('text/plain');
const target = event.target.closest('li'); const target = event.target.closest('li');
if(document.getElementById(id).getAttribute('mapper') !=target.getAttribute('mapper')) if(document.getElementById(id).getAttribute('mapper') !=target.getAttribute('mapper'))
$wire.mountAction('right', { match_id: id, event_id: target.id });" $wire.mountAction('right', { match_id: id, event_id: target.id });"
draggable="true" mapper="right"> draggable="true" mapper="right">
{{-- console.log(document.getElementById(id).getAttribute('mapper'), id, target.id, target.getAttribute('mapper'));" --}}
{{-- $dispatch('map-checker', { match_id: id, event_id:target.id });" --}}
<div class="w-6 flex-none my-auto"> @include('filament.tables.columns.parts.move-botton')
<x-filament::icon-button icon="heroicon-o-arrows-pointing-out" />
</div> @include('filament.tables.columns.parts.search-button', [
'target' => 'input-1',
'find' => $record->home,
])
<div class="flex-1 flex flex-col justify-center space-y-0"> <div class="flex-1 flex flex-col justify-center space-y-0">
<div class="flex justify-around text-gray-600 dark:text-gray-500"> <div class="flex justify-around text-gray-600 dark:text-gray-500">
<div>{{ $record->starttime }}</div> <div>{{ $record->starttime }}</div>
@@ -35,6 +37,11 @@
</div> </div>
</div> </div>
@include('filament.tables.columns.parts.search-button', [
'target' => 'input-1',
'find' => $record->away,
])
<div class="w-6 flex-none mx-auto my-auto"> <div class="w-6 flex-none mx-auto my-auto">
@if ($record->group_cc) @if ($record->group_cc)
<x-icon name="flag-country-{{ $record->group_cc }}" class="h5 w-5" /> <x-icon name="flag-country-{{ $record->group_cc }}" class="h5 w-5" />
@@ -0,0 +1,3 @@
<div class="my-auto">
<x-filament::button icon="heroicon-o-arrows-pointing-out" outlined size="xs" />
</div>
@@ -0,0 +1,5 @@
<div class="my-auto">
<x-filament::button icon="phosphor-magnifying-glass" color="gray" size="xs"
x-on:click="document.getElementById('{{ $target }}').focus();
document.getElementById('{{ $target }}').value = '{{ $find }}';" />
</div>
@@ -31,7 +31,7 @@
</div> </div>
</x-slot> </x-slot>
<div class="grid grid-cols-2 gap-4 drag-and-drop text-sm" x-data="{ event_id: 0, match_id: 0, overleftcolumn: false, overrightcolumn: false }"> <div id="mapper" class="grid grid-cols-2 gap-4 drag-and-drop text-sm" x-data="{ event_id: 0, match_id: 0, overleftcolumn: false, overrightcolumn: false }">
<div> <div>
@livewire('mapper-left') @livewire('mapper-left')
</div> </div>
View File
Whitespace-only changes.