alarm wip
This commit is contained in:
1 parent
d81af0b02b
commit
04b17abd30
15 files changed
+302
-61
No files matched your search
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Actions;
|
||||
|
||||
use App\Models\EventBookmaker;
|
||||
use App\Models\OddsTable;
|
||||
|
||||
class AlarmStatistic
|
||||
{
|
||||
public static function load()
|
||||
{
|
||||
$res = OddsTable::select('name', 'fieldnames')->get();
|
||||
$fields = [];
|
||||
foreach ($res as $value) {
|
||||
$fields[$value->name] = explode(',', $value->fieldnames);
|
||||
}
|
||||
|
||||
$res = EventBookmaker::select('alarm_2w_h2w', 'alarm_2w_a2w', 'alarm_2ws1_h2w', 'alarm_2ws1_a2w', 'alarm_3w_h3w', 'alarm_3w_d3w', 'alarm_3w_a3w', 'alarm_3wht_h3w', 'alarm_3wht_d3w', 'alarm_3wht_a3w', 'alarm_dc_dc1x', 'alarm_dc_dc12', 'alarm_dc_dcx2', 'alarm_dbn_dnb1', 'alarm_dbn_dnb2', 'alarm_ggng_gg', 'alarm_ggng_ng', 'alarm_po_home', 'alarm_po_away', 'alarm_poht_home', 'alarm_poht_away', 'alarm_poq1_home', 'alarm_poq1_away', 'alarm_to_over', 'alarm_to_under', 'alarm_toht_over', 'alarm_toht_under', 'alarm_toq1_over', 'alarm_toq1_under', 'alarm_tq_htq', 'alarm_tq_atq')
|
||||
->where('bookmaker_id', auth()->user()->bookmaker_id)
|
||||
->where('sport_id', auth()->user()->sport_id)
|
||||
->get()
|
||||
->toArray();
|
||||
|
||||
$arr = [];
|
||||
foreach ($res as $value) {
|
||||
foreach ($fields as $table => $names) {
|
||||
foreach ($names as $name) {
|
||||
$val = (int) $value[$name];
|
||||
if ($val) {
|
||||
if (isset($arr[$table][$val])) {
|
||||
$arr[$table][$val]++;
|
||||
} else {
|
||||
$arr[$table][$val] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return $arr;
|
||||
}
|
||||
}
|
||||
@@ -8,19 +8,82 @@ class AlarmLoadOdds
|
||||
{
|
||||
public static function get($event_id, $table, $oddnames)
|
||||
{
|
||||
|
||||
$res = DB::table($table)->where('flags', 1)->where('event_id', $event_id)->get();
|
||||
|
||||
$odds = explode(',', $oddnames);
|
||||
|
||||
$arr = [];
|
||||
|
||||
foreach ($res as $value) {
|
||||
if ($table == 'odds_dc') {
|
||||
$arr[(int) $value->bookmaker_id]['margin'] = (float) $value->margin * 2;
|
||||
} else {
|
||||
$arr[(int) $value->bookmaker_id]['margin'] = (float) $value->margin;
|
||||
}
|
||||
foreach ($odds as $odd) {
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->$odd;
|
||||
foreach ($oddnames as $odd) {
|
||||
|
||||
switch ($odd) {
|
||||
case 'h3w':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->h3w;
|
||||
break;
|
||||
case 'd3w':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->d3w;
|
||||
break;
|
||||
case 'a3w':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->a3w;
|
||||
break;
|
||||
|
||||
case 'h2w':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->d3w;
|
||||
break;
|
||||
case 'a2w':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->a3w;
|
||||
break;
|
||||
|
||||
case 'dnb1':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->dnb1;
|
||||
break;
|
||||
case 'dnb2':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->dnb2;
|
||||
break;
|
||||
|
||||
case 'gg':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->gg;
|
||||
break;
|
||||
case 'ng':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->ng;
|
||||
break;
|
||||
|
||||
case 'dc1x':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->dc1x;
|
||||
break;
|
||||
case 'dc12':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->dc12;
|
||||
break;
|
||||
case 'dcx2':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->dcx2;
|
||||
break;
|
||||
|
||||
case 'home':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->home;
|
||||
break;
|
||||
case 'away':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->away;
|
||||
break;
|
||||
|
||||
case 'over':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->over;
|
||||
break;
|
||||
case 'under':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->under;
|
||||
break;
|
||||
|
||||
case 'htq':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->htq;
|
||||
break;
|
||||
case 'atq':
|
||||
$arr[(int) $value->bookmaker_id][$odd] = (float) $value->atq;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,17 +3,11 @@
|
||||
namespace App\Console\Commands\Services\Tasks\Alarm;
|
||||
|
||||
use App\Models\EventBookmaker;
|
||||
use App\Models\OddsTable;
|
||||
|
||||
class AlarmStore
|
||||
{
|
||||
public static function get($event_id, $table, $client_bookmaker_id, $alarm_threshold, $compare_odds, $client_odds)
|
||||
public static function get($event_id, $oddnames, $client_bookmaker_id, $alarm_threshold, $compare_odds, $client_odds)
|
||||
{
|
||||
$res = OddsTable::where($table)->value('oddnames');
|
||||
$oddnames = explode(',', $res);
|
||||
|
||||
dd($oddnames);
|
||||
|
||||
if (! $compare_odds) {
|
||||
return;
|
||||
}
|
||||
@@ -22,21 +16,11 @@ class AlarmStore
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* get favorit
|
||||
*/
|
||||
$favorit = 100;
|
||||
foreach ($oddnames as $fieldname => $oddname) {
|
||||
if ($client_odds[$oddname] < $favorit) {
|
||||
$favorit = $oddname;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* evaluate
|
||||
*/
|
||||
$favorit = min($client_odds);
|
||||
|
||||
$update_array = [];
|
||||
foreach ($oddnames as $fieldname => $oddname) {
|
||||
if ($oddname == $favorit) {
|
||||
if ($client_odds[$oddname] == $favorit) {
|
||||
|
||||
$threshold = $client_odds[$oddname] - $compare_odds[$oddname];
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ use App\Console\Commands\Services\Tasks\Alarm\AlarmSettings;
|
||||
use App\Console\Commands\Services\Tasks\Alarm\AlarmStore;
|
||||
use App\Models\Client;
|
||||
use App\Models\EventBookmaker;
|
||||
use App\Models\OddsTable;
|
||||
use App\Models\Sport;
|
||||
use App\Utilities\Notice;
|
||||
|
||||
@@ -26,6 +27,8 @@ class GenerateAlarms
|
||||
Notice::note('GENERATE ALARMS', 'b');
|
||||
}
|
||||
|
||||
$oddnames = OddsTable::oddnames();
|
||||
|
||||
$clients = Client::get();
|
||||
|
||||
$sports = Sport::where('is_active', 1)->pluck('id');
|
||||
@@ -44,17 +47,21 @@ class GenerateAlarms
|
||||
|
||||
$res = EventBookmaker::where('bookmaker_id', $client_bookmaker_id)->where('sport_id', $sport_id)->get();
|
||||
|
||||
// $res = EventBookmaker::where('event_id', 14597944)->where('bookmaker_id', $client_bookmaker_id)->where('sport_id', $sport_id)->get();
|
||||
|
||||
foreach ($res as $event) {
|
||||
|
||||
foreach ($multilines as $multiline_id => $multiline) {
|
||||
|
||||
$odds = AlarmLoadOdds::get($event->event_id, $multiline['table'], $multiline['oddnames']);
|
||||
$table = $multiline['table'];
|
||||
|
||||
$odds = AlarmLoadOdds::get($event->event_id, $table, $oddnames[$table]);
|
||||
|
||||
$compare_odds = AlarmFilterCompare::get($odds, $filter);
|
||||
|
||||
$client_odds = AlarmFilterClient::get($odds, $client_bookmaker_id);
|
||||
|
||||
AlarmStore::get($event->event_id, $multiline['table'], $client_bookmaker_id, $alarm_threshold[$multiline_id], $compare_odds, $client_odds);
|
||||
AlarmStore::get($event->event_id, $oddnames[$table], $client_bookmaker_id, $alarm_threshold[$multiline_id], $compare_odds, $client_odds);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ class EditEvent extends EditRecord
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
DeleteAction::make(),
|
||||
// DeleteAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Filament\Resources\Events\Pages;
|
||||
|
||||
use App\Filament\Resources\Events\EventResource;
|
||||
use App\Filament\Resources\Events\Widgets\AlarmWidget;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
use Filament\Support\Enums\Width;
|
||||
|
||||
@@ -13,4 +14,19 @@ class ListEvents extends ListRecords
|
||||
protected string|Width|null $maxContentWidth = Width::Full;
|
||||
|
||||
protected $listeners = ['refreshBettypeMenu' => '$refresh'];
|
||||
|
||||
protected function getHeaderWidgets(): array
|
||||
{
|
||||
return [
|
||||
AlarmWidget::class,
|
||||
];
|
||||
}
|
||||
|
||||
public function getColumns(): int|array
|
||||
{
|
||||
return [
|
||||
'md' => 4,
|
||||
'xl' => 6,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -187,8 +187,7 @@ class EventsTable
|
||||
$livewire->dispatch('reload_bookmaker_multiline');
|
||||
$livewire->dispatch('reload_alarm_bookmaker');
|
||||
$livewire->dispatch('refresh_comparing_bookmaker');
|
||||
// $livewire->dispatch('reload_data_left');
|
||||
// $livewire->dispatch('reload_data_right');
|
||||
$livewire->dispatch('refreshAlarmWidget');
|
||||
|
||||
$set('country_id', null);
|
||||
$set('competition_group_id', null);
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Events\Widgets;
|
||||
|
||||
use App\Actions\AlarmStatistic;
|
||||
use Filament\Widgets\StatsOverviewWidget;
|
||||
use Filament\Widgets\StatsOverviewWidget\Stat;
|
||||
|
||||
class AlarmWidget extends StatsOverviewWidget
|
||||
{
|
||||
protected $listeners = [
|
||||
'refreshAlarmWidget' => '$refresh',
|
||||
];
|
||||
|
||||
protected ?string $pollingInterval = '10s';
|
||||
|
||||
protected function getStats(): array
|
||||
{
|
||||
|
||||
$res = AlarmStatistic::load();
|
||||
|
||||
switch (auth()->user()->sport_id) {
|
||||
case 1:
|
||||
return [
|
||||
Stat::make('1X2', '1X2')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => '1X2', 'red' => $res['odds_3ways'][3] ?? 0, 'yellow' => $res['odds_3ways'][2] ?? 0, 'green' => $res['odds_3ways'][1] ?? 0]),
|
||||
Stat::make('1X2', '1X2')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => '1X2 HT', 'red' => $res['odds_3ways_ht'][3] ?? 0, 'yellow' => $res['odds_3ways_ht'][2] ?? 0, 'green' => $res['odds_3ways_ht'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'Totals', 'red' => $res['odds_totals'][3] ?? 0, 'yellow' => $res['odds_totals'][2] ?? 0, 'green' => $res['odds_totals'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'Totals HT', 'red' => $res['odds_totals_ht'][3] ?? 0, 'yellow' => $res['odds_totals_ht'][2] ?? 0, 'green' => $res['odds_totals_ht'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'GG NG', 'red' => $res['odds_ggng'][3] ?? 0, 'yellow' => $res['odds_ggng'][2] ?? 0, 'green' => $res['odds_ggng'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'DNB', 'red' => $res['odds_dnb'][3] ?? 0, 'yellow' => $res['odds_dnb'][2] ?? 0, 'green' => $res['odds_dnb'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'DC', 'red' => $res['odds_dc'][3] ?? 0, 'yellow' => $res['odds_dc'][2] ?? 0, 'green' => $res['odds_dc'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'TQ', 'red' => $res['odds_tq'][3] ?? 0, 'yellow' => $res['odds_tq'][2] ?? 0, 'green' => $res['odds_tq'][1] ?? 0]),
|
||||
];
|
||||
case 2:
|
||||
return [
|
||||
Stat::make('1X2', '1X2')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => '1X2', 'red' => $res['odds_3ways'][3] ?? 0, 'yellow' => $res['odds_3ways'][2] ?? 0, 'green' => $res['odds_3ways'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'ML', 'red' => $res['odds_2ways'][3] ?? 0, 'yellow' => $res['odds_2ways'][2] ?? 0, 'green' => $res['odds_2ways'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'HC', 'red' => $res['odds_points'][3] ?? 0, 'yellow' => $res['odds_points'][2] ?? 0, 'green' => $res['odds_points'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'HC Q1', 'red' => $res['odds_points_q1'][3] ?? 0, 'yellow' => $res['odds_points_q1'][2] ?? 0, 'green' => $res['odds_points_q1'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'Totals', 'red' => $res['odds_totals'][3] ?? 0, 'yellow' => $res['odds_totals'][2] ?? 0, 'green' => $res['odds_totals'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'Totals Q1', 'red' => $res['odds_totals_q1'][3] ?? 0, 'yellow' => $res['odds_totals_q1'][2] ?? 0, 'green' => $res['odds_totals_q1'][1] ?? 0]),
|
||||
];
|
||||
case 3:
|
||||
return [
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'ML', 'red' => $res['odds_2ways'][3] ?? 0, 'yellow' => $res['odds_2ways'][2] ?? 0, 'green' => $res['odds_2ways'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'HC', 'red' => $res['odds_points'][3] ?? 0, 'yellow' => $res['odds_points'][2] ?? 0, 'green' => $res['odds_points'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'HC Q1', 'red' => $res['odds_points_q1'][3] ?? 0, 'yellow' => $res['odds_points_q1'][2] ?? 0, 'green' => $res['odds_points_q1'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'HC HT', 'red' => $res['odds_points_ht'][3] ?? 0, 'yellow' => $res['odds_points_ht'][2] ?? 0, 'green' => $res['odds_points_ht'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'Totals', 'red' => $res['odds_totals'][3] ?? 0, 'yellow' => $res['odds_totals'][2] ?? 0, 'green' => $res['odds_totals'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'Totals Q1', 'red' => $res['odds_totals_q1'][3] ?? 0, 'yellow' => $res['odds_totals_q1'][2] ?? 0, 'green' => $res['odds_totals_q1'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'Totals HT', 'red' => $res['odds_totals_ht'][3] ?? 0, 'yellow' => $res['odds_totals_ht'][2] ?? 0, 'green' => $res['odds_totals_ht'][1] ?? 0]),
|
||||
];
|
||||
case 5:
|
||||
return [
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'ML', 'red' => $res['odds_2ways'][3] ?? 0, 'yellow' => $res['odds_2ways'][2] ?? 0, 'green' => $res['odds_2ways'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'MLS1', 'red' => $res['odds_2ways_s1'][3] ?? 0, 'yellow' => $res['odds_2ways_s1'][2] ?? 0, 'green' => $res['odds_2ways_s1'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'HC', 'red' => $res['odds_points'][3] ?? 0, 'yellow' => $res['odds_points'][2] ?? 0, 'green' => $res['odds_points'][1] ?? 0]),
|
||||
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
|
||||
['title' => 'Totals', 'red' => $res['odds_totals'][3] ?? 0, 'yellow' => $res['odds_totals'][2] ?? 0, 'green' => $res['odds_totals'][1] ?? 0]),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function getColumns(): int|array
|
||||
{
|
||||
return [
|
||||
'md' => 6,
|
||||
'xl' => 8,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -319,7 +319,7 @@ class ColumnOdds extends Column
|
||||
|
||||
$this->data->filter(function ($model) {
|
||||
|
||||
if ($model->bookmaker_id != auth()->user()->bookmaker_id) {
|
||||
if ($model->flags == 1 && $model->bookmaker_id != auth()->user()->bookmaker_id) {
|
||||
|
||||
$filter = $this->filter[$model->bookmaker_id] ?? 0;
|
||||
|
||||
|
||||
@@ -6,5 +6,17 @@ use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class OddsTable extends Model
|
||||
{
|
||||
//
|
||||
public static function oddnames()
|
||||
{
|
||||
$res = OddsTable::get();
|
||||
$arr = [];
|
||||
foreach ($res as $value) {
|
||||
$names = explode(',', $value->oddnames);
|
||||
$fields = explode(',', $value->fieldnames);
|
||||
|
||||
$arr[$value->name] = array_combine($fields, $names);
|
||||
}
|
||||
|
||||
return $arr;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user