This commit is contained in:
salam committed 2026-01-27 15:08:59 +01:00
1 parent f5fc937311
commit d81af0b02b
30 files changed
+381 -267

No files matched your search

+158 -122
View File
@@ -16,6 +16,7 @@ use App\Models\Sport;
use App\Utilities\Margin;
use App\Utilities\Notice;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
class Bet365
{
@@ -31,7 +32,7 @@ class Bet365
$sportmap = Sport::map('bapi', 1, [1, 2, 3, 5]);
$flags = [];
$events_collector = [];
/**
* Bet365
@@ -92,88 +93,29 @@ class Bet365
* 1X2
*/
if (isset($offer['full_time_result'])) {
$odds = [];
$odds['h3w'] = number_format($offer['full_time_result']['odds'][0]['odds'], 2) ?? 1;
$odds['d3w'] = number_format($offer['full_time_result']['odds'][1]['odds'], 2) ?? 1;
$odds['a3w'] = number_format($offer['full_time_result']['odds'][2]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
$odds = array_merge($odds, $base);
$data = $offer['full_time_result']['odds'] ?? [];
$flags['odds_3ways'][] = $event->id;
if ($data) {
$res = Odds3way::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
$odds = [];
$odds['h3w'] = number_format($data[0]['odds'], 2) ?? 1;
$odds['d3w'] = number_format($data[1]['odds'], 2) ?? 1;
$odds['a3w'] = number_format($data[2]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
if (! $res) {
Odds3way::create($odds);
} else {
$res->h3w = $odds['h3w'];
$res->a3w = $odds['d3w'];
$res->d3w = $odds['a3w'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
}
}
$odds = array_merge($odds, $base);
/**
* DC
*/
if (isset($offer['double_chance'])) {
$odds = [];
$odds['dc1x'] = number_format($offer['double_chance']['odds'][0]['odds'], 2) ?? 1;
$odds['dc12'] = number_format($offer['double_chance']['odds'][1]['odds'], 2) ?? 1;
$odds['dcx2'] = number_format($offer['double_chance']['odds'][2]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
$events_collector['odds_3ways'][] = $event->id;
$odds = array_merge($odds, $base);
$flags['odds_dc'][] = $event->id;
$res = OddsDc::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
if (! $res) {
OddsDc::create($odds);
} else {
$res->dc1x = $odds['dc1x'];
$res->dc12 = $odds['dc12'];
$res->dcx2 = $odds['dcx2'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
}
}
/**
* OU
*/
if (isset($offer['goals_over_under'])) {
$odds = [];
$odds['over'] = number_format($offer['goals_over_under']['odds'][0]['odds'], 2) ?? 1;
$odds['under'] = number_format($offer['goals_over_under']['odds'][1]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
if ($base['sport_id'] == 1) {
$odds['active_spread'] = 1;
}
$odds = array_merge($odds, $base);
$flags['odds_totals'][] = $event->id;
if ($offer['goals_over_under']['odds'][1]['name'] == '2.5') {
$odds['total'] = 2.5;
$res = OddsTotal::where('event_id', $event->id)
->where('bookmaker_id', $bookmaker_id)
->where('total', $odds['total'])
->first();
$res = Odds3way::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
if (! $res) {
OddsTotal::create($odds);
Odds3way::create($odds);
} else {
$res->over = $odds['over'];
$res->under = $odds['under'];
$res->difference = abs(1 / $odds['over'] - 1 / $odds['under']);
$res->h3w = $odds['h3w'];
$res->a3w = $odds['d3w'];
$res->d3w = $odds['a3w'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
@@ -181,29 +123,111 @@ class Bet365
}
}
/**
* DC
*/
if (isset($offer['double_chance'])) {
$data = $offer['double_chance']['odds'] ?? [];
if ($data) {
$odds = [];
$odds['dc1x'] = number_format($data[0]['odds'], 2) ?? 1;
$odds['dc12'] = number_format($data[1]['odds'], 2) ?? 1;
$odds['dcx2'] = number_format($data[2]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
$odds = array_merge($odds, $base);
$events_collector['odds_dc'][] = $event->id;
$res = OddsDc::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
if (! $res) {
OddsDc::create($odds);
} else {
$res->dc1x = $odds['dc1x'];
$res->dc12 = $odds['dc12'];
$res->dcx2 = $odds['dcx2'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
}
}
}
/**
* OU
*/
if (isset($offer['goals_over_under'])) {
$data = $offer['goals_over_under']['odds'] ?? [];
if ($data) {
$odds = [];
$odds['over'] = number_format($data[0]['odds'], 2) ?? 1;
$odds['under'] = number_format($data[1]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
if ($base['sport_id'] == 1) {
$odds['active_spread'] = 1;
}
$odds = array_merge($odds, $base);
$events_collector['odds_totals'][] = $event->id;
if ($offer['goals_over_under']['odds'][1]['name'] == '2.5') {
$odds['total'] = 2.5;
$res = OddsTotal::where('event_id', $event->id)
->where('bookmaker_id', $bookmaker_id)
->where('total', $odds['total'])
->first();
if (! $res) {
OddsTotal::create($odds);
} else {
$res->over = $odds['over'];
$res->under = $odds['under'];
$res->difference = abs(1 / $odds['over'] - 1 / $odds['under']);
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
}
}
}
}
/**
* GG NG
*/
if (isset($offer['both_teams_to_score'])) {
$odds = [];
$odds['gg'] = number_format($offer['both_teams_to_score']['odds'][0]['odds'], 2) ?? 1;
$odds['ng'] = number_format($offer['both_teams_to_score']['odds'][1]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
$odds = array_merge($odds, $base);
$data = $offer['both_teams_to_score']['odds'] ?? [];
$flags['odds_ggng'][] = $event->id;
if ($data) {
$res = OddsGgng::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
$odds = [];
$odds['gg'] = number_format($data[0]['odds'], 2) ?? 1;
$odds['ng'] = number_format($data[1]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
if (! $res) {
OddsGgng::create($odds);
} else {
$res->gg = $odds['gg'];
$res->ng = $odds['ng'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
$odds = array_merge($odds, $base);
$events_collector['odds_ggng'][] = $event->id;
$res = OddsGgng::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
if (! $res) {
OddsGgng::create($odds);
} else {
$res->gg = $odds['gg'];
$res->ng = $odds['ng'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
}
}
}
@@ -211,25 +235,31 @@ class Bet365
* DNB
*/
if (isset($offer['draw_no_bet'])) {
$odds = [];
$odds['dnb1'] = number_format($offer['draw_no_bet']['odds'][0]['odds'], 2) ?? 1;
$odds['dnb2'] = number_format($offer['draw_no_bet']['odds'][1]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
$res = OddsDnb::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
$data = $offer['draw_no_bet']['odds'] ?? [];
$odds = array_merge($odds, $base);
if ($data) {
$flags['odds_dnb'][] = $event->id;
$odds = [];
$odds['dnb1'] = number_format($data[0]['odds'], 2) ?? 1;
$odds['dnb2'] = number_format($data[1]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
if (! $res) {
OddsDnb::create($odds);
} else {
$res->dnb1 = $odds['dnb1'];
$res->dnb2 = $odds['dnb2'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
$res = OddsDnb::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
$odds = array_merge($odds, $base);
$events_collector['odds_dnb'][] = $event->id;
if (! $res) {
OddsDnb::create($odds);
} else {
$res->dnb1 = $odds['dnb1'];
$res->dnb2 = $odds['dnb2'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
}
}
}
@@ -237,34 +267,40 @@ class Bet365
* 1X2 HT
*/
if (isset($offer['half_time_result'])) {
$odds = [];
$odds['h3w'] = number_format($offer['half_time_result']['odds'][0]['odds'], 2) ?? 1;
$odds['d3w'] = number_format($offer['half_time_result']['odds'][1]['odds'], 2) ?? 1;
$odds['a3w'] = number_format($offer['half_time_result']['odds'][2]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
$odds = array_merge($odds, $base);
$data = $offer['half_time_result']['odds'] ?? [];
$flags['odds_3ways_ht'][] = $event->id;
if ($data) {
$res = Odds3wayHt::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
$odds = [];
$odds['h3w'] = number_format($data[0]['odds'], 2) ?? 1;
$odds['d3w'] = number_format($data[1]['odds'], 2) ?? 1;
$odds['a3w'] = number_format($data[2]['odds'], 2) ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
if (! $res) {
Odds3wayHt::create($odds);
} else {
$res->h3w = $odds['h3w'];
$res->d3w = $odds['d3w'];
$res->d3w = $odds['a3w'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
$odds = array_merge($odds, $base);
$events_collector['odds_3ways_ht'][] = $event->id;
$res = Odds3wayHt::where('event_id', $event->id)->where('bookmaker_id', $bookmaker_id)->first();
if (! $res) {
Odds3wayHt::create($odds);
} else {
$res->h3w = $odds['h3w'];
$res->d3w = $odds['d3w'];
$res->d3w = $odds['a3w'];
$res->flags = 1;
$res->margin = $odds['margin'];
$res->save();
}
}
}
}
}
}
foreach ($flags as $table => $event_ids) {
foreach ($events_collector as $table => $event_ids) {
DB::table($table)->where('bookmaker_id', $bookmaker_id)->whereNotIn('event_id', $event_ids)->update(['flags' => 0]);
}
}
+5 -12
View File
@@ -14,6 +14,7 @@ use App\Console\Commands\Nuh;
use App\Models\EventBookmaker;
use App\Models\Sport;
use App\Utilities\Notice;
use Illuminate\Support\Facades\DB;
class Logifuture
{
@@ -35,8 +36,6 @@ class Logifuture
Authentication::authenticate();
$flags = [];
foreach ($sportmap as $logifuture_sport_id => $sport_id) {
$matches = LogifutureData::load($logifuture_sport_id);
@@ -65,8 +64,6 @@ class Logifuture
'bookmaker_id' => Nuh::$options['bookmaker_id'],
], ['in_feed' => 1, 'bmoid' => $event['event_id'], 'startime' => $event['starttime']]);
$flags[$sport_id][] = $event['id'];
switch ($sport_id) {
case 1:
Soccer::get($event, $match);
@@ -94,15 +91,11 @@ class Logifuture
}
if ($event_id_collector) {
EventBookmaker::whereNotIn('event_id', $event_id_collector)->where('bookmaker_id', Nuh::$options['bookmaker_id'])->update(['in_feed' => 0]);
}
$tables = [];
$tables[1] = ['odds_3ways', 'odds_totals', 'odds_ggng', 'odds_dc', 'odds_tq'];
$tables[2] = ['odds_2ways', 'odds_2ways_s1', 'odds_3ways', 'odds_totals', 'odds_points', 'odds_points_q1', 'odds_totals_q1'];
$tables[3] = ['odds_totals', 'odds_points', 'odds_points_q1', 'odds_totals_q1'];
$tables[5] = ['odds_2ways', 'odds_2ways_s1', 'odds_totals', 'odds_points'];
foreach ($tables as $sport_id => $table) {
DB::table($table)->where('bookmaker_id', $bookmaker_id)->whereNotIn('event_id', $flags[$sport_id])->update(['flags' => 0]);
$tables = ['odds_2ways', 'odds_2ways_s1', 'odds_3ways', 'odds_totals', 'odds_points', 'odds_ggng', 'odds_dc', 'odds_tq', 'odds_points_q1', 'odds_totals_q1'];
foreach ($tables as $table) {
DB::table($table)->where('bookmaker_id', Nuh::$options['bookmaker_id'])->whereNotIn('event_id', $event_id_collector)->update(['flags' => 0]);
}
}
}
}
+2 -1
View File
@@ -21,6 +21,7 @@ use App\Models\EventBookmaker;
use App\Models\Sport;
use App\Utilities\Notice;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
class Odds
{
@@ -149,7 +150,7 @@ class Odds
$tables = ['odds_3ways', 'odds_dc', 'odds_ggng', 'odds_points', 'odds_points_q1', 'odds_totals', 'odds_totals_q1', 'odds_tq'];
foreach ($tables as $table) {
DB::table($table)->where('bookmaker_id', $bookmaker_id)->whereNotIn('event_id', $event_id_collector)->update(['flags' => 0]);
DB::table($table)->where('bookmaker_id', Nuh::$options['bookmaker_id'])->whereNotIn('event_id', $event_id_collector)->update(['flags' => 0]);
}
}
}
+3 -3
View File
@@ -4,7 +4,7 @@ namespace App\Console\Commands\Services;
use App\Console\Commands\Nuh;
use App\Console\Commands\Services\Tasks\DBMapper;
use App\Console\Commands\Services\Tasks\GenerateAlarm;
use App\Console\Commands\Services\Tasks\GenerateAlarms;
use App\Console\Commands\Services\Tasks\GenerateSetting;
use App\Console\Commands\Services\Tasks\MarketsList;
use App\Console\Commands\Services\Tasks\MarketsState;
@@ -26,8 +26,8 @@ class Services
case 'Generate Setting':
GenerateSetting::run();
break;
case 'Generate Alarm':
GenerateAlarm::run();
case 'Generate Alarms':
GenerateAlarms::run();
break;
}
@@ -2,14 +2,13 @@
namespace App\Console\Commands\Services\Tasks\Alarm;
use App\Console\Commands\Nuh;
use App\Models\ComparingBookmaker;
class AlarmBookmakerFilter
{
public static function get($client_bookmaker_id)
public static function get($client_bookmaker_id, $sport_id)
{
$res = ComparingBookmaker::where('sport_id', Nuh::$options['sport_id'])
$res = ComparingBookmaker::where('sport_id', $sport_id)
->where('client_bookmaker_id', $client_bookmaker_id)
->where('is_active', 1)
->orderBy('sorting', 'asc')
@@ -2,14 +2,13 @@
namespace App\Console\Commands\Services\Tasks\Alarm;
use App\Console\Commands\Nuh;
use App\Models\MultilineSetting;
class AlarmMultilineSetting
{
public static function get()
public static function get($sport_id)
{
$res = MultilineSetting::where('sport_id', Nuh::$options['sport_id'])->get();
$res = MultilineSetting::where('sport_id', $sport_id)->get();
$arr = [];
foreach ($res as $value) {
@@ -2,14 +2,13 @@
namespace App\Console\Commands\Services\Tasks\Alarm;
use App\Console\Commands\Nuh;
use App\Models\AlarmSetting;
class AlarmSettings
{
public static function get($client_bookmaker_id)
public static function get($client_bookmaker_id, $sport_id)
{
$res = AlarmSetting::where('sport_id', Nuh::$options['sport_id'])
$res = AlarmSetting::where('sport_id', $sport_id)
->where('client_bookmaker_id', $client_bookmaker_id)
->where('disabled', 0)
->select('multiline_setting_id', 'level_id', 'alarm_threshold')
@@ -3,12 +3,16 @@
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)
{
$oddnames = AlarmMap::get($table);
$res = OddsTable::where($table)->value('oddnames');
$oddnames = explode(',', $res);
dd($oddnames);
if (! $compare_odds) {
return;
@@ -1,57 +0,0 @@
<?php
namespace App\Console\Commands\Services\Tasks;
use App\Console\Commands\Nuh;
use App\Console\Commands\Services\Tasks\Alarm\AlarmBookmakerFilter;
use App\Console\Commands\Services\Tasks\Alarm\AlarmFilterClient;
use App\Console\Commands\Services\Tasks\Alarm\AlarmFilterCompare;
use App\Console\Commands\Services\Tasks\Alarm\AlarmLoadOdds;
use App\Console\Commands\Services\Tasks\Alarm\AlarmMultilineSetting;
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\Utilities\Notice;
class GenerateAlarm
{
public static function run()
{
$debug = Nuh::$options['d'] ?? 0;
if ($debug) {
Notice::note('ALARM GENERATOR', 'b');
}
$clients = Client::get();
$multilines = AlarmMultilineSetting::get();
foreach ($clients as $client) {
foreach ($client->bookmaker as $client_bookmaker_id) {
$alarm_threshold = AlarmSettings::get($client_bookmaker_id);
$filter = AlarmBookmakerFilter::get($client_bookmaker_id);
$res = EventBookmaker::where('bookmaker_id', $client_bookmaker_id)->where('sport_id', Nuh::$options['sport_id'])->get();
foreach ($res as $event) {
foreach ($multilines as $multiline_id => $multiline) {
$odds = AlarmLoadOdds::get($event->event_id, $multiline['table'], $multiline['oddnames']);
$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);
}
}
}
}
}
}
@@ -0,0 +1,64 @@
<?php
namespace App\Console\Commands\Services\Tasks;
use App\Console\Commands\Nuh;
use App\Console\Commands\Services\Tasks\Alarm\AlarmBookmakerFilter;
use App\Console\Commands\Services\Tasks\Alarm\AlarmFilterClient;
use App\Console\Commands\Services\Tasks\Alarm\AlarmFilterCompare;
use App\Console\Commands\Services\Tasks\Alarm\AlarmLoadOdds;
use App\Console\Commands\Services\Tasks\Alarm\AlarmMultilineSetting;
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\Sport;
use App\Utilities\Notice;
class GenerateAlarms
{
public static function run()
{
$debug = Nuh::$options['d'] ?? 0;
if ($debug) {
Notice::note('GENERATE ALARMS', 'b');
}
$clients = Client::get();
$sports = Sport::where('is_active', 1)->pluck('id');
foreach ($sports as $sport_id) {
$multilines = AlarmMultilineSetting::get($sport_id);
foreach ($clients as $client) {
foreach ($client->bookmaker as $client_bookmaker_id) {
$alarm_threshold = AlarmSettings::get($client_bookmaker_id, $sport_id);
$filter = AlarmBookmakerFilter::get($client_bookmaker_id, $sport_id);
$res = EventBookmaker::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']);
$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);
}
}
}
}
}
}
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class OddsTable extends Model
{
//
}
Generated
+38 -38
View File
@@ -1429,16 +1429,16 @@
},
{
"name": "filament/actions",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/actions.git",
"reference": "483fcb61b551cf524c943e75c4747c4aa2728bed"
"reference": "e9936617c3f74b18bf24a0645a6314a719c74a33"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/actions/zipball/483fcb61b551cf524c943e75c4747c4aa2728bed",
"reference": "483fcb61b551cf524c943e75c4747c4aa2728bed",
"url": "https://api.github.com/repos/filamentphp/actions/zipball/e9936617c3f74b18bf24a0645a6314a719c74a33",
"reference": "e9936617c3f74b18bf24a0645a6314a719c74a33",
"shasum": ""
},
"require": {
@@ -1474,20 +1474,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2026-01-23T10:57:02+00:00"
"time": "2026-01-27T12:10:55+00:00"
},
{
"name": "filament/filament",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/panels.git",
"reference": "7edac0aed33cac262766439f331cb1070ac974d5"
"reference": "2fe37fa96447cc61a70354b43f854b3632e388cc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/panels/zipball/7edac0aed33cac262766439f331cb1070ac974d5",
"reference": "7edac0aed33cac262766439f331cb1070ac974d5",
"url": "https://api.github.com/repos/filamentphp/panels/zipball/2fe37fa96447cc61a70354b43f854b3632e388cc",
"reference": "2fe37fa96447cc61a70354b43f854b3632e388cc",
"shasum": ""
},
"require": {
@@ -1531,20 +1531,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2026-01-23T10:54:16+00:00"
"time": "2026-01-27T12:10:56+00:00"
},
{
"name": "filament/forms",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/forms.git",
"reference": "847c1afe671bd3d5937eb0113413e581dd1ce019"
"reference": "63dfeb69b3823e0effde1cefcdaae21c1ddf0814"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/forms/zipball/847c1afe671bd3d5937eb0113413e581dd1ce019",
"reference": "847c1afe671bd3d5937eb0113413e581dd1ce019",
"url": "https://api.github.com/repos/filamentphp/forms/zipball/63dfeb69b3823e0effde1cefcdaae21c1ddf0814",
"reference": "63dfeb69b3823e0effde1cefcdaae21c1ddf0814",
"shasum": ""
},
"require": {
@@ -1581,11 +1581,11 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2026-01-23T10:52:10+00:00"
"time": "2026-01-27T12:10:56+00:00"
},
{
"name": "filament/infolists",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/infolists.git",
@@ -1630,7 +1630,7 @@
},
{
"name": "filament/notifications",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/notifications.git",
@@ -1677,7 +1677,7 @@
},
{
"name": "filament/query-builder",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/query-builder.git",
@@ -1723,16 +1723,16 @@
},
{
"name": "filament/schemas",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/schemas.git",
"reference": "4fd5207083308290c6fa14b34b9ade36c7e8d3d9"
"reference": "1638d2b16f7684b7925d9c6253592ecd308d7f12"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/schemas/zipball/4fd5207083308290c6fa14b34b9ade36c7e8d3d9",
"reference": "4fd5207083308290c6fa14b34b9ade36c7e8d3d9",
"url": "https://api.github.com/repos/filamentphp/schemas/zipball/1638d2b16f7684b7925d9c6253592ecd308d7f12",
"reference": "1638d2b16f7684b7925d9c6253592ecd308d7f12",
"shasum": ""
},
"require": {
@@ -1764,20 +1764,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2026-01-23T10:52:09+00:00"
"time": "2026-01-27T12:11:14+00:00"
},
{
"name": "filament/support",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/support.git",
"reference": "63698913952f41922f74d632c2dd9adff600bf7c"
"reference": "26894b15b989f89c83b004b38e513b9b2843a0c4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/support/zipball/63698913952f41922f74d632c2dd9adff600bf7c",
"reference": "63698913952f41922f74d632c2dd9adff600bf7c",
"url": "https://api.github.com/repos/filamentphp/support/zipball/26894b15b989f89c83b004b38e513b9b2843a0c4",
"reference": "26894b15b989f89c83b004b38e513b9b2843a0c4",
"shasum": ""
},
"require": {
@@ -1822,20 +1822,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2026-01-23T10:52:20+00:00"
"time": "2026-01-27T12:11:14+00:00"
},
{
"name": "filament/tables",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/tables.git",
"reference": "28107cc36098d86a4ac1511a3761bef7dc2cb986"
"reference": "ae5a17dfc442b9ac9ff6d3f91a96538c3771ee3c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/tables/zipball/28107cc36098d86a4ac1511a3761bef7dc2cb986",
"reference": "28107cc36098d86a4ac1511a3761bef7dc2cb986",
"url": "https://api.github.com/repos/filamentphp/tables/zipball/ae5a17dfc442b9ac9ff6d3f91a96538c3771ee3c",
"reference": "ae5a17dfc442b9ac9ff6d3f91a96538c3771ee3c",
"shasum": ""
},
"require": {
@@ -1868,11 +1868,11 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2026-01-23T10:52:09+00:00"
"time": "2026-01-27T12:10:54+00:00"
},
{
"name": "filament/widgets",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/widgets.git",
@@ -9479,7 +9479,7 @@
},
{
"name": "filament/upgrade",
"version": "v4.6.0",
"version": "v4.6.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/upgrade.git",
@@ -12814,12 +12814,12 @@
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"stability-flags": {},
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": "^8.3"
},
"platform-dev": [],
"plugin-api-version": "2.6.0"
"platform-dev": {},
"plugin-api-version": "2.9.0"
}
@@ -25,7 +25,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -25,6 +25,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -24,7 +24,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -24,7 +24,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -25,7 +25,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -24,7 +24,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -24,7 +24,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -24,7 +24,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -27,7 +27,7 @@ return new class extends Migration
$table->boolean('active_spread')->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -27,7 +27,7 @@ return new class extends Migration
$table->boolean('active_spread')->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -27,7 +27,7 @@ return new class extends Migration
$table->boolean('active_spread')->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -27,7 +27,7 @@ return new class extends Migration
$table->boolean('active_spread')->default(0);
$table->boolean('flags')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -27,7 +27,7 @@ return new class extends Migration
$table->boolean('flags')->default(0);
$table->boolean('active_spread')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -27,7 +27,7 @@ return new class extends Migration
$table->decimal('difference', 5, 4)->default(0);
$table->boolean('active_spread')->default(0);
$table->boolean('nuh_check')->default(0);
$table->timestamp('last_updated');
$table->timestamps();
});
}
@@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('odds_tables', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('oddnames');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('odds_tables');
}
};
+1
View File
@@ -23,6 +23,7 @@ class DatabaseSeeder extends Seeder
MultilineSettingSeeder::class,
TxoddsMarketsSeeder::class,
CountryItalianSeeder::class,
OddsTableSeeder::class,
]);
}
}
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class OddsTableSeeder extends Seeder
{
public function run(): void
{
/**
* Provoider
*/
$sql = "INSERT INTO `odds_tables` (`id`, `name`, `oddnames`, `created_at`, `updated_at`)
VALUES
(1, 'odds_2ways', 'h2w,a2w', NULL, NULL),
(2, 'odds_2ways_s1', 'h2w,a2w', NULL, NULL),
(3, 'odds_3ways', 'h3w,d3w,a3w', NULL, NULL),
(4, 'odds_3ways_ht', 'h3w,d3w,a3w', NULL, NULL),
(5, 'odds_dc', 'dc1x,dc12,dcx2', NULL, NULL),
(6, 'odds_dnb', 'dnb1,dnb2', NULL, NULL),
(7, 'odds_ggng', 'gg,ng', NULL, NULL),
(8, 'odds_points', 'home,away', NULL, NULL),
(9, 'odds_points_ht', 'home,away', NULL, NULL),
(10, 'odds_points_q1', 'home,away', NULL, NULL),
(11, 'odds_totals', 'over,under', NULL, NULL),
(12, 'odds_totals_ht', 'over,under', NULL, NULL),
(13, 'odds_totals_q1', 'over,under', NULL, NULL),
(14, 'odds_tq', 'htq,atq', NULL, NULL);
;
";
DB::unprepared($sql);
}
}
+10 -11
View File
@@ -14,15 +14,15 @@ class SupervisorSeeder extends Seeder
*/
$sql = "INSERT INTO `supervisors` (`id`, `name`, `provider_id`, `sport_id`, `txodds_market_id`, `sleep`, `limit`, `runtime`, `commandline_options`, `maxsconds`, `lastcall`, `use_lastcall`, `is_supervisor`, `is_active`, `days_from`, `days_to`, `created_at`, `updated_at`)
VALUES
(1, 'Fixtures', 1, NULL, NULL, 10, 0, '0.279', NULL, 1800, 0, 0, 0, 0, 0, 30, '2025-08-27 07:39:55', '2026-01-27 09:34:20'),
(2, 'Odds', 1, 1, NULL, 10, 0, '2.912', NULL, 30, 0, 0, 1, 0, 0, 10, '2025-12-01 05:41:02', '2026-01-27 09:37:32'),
(1, 'Fixtures', 1, NULL, NULL, 10, 0, '0.264', NULL, 1800, 0, 0, 0, 0, 0, 30, '2025-08-27 07:39:55', '2026-01-27 13:37:24'),
(2, 'Odds', 1, 1, NULL, 10, 0, '0.167', NULL, 30, 0, 0, 1, 0, 0, 10, '2025-12-01 05:41:02', '2026-01-27 13:38:33'),
(3, 'Fixtures', 2, 0, NULL, 15, 0, '0.266', NULL, 1800, 0, 0, 0, 0, 0, 0, '2025-12-19 11:42:35', '2026-01-16 09:34:05'),
(4, 'Willhill', 2, 0, NULL, 15, 0, '0.842', NULL, 1800, 0, 0, 0, 0, 0, 0, '2025-12-19 11:48:05', '2026-01-16 09:34:57'),
(5, 'Bwin', 2, 0, NULL, 15, 0, '0.278', NULL, 1800, 0, 0, 0, 0, 0, 0, '2025-12-22 06:41:18', '2026-01-16 09:35:14'),
(6, 'Bet365', 2, 0, NULL, 10, 0, '2.339', NULL, 30, 0, 0, 1, 0, 0, 0, '2025-12-18 17:44:33', '2026-01-16 09:37:35'),
(4, 'Willhill', 2, 0, NULL, 15, 0, '0.062', NULL, 1800, 0, 0, 0, 0, 0, 0, '2025-12-19 11:48:05', '2026-01-27 13:44:40'),
(5, 'Bwin', 2, 0, NULL, 15, 0, '0.389', NULL, 1800, 0, 0, 0, 0, 0, 0, '2025-12-22 06:41:18', '2026-01-27 13:45:17'),
(6, 'Bet365', 2, 0, NULL, 10, 0, '0.264', NULL, 30, 0, 0, 1, 0, 0, 0, '2025-12-18 17:44:33', '2026-01-27 13:52:44'),
(7, 'Odds', 2, 0, NULL, 10, 0, '0', NULL, 30, 0, 0, 1, 0, 0, 0, '2025-12-18 17:44:33', '2026-01-14 15:56:02'),
(8, 'Fixtures', 4, 1, NULL, 10, 0, '1.097', NULL, 30, 0, 0, 0, 0, 0, 0, '2025-12-18 17:44:33', '2026-01-16 10:36:29'),
(9, 'Odds', 4, 0, NULL, 15, 0, '0.032', NULL, 1800, 0, 0, 1, 0, 0, 0, '2026-01-03 12:27:44', '2026-01-16 10:57:56'),
(8, 'Fixtures', 4, 1, NULL, 10, 0, '0.987', NULL, 30, 0, 0, 0, 0, 0, 0, '2025-12-18 17:44:33', '2026-01-27 13:55:15'),
(9, 'Odds', 4, 0, NULL, 15, 0, '0.031', NULL, 1800, 0, 0, 1, 0, 0, 0, '2026-01-03 12:27:44', '2026-01-27 13:56:28'),
(10, 'Fixtures', 3, 0, NULL, 10, 0, '1.368', NULL, 30, 0, 0, 0, 0, 0, 0, '2025-12-18 17:44:33', '2026-01-14 15:55:25'),
(11, 'Odds', 3, 0, NULL, 15, 0, NULL, NULL, 1800, 0, 0, 1, 0, 0, 0, '2026-01-03 12:27:44', '2026-01-14 15:55:24'),
(12, 'Odds', 5, 1, NULL, 10, 0, '0.284', NULL, 30, 0, 0, 1, 0, 0, 0, '2025-12-18 17:44:33', '2026-01-16 11:02:04'),
@@ -37,7 +37,7 @@ class SupervisorSeeder extends Seeder
(21, 'Odds', 1, 2, NULL, 15, 0, NULL, NULL, 30, 0, 0, 1, 0, 0, 10, '2026-01-08 17:57:14', '2026-01-14 15:52:43'),
(22, 'Odds', 1, 5, NULL, 15, 0, NULL, NULL, 30, 0, 0, 1, 0, 0, 10, '2026-01-08 17:57:24', '2026-01-14 15:52:44'),
(23, 'DB Mapper', 7, NULL, NULL, 15, 0, '0.006', NULL, 1800, 0, 0, 0, 0, 0, 0, '2026-01-13 05:55:30', '2026-01-19 04:17:21'),
(24, '', 8, 2, 0, 30, 0, '0.067', NULL, 30, 1768405759, 0, 1, 0, 10, 10, '2026-01-14 15:42:40', '2026-01-27 10:28:17'),
(24, '', 8, 1, 0, 30, 0, '0.067', NULL, 30, 1768405759, 0, 1, 0, 10, 10, '2026-01-14 15:42:40', '2026-01-27 13:57:23'),
(25, '', 8, 1, 4, 30, 0, NULL, NULL, 30, 0, 0, 1, 0, 10, 10, '2026-01-14 16:56:25', '2026-01-14 17:20:08'),
(26, '', 8, 1, 65536, 30, 0, NULL, NULL, 30, 0, 0, 1, 0, 10, 10, '2026-01-14 16:56:28', '2026-01-14 17:20:08'),
(27, '', 8, 1, 65540, 30, 0, NULL, NULL, 30, 0, 0, 1, 0, 10, 10, '2026-01-14 16:56:31', '2026-01-14 17:20:08'),
@@ -66,11 +66,10 @@ class SupervisorSeeder extends Seeder
(50, '', 8, 5, 131073, 30, 0, NULL, NULL, 30, 0, 0, 0, 0, 10, 10, '2026-01-14 17:41:16', '2026-01-14 17:41:25'),
(51, '', 9, 1, NULL, 30, 0, NULL, NULL, 30, 0, 0, 0, 0, 10, 10, '2026-01-16 12:05:14', '2026-01-16 12:05:14'),
(52, '', 10, 0, NULL, 30, 0, NULL, NULL, 30, 0, 0, 0, 0, 10, 10, '2026-01-16 12:05:14', '2026-01-16 12:05:14'),
(53, 'Generate Default Setting', 7, 0, NULL, 30, 0, '0.017', NULL, 30, 0, 0, 0, 0, 10, 10, '2026-01-16 12:05:14', '2026-01-27 11:23:00'),
(54, 'Generate Alarms', 7, 1, NULL, 30, 0, NULL, NULL, 30, 0, 0, 0, 0, 10, 10, '2026-01-16 12:05:14', '2026-01-27 11:25:41'),
(53, 'Generate Setting', 7, 0, NULL, 30, 0, '0.02', NULL, 30, 0, 0, 0, 0, 10, 10, '2026-01-16 12:05:14', '2026-01-27 13:39:46'),
(54, 'Generate Alarms', 7, 1, NULL, 30, 0, '0', NULL, 30, 0, 0, 0, 0, 10, 10, '2026-01-16 12:05:14', '2026-01-27 13:42:39'),
(55, 'Txodds Offerstatus', 7, NULL, NULL, 30, 0, NULL, NULL, 30, 0, 0, 0, 0, 10, 10, '2026-01-27 11:25:56', '2026-01-27 11:26:05');
";
DB::unprepared($sql);
}
}