wip
This commit is contained in:
1 parent
419148cd18
commit
7abcc5c56c
75 files changed
+32250
-127794
No files matched your search
@@ -8,10 +8,10 @@ class Curl
|
||||
{
|
||||
public static $file;
|
||||
|
||||
public static function load($url)
|
||||
public static function load($url, $filetype = 'json')
|
||||
{
|
||||
|
||||
self::$file = app_path().'/Console/TestFiles/'.strtolower(str_replace(' ', '_', NuhBash::$options['name'])).'.'.NuhBash::$options['filetype'];
|
||||
self::$file = app_path().'/Console/TestFiles/'.strtolower(str_replace(' ', '_', NuhBash::$options['name'])).'.'.$filetype;
|
||||
|
||||
$debug = NuhBash::$options['d'] ?? 0;
|
||||
$save = NuhBash::$options['s'] ?? 0;
|
||||
@@ -25,7 +25,7 @@ class Curl
|
||||
if ($debug) {
|
||||
Notice::note('data read local', 'r');
|
||||
}
|
||||
switch (NuhBash::$options['filetype']) {
|
||||
switch ($filetype) {
|
||||
case 'xml':
|
||||
return simplexml_load_file(self::$file, null, LIBXML_NOCDATA);
|
||||
break;
|
||||
@@ -61,7 +61,7 @@ class Curl
|
||||
file_put_contents(self::$file, $data);
|
||||
}
|
||||
|
||||
if (NuhBash::$options['filetype'] == 'json') {
|
||||
if ($filetype == 'json') {
|
||||
return json_decode($data, true);
|
||||
} else {
|
||||
return $data;
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\TxOdds\DB;
|
||||
|
||||
class DbOdds
|
||||
{
|
||||
public static function call() {}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\TxOdds;
|
||||
|
||||
use App\Console\Commands\Grapper\Grapper;
|
||||
use App\Models\Event;
|
||||
use App\Utilities\Notice;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class Events
|
||||
{
|
||||
public static function grap()
|
||||
{
|
||||
|
||||
Notice::note('txodd fixture sport: '.Grapper::$options['sport_id'], 'b');
|
||||
|
||||
$debug = Grapper::$options['d'] ?? 0;
|
||||
|
||||
$now = Carbon::tomorrow();
|
||||
for ($i = 0; $i < 60; $i++) {
|
||||
|
||||
$from = $now->toDateString();
|
||||
$to = $now->addDays(1)->toDateString();
|
||||
$url = Grapper::$domain.'feed/result/xml.php?'.Grapper::$auth."&date=$from,$to";
|
||||
if ($debug) {
|
||||
Notice::note($url, 'y');
|
||||
}
|
||||
$xml = simplexml_load_file($url, null, LIBXML_NOCDATA);
|
||||
foreach ($xml->match as $_match) {
|
||||
|
||||
Event::updateOrCreate([
|
||||
'txid' => (int) $_match['id'],
|
||||
'spid' => Grapper::$options['sport_id'],
|
||||
'prid' => Grapper::$options['provider_id'],
|
||||
|
||||
'cnid' => (int) $_match->group['cnid'], // country_id
|
||||
'grid' => (int) $_match->group['id'], // group_id
|
||||
'cgid' => (int) $_match->group['cgid'], // competition_group_id
|
||||
|
||||
'hoid' => (int) $_match->hteam['id'],
|
||||
'awid' => (int) $_match->ateam['id'],
|
||||
'home' => (string) $_match->hteam,
|
||||
'away' => (string) $_match->ateam,
|
||||
'liga' => (string) $_match->group['cname'],
|
||||
], [
|
||||
'time' => Carbon::parse($_match->time)->toDateTimeString(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,11 +3,11 @@
|
||||
namespace App\Console\Commands\Grapper\TxOdds;
|
||||
|
||||
use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Grapper\TxOdds\Fixtures\TxCountry;
|
||||
use App\Console\Commands\Grapper\TxOdds\Fixtures\TxElement;
|
||||
use App\Console\Commands\Grapper\TxOdds\Fixtures\TxLiga;
|
||||
use App\Console\Commands\NuhBash;
|
||||
use App\Models\CompetitionGroup;
|
||||
use App\Models\Element;
|
||||
use App\Models\Event;
|
||||
use App\Models\Group;
|
||||
use App\Utilities\Notice;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
@@ -17,7 +17,6 @@ class Fixtures
|
||||
{
|
||||
$debug = NuhBash::$options['d'] ?? 0;
|
||||
$print = NuhBash::$options['p'] ?? 0;
|
||||
$read = NuhBash::$options['r'] ?? 0;
|
||||
$break = NuhBash::$options['b'] ?? 0;
|
||||
|
||||
$total = 0;
|
||||
@@ -29,38 +28,86 @@ class Fixtures
|
||||
$to = $date->addDays($i + 1)->toDateString();
|
||||
|
||||
$url = 'https://xml2.txodds.com/feed/result/xml.php?'.config('nuh.txodds_token_soccer')."&date=$from,$to&json=2";
|
||||
$data = Curl::load($url, $debug);
|
||||
$data = Curl::load($url);
|
||||
|
||||
if ($print) {
|
||||
Notice::note($data, '', 1);
|
||||
}
|
||||
|
||||
$count = 0;
|
||||
foreach ($data['match'] as $row) {
|
||||
$e = [];
|
||||
foreach ($data['match'] as $match) {
|
||||
|
||||
foreach ($match as $key => $v) {
|
||||
|
||||
switch ($key) {
|
||||
case '@attributes':
|
||||
$e['txodds_id'] = (int) $v['id'];
|
||||
break;
|
||||
|
||||
case 'time':
|
||||
$starttime = Carbon::createFromDate($v)->toDateTimeString();
|
||||
break;
|
||||
|
||||
case 'group':
|
||||
|
||||
$e['sport_id'] = (int) $v['@attributes']['spid'];
|
||||
$e['country_id'] = (int) $v['@attributes']['cnid'];
|
||||
$e['group_id'] = (int) $v['@attributes']['id'];
|
||||
$e['competition_group_id'] = (int) $v['@attributes']['cgid'];
|
||||
|
||||
Group::firstOrCreate([
|
||||
'txodds_id' => $v['@attributes']['id'],
|
||||
'competition_group_id' => $e['competition_group_id'],
|
||||
], [
|
||||
'name' => (string) $v['@text'],
|
||||
'sport_id' => $e['sport_id'],
|
||||
'country_id' => $e['country_id'],
|
||||
]);
|
||||
|
||||
CompetitionGroup::firstOrCreate([
|
||||
'txodds_id' => $v['@attributes']['cgid'],
|
||||
'name' => $v['@attributes']['cname'],
|
||||
'sport_id' => $e['sport_id'],
|
||||
'country_id' => $e['country_id'],
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'hteam':
|
||||
$e['home_id'] = $v['@attributes']['id'];
|
||||
|
||||
Element::firstOrCreate([
|
||||
'txodds_id' => (int) $v['@attributes']['id'],
|
||||
'name' => $v['@text'],
|
||||
'sport_id' => $e['sport_id'],
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'ateam':
|
||||
$e['away_id'] = $v['@attributes']['id'];
|
||||
|
||||
Element::firstOrCreate([
|
||||
'txodds_id' => (int) $v['@attributes']['id'],
|
||||
'name' => $v['@text'],
|
||||
'sport_id' => $e['sport_id'],
|
||||
]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Event::firstOrCreate($e, ['starttime' => $starttime]);
|
||||
|
||||
$count++;
|
||||
$txodds_id = array_column($row, 'id');
|
||||
$spid = array_column($row['group'], 'spid');
|
||||
$country_id = TxCountry::find($row['group']);
|
||||
$liga_id = TxLiga::find($country_id, $row['group']);
|
||||
$home_id = TxElement::find($row['hteam'], 1);
|
||||
$away_id = TxElement::find($row['ateam'], 1);
|
||||
|
||||
$event = Event::updateOrCreate([
|
||||
'starttime' => date('Y-m-d H:i:s', strtotime($row['time'])),
|
||||
'sport_id' => (int) $spid[0],
|
||||
'provider_id' => 1,
|
||||
'txodds_id' => (int) $txodds_id[0],
|
||||
'country_id' => (int) $country_id,
|
||||
'liga_id' => (int) $liga_id,
|
||||
'home_id' => (int) $home_id,
|
||||
'away_id' => (int) $away_id,
|
||||
]);
|
||||
}
|
||||
Notice::note("$from - $count events processed", 'g');
|
||||
|
||||
if ($debug) {
|
||||
Notice::note("$from - $count events processed", 'g');
|
||||
}
|
||||
|
||||
$total += $count;
|
||||
|
||||
if ($break) {
|
||||
if ($break || $debug) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\TxOdds\Fixtures;
|
||||
|
||||
use App\Models\Country;
|
||||
|
||||
class TxCountry
|
||||
{
|
||||
public static function find($group)
|
||||
{
|
||||
|
||||
$cnid = array_column($group, 'cnid');
|
||||
$cname = array_column($group, 'cname');
|
||||
|
||||
$country = Country::firstOrCreate(
|
||||
['txid' => $cnid[0]],
|
||||
['name' => $cname[0]]
|
||||
);
|
||||
|
||||
return $country->id;
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\TxOdds\Fixtures;
|
||||
|
||||
use App\Models\Element;
|
||||
|
||||
class TxElement
|
||||
{
|
||||
public static function find($element, $sport_id)
|
||||
{
|
||||
|
||||
// dd($element);
|
||||
|
||||
$txodds_id = array_column($element, 'id');
|
||||
|
||||
$element = Element::firstOrCreate([
|
||||
'name' => (string) $element['@text'],
|
||||
'sport_id' => $sport_id,
|
||||
'txodds_id' => (int) $txodds_id[0],
|
||||
]);
|
||||
|
||||
return $element->id;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Grapper\TxOdds\Fixtures;
|
||||
|
||||
use App\Models\Liga;
|
||||
|
||||
class TxLiga
|
||||
{
|
||||
public static function find($country_id, $group)
|
||||
{
|
||||
$cname = array_column($group, 'cname');
|
||||
$spid = array_column($group, 'spid');
|
||||
$cgid = array_column($group, 'cgid');
|
||||
|
||||
$liga = Liga::firstOrCreate([
|
||||
'name' => (string) $cname[0],
|
||||
'sport_id' => (int) $spid[0],
|
||||
'country_id' => $country_id,
|
||||
'txodds_id' => (int) $cgid[0],
|
||||
]);
|
||||
|
||||
return $liga->id;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ use App\Console\Commands\Curl;
|
||||
use App\Console\Commands\Grapper\Helper;
|
||||
use App\Console\Commands\NuhBash;
|
||||
use App\Models\Event;
|
||||
use App\Models\EventBookmaker;
|
||||
use App\Models\Odds3way;
|
||||
use App\Models\OddsQualify;
|
||||
use App\Models\OddsTotal;
|
||||
@@ -17,7 +18,11 @@ class Odds
|
||||
public static function grap()
|
||||
{
|
||||
|
||||
Notice::note('txodd odd sport: '.NuhBash::$options['sport_id'], 'b');
|
||||
$debug = NuhBash::$options['d'] ?? 0;
|
||||
|
||||
if ($debug) {
|
||||
Notice::note('txodd odd sport: '.NuhBash::$options['sport_id'], 'b');
|
||||
}
|
||||
|
||||
/*************************************************
|
||||
* SINGLE SOCCER
|
||||
@@ -120,207 +125,211 @@ class Odds
|
||||
*************************************************/
|
||||
foreach ($_calls as $url) {
|
||||
|
||||
$json_obj = Curl::load($url, $debug);
|
||||
$json_obj = Curl::load($url);
|
||||
|
||||
$e = [];
|
||||
foreach ($json_obj['match'] as $match) {
|
||||
|
||||
foreach ($json_obj['match'] as $key => $v) {
|
||||
$e = [];
|
||||
|
||||
Notice::note($key, 'b');
|
||||
foreach ($match as $key => $v) {
|
||||
|
||||
switch ($key) {
|
||||
case '@attributes':
|
||||
$e['id'] = (int) $v['id'];
|
||||
break;
|
||||
// if ($debug) {
|
||||
// Notice::note($key, 'b');
|
||||
// }
|
||||
|
||||
case 'time':
|
||||
$e['time'] = $v;
|
||||
break;
|
||||
switch ($key) {
|
||||
|
||||
case 'group':
|
||||
$e['liga'] = $v['@attributes']['cname'];
|
||||
$e['liid'] = $v['@attributes']['id'];
|
||||
$e['cgid'] = $v['@attributes']['cgid'];
|
||||
$e['spid'] = $v['@attributes']['spid'];
|
||||
$e['mgid'] = $v['@attributes']['mgid'];
|
||||
$e['cnid'] = $v['@attributes']['cnid'];
|
||||
break;
|
||||
case '@attributes':
|
||||
$e['id'] = (int) $v['id'];
|
||||
break;
|
||||
|
||||
case 'hteam':
|
||||
$e['hoid'] = $v['@attributes']['id'];
|
||||
$e['home'] = $v['@text'];
|
||||
break;
|
||||
case 'time':
|
||||
$starttime = Carbon::createFromDate($v)->toDateTimeString();
|
||||
break;
|
||||
|
||||
case 'ateam':
|
||||
$e['awid'] = $v['@attributes']['id'];
|
||||
$e['away'] = $v['@text'];
|
||||
break;
|
||||
case 'group':
|
||||
|
||||
case 'bookmaker':
|
||||
$e['sport_id'] = (int) $v['@attributes']['spid'];
|
||||
$e['country_id'] = (int) $v['@attributes']['cnid'];
|
||||
$e['group_id'] = (int) $v['@attributes']['id'];
|
||||
$e['competition_group_id'] = (int) $v['@attributes']['cgid'];
|
||||
break;
|
||||
|
||||
foreach ($v as $books) {
|
||||
case 'hteam':
|
||||
$e['home_id'] = $v['@attributes']['id'];
|
||||
break;
|
||||
|
||||
foreach ($books as $bkey => $book) {
|
||||
case 'ateam':
|
||||
$e['away_id'] = $v['@attributes']['id'];
|
||||
|
||||
switch ($bkey) {
|
||||
case '@attributes':
|
||||
$bname = $book['name'];
|
||||
$bkmid = (int) $book['bid'];
|
||||
$e['odds'][$bkmid]['name'] = $bname;
|
||||
break;
|
||||
case 'offer':
|
||||
$event = Event::firstOrCreate($e, ['starttime' => $starttime]);
|
||||
break;
|
||||
|
||||
foreach ($book as $offer) {
|
||||
foreach ($offer as $type => $od) {
|
||||
case 'bookmaker':
|
||||
|
||||
switch ($type) {
|
||||
case '@attributes':
|
||||
$bettypeid = (int) $od['ot'];
|
||||
dd('add to event bookmaker missing');
|
||||
// 'book_startime' => $od['@attributes']['starting_time'],
|
||||
$bmoid = $od['bmoid'];
|
||||
break;
|
||||
case 'odds':
|
||||
switch ($bettypeid) {
|
||||
case '0':
|
||||
Odds3way::updateOrCreate(
|
||||
[
|
||||
'event_id' => $e['id'],
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
'bmoid' => $bmoid,
|
||||
],
|
||||
[
|
||||
'start' => $od['@attributes']['starting_time'],
|
||||
'h3w' => (float) $od['o1'],
|
||||
'd3w' => (float) $od['o2'],
|
||||
'a3w' => (float) $od['o3'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o2'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
foreach ($v as $books) {
|
||||
|
||||
case '1':
|
||||
Odds2way::updateOrCreate(
|
||||
[
|
||||
'event_id' => $e['id'],
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
'bmoid' => $bmoid,
|
||||
],
|
||||
[
|
||||
'start' => $od['@attributes']['starting_time'],
|
||||
'h2w' => (float) $od['o1'],
|
||||
'a2w' => (float) $od['o3'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
foreach ($books as $bookkey => $book) {
|
||||
|
||||
case '4':
|
||||
OddsTotal::updateOrCreate(
|
||||
[
|
||||
'event_id' => $e['id'],
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
'bmoid' => $bmoid,
|
||||
'spread' => (float) $od['o3'],
|
||||
],
|
||||
[
|
||||
'start' => $od['@attributes']['starting_time'],
|
||||
'over' => (float) $od['o1'],
|
||||
'under' => (float) $od['o2'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o2'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
$bkmid = false;
|
||||
|
||||
case '5242880':
|
||||
OddsDc::updateOrCreate(
|
||||
[
|
||||
'event_id' => $e['id'],
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
'bmoid' => $bmoid,
|
||||
],
|
||||
[
|
||||
'start' => $od['@attributes']['starting_time'],
|
||||
'dc1x' => (float) $od['o1'],
|
||||
'dc12' => (float) $od['o2'],
|
||||
'dc2x' => (float) $od['o3'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o2'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
case '11534337':
|
||||
OddsGgng::updateOrCreate(
|
||||
[
|
||||
'event_id' => $e['id'],
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
'bmoid' => $bmoid,
|
||||
],
|
||||
[
|
||||
'start' => $od['@attributes']['starting_time'],
|
||||
'gg' => (float) $od['o1'],
|
||||
'ng' => (float) $od['o3'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
case '11534337':
|
||||
OddsQualify::updateOrCreate(
|
||||
[
|
||||
'event_id' => $e['id'],
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
'bmoid' => $bmoid,
|
||||
],
|
||||
[
|
||||
'start' => $od['@attributes']['starting_time'],
|
||||
'htq' => (float) $od['o1'],
|
||||
'atq' => (float) $od['o2'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
switch ($bookkey) {
|
||||
case '@attributes':
|
||||
if (isset($book['bid'])) {
|
||||
$bkmid = (int) $book['bid'];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'offer':
|
||||
if ($bkmid) {
|
||||
foreach ($book as $type => $od) {
|
||||
|
||||
switch ($type) {
|
||||
case '@attributes':
|
||||
$bettypeid = (int) $od['ot'];
|
||||
$bmoid = (int) $od['bmoid'];
|
||||
break;
|
||||
case 'odds':
|
||||
switch ($bettypeid) {
|
||||
case '0':
|
||||
Odds3way::updateOrCreate(
|
||||
[
|
||||
'event_id' => $event->id,
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
],
|
||||
[
|
||||
'h3w' => (float) $od['o1'],
|
||||
'd3w' => (float) $od['o2'],
|
||||
'a3w' => (float) $od['o3'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o2'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'nuh_check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
|
||||
EventBookmaker::updateOrCreate([
|
||||
'event_id' => $event->id,
|
||||
'bookmaker_id' => $bkmid,
|
||||
'bmoid' => $bmoid,
|
||||
], [
|
||||
'bkm_starttime' => Carbon::createFromDate($od['@attributes']['starting_time'])->toDateTimeString(),
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]);
|
||||
|
||||
break;
|
||||
|
||||
case '1':
|
||||
Odds2way::updateOrCreate(
|
||||
[
|
||||
'event_id' => $event->id,
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
],
|
||||
[
|
||||
'h2w' => (float) $od['o1'],
|
||||
'a2w' => (float) $od['o3'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'nuh_check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
case '4':
|
||||
OddsTotal::updateOrCreate(
|
||||
[
|
||||
'event_id' => $event->id,
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
'spread' => (float) $od['o3'],
|
||||
],
|
||||
[
|
||||
'over' => (float) $od['o1'],
|
||||
'under' => (float) $od['o2'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o2'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'nuh_check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
case '5242880':
|
||||
OddsDc::updateOrCreate(
|
||||
[
|
||||
'event_id' => $event->id,
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
],
|
||||
[
|
||||
'dc1x' => (float) $od['o1'],
|
||||
'dc12' => (float) $od['o2'],
|
||||
'dc2x' => (float) $od['o3'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o2'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'nuh_check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
case '11534337':
|
||||
OddsGgng::updateOrCreate(
|
||||
[
|
||||
'event_id' => $event->id,
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
],
|
||||
[
|
||||
'gg' => (float) $od['o1'],
|
||||
'ng' => (float) $od['o3'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'nuh_check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
case '11534337':
|
||||
OddsQualify::updateOrCreate(
|
||||
[
|
||||
'event_id' => $event->id,
|
||||
'bookmaker_id' => $bkmid,
|
||||
'sport_id' => NuhBash::$options['sport_id'],
|
||||
],
|
||||
[
|
||||
'htq' => (float) $od['o1'],
|
||||
'atq' => (float) $od['o2'],
|
||||
'margin' => (float) Helper::margin([$od['o1'], $od['o3']], 1),
|
||||
'flag' => 1,
|
||||
'nuh_check' => 0,
|
||||
'source_updated_at' => $od['@attributes']['time'],
|
||||
'last_check_at' => Carbon::now()->toDateTimeString(),
|
||||
]
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"@attributes":{"time":"2025-12-01T15:15:42+00:00","timestamp":"1764602142"},"match":[{"@attributes":{"id":"14546537","xsid":"0","gsmid":"0","last_updated":"2025-12-01T03:21:08+00:00"},"time":"2025-12-01T20:00:00+00:00","group":{"@attributes":{"id":"176998","cgid":"471","spid":"1","cnid":"467","mgid":"1002","cname":"Prim B Metro"},"@text":"FBARG Prim B Metro > Clausura-25"},"hteam":{"@attributes":{"id":"45668"},"@text":"Deportivo Armenio"},"ateam":{"@attributes":{"id":"41971"},"@text":"Sportivo Italiano"},"results":{"status":{"@attributes":{"last_updated":"2025-12-01T03:21:08+00:00","minute":"-1"},"@text":"Sched"},"result":{"@attributes":{"id":"1","name":"CURRENT","value":""}}}},{"@attributes":{"id":"14562676","xsid":"0","gsmid":"0","last_updated":"2025-12-01T04:01:21+00:00"},"time":"2025-12-01T00:00:00+00:00","group":{"@attributes":{"id":"180820","cgid":"501","spid":"1","cnid":"467","mgid":"1002","cname":"Torneo Regional Federal Amateur"},"@text":"FBARG Torneo Regional Federal Amateur-25"},"hteam":{"@attributes":{"id":"131618"},"@text":"Defensores de Salto"},"ateam":{"@attributes":{"id":"1642554"},"@text":"Argentino Chacabuco"},"results":{"status":{"@attributes":{"last_updated":"2025-12-01T04:01:20+00:00","minute":"-1"},"@text":"Fin"},"result":{"@attributes":{"id":"1","name":"CURRENT","value":""}}}},{"@attributes":{"id":"14557469","xsid":"0","gsmid":"0","last_updated":"2025-11-26T18:53:27+00:00"},"time":"2025-12-01T20:00:00+00:00","group":{"@attributes":{"id":"181746","cgid":"87","spid":"1","cnid":"467","mgid":"1002","cname":"Liga Profesional Argentina"},"@text":"FBARG Liga Profesional Argentina > Clausura Quarter Finals-25"},"hteam":{"@attributes":{"id":"58621"},"@text":"Barracas Central"},"ateam":{"@attributes":{"id":"2049"},"@text":"Gimnasia LP"},"results":{"status":{"@attributes":{"last_updated":"2025-11-26T18:53:26+00:00","minute":"-1"},"@text":"Sched"},"result":{"@attributes":{"id":"1","name":"CURRENT","value":""}}}},{"@attributes":{"id":"14563565","xsid":"0","gsmid":"0","last_updated":"2025-11-29T12:24:10+00:00"},"time":"2025-12-01T22:00:00+00:00","group":{"@attributes":{"id":"180791","cgid":"1164","spid":"1","cnid":"409","mgid":"1009","cname":"Copa Fares Lopes"},"@text":"FBBRA Copa Fares Lopes-25"},"hteam":{"@attributes":{"id":"1004395"},"@text":"Fortaleza B"},"ateam":{"@attributes":{"id":"1482714"},"@text":"Centro de Formacao de Atletas Tirol"},"results":{"status":{"@attributes":{"last_updated":"2025-11-29T12:24:09+00:00","minute":"-1"},"@text":"Sched"},"result":{"@attributes":{"id":"1","name":"CURRENT","value":""}}}},{"@attributes":{"id":"14561535","xsid":"0","gsmid":"0","last_updated":"2025-11-29T15:16:15+00:00"},"time":"2025-12-01T11:30:00+00:00","group":{"@attributes":{"id":"181798","cgid":"51812","spid":"1","cnid":"409","mgid":"1009","cname":"Copa Recife U20"},"@text":"FBBRA Copa Recife U20-25"},"hteam":{"@attributes":{"id":"132428"},"@text":"Sport Recife PE U20"},"ateam":{"@attributes":{"id":"2235604"},"@text":"Cha Grande PE U20"},"results":{"status":{"@attributes":{"last_updated":"2025-11-29T15:16:13+00:00","minute":"-1"},"@text":"Sched"},"result":{"@attributes":{"id":"1","name":"CURRENT","value":""}}}},{"@attributes":{"id":"14561542","xsid":"0","gsmid":"0","last_updated":"2025-11-28T11:08:40+00:00"},"time":"2025-12-01T13:00:00+00:00","group":{"@attributes":{"id":"181798","cgid":"51812","spid":"1","cnid":"409","mgid":"1009","cname":"Copa Recife U20"},"@text":"FBBRA Copa Recife U20-25"},"hteam":{"@attributes":{"id":"2235656"},"@text":"Internacional PE U20"},"ateam":{"@attributes":{"id":"1455508"},"@text":"Serrano PE U20"},"results":{"status":{"@attributes":{"last_updated":"2025-11-28T11:08:40+00:00","minute":"-1"},"@text":"Sched"},"result":{"@attributes":{"id":"1","name":"CURRENT","value":""}}}},{"@attributes":{"id":"14563579","xsid":"0","gsmid":"0","last_updated":"2025-11-29T15:13:15+00:00"},"time":"2025-12-01T16:30:00+00:00","group":{"@attributes":{"id":"181798","cgid":"51812","spid":"1","cnid":"409","mgid":"1009","cname":"Copa Recife U20"},"@text":"FBBRA Copa Recife U20-25"},"hteam":{"@attributes":{"id":"2235956"},"@text":"Inter Arabia U20"},"ateam":{"@attributes":{"id":"1493668"},"@text":"Guarany AL U20"},"results":{"status":{"@attributes":{"last_updated":"2025-11-29T15:13:13+00:00","minute":"-1"},"@text":"Sched"},"result":{"@attributes":{"id":"1","name":"CURRENT","value":""}}}},{"@attributes":{"id":"14563577","xsid":"0","gsmid":"0","last_updated":"2025-11-29T16:04:15+00:00"},"time":"2025-12-01T17:30:00+00:00","group":{"@attributes":{"id":"181798","cgid":"51812","spid":"1","cnid":"409","mgid":"1009","cname":"Copa Recife U20"},"@text":"FBBRA Copa Recife U20-25"},"hteam":{"@attributes":{"id":"2198184"},"@text":"Guarany EC U20"},"ateam":{"@attributes":{"id":"1180207"},"@text":"Ipojuca PE U20"},"results":{"status":{"@attributes":{"last_updated":"2025-11-29T16:04:14+00:00","minute":"-1"},"@text":"Sched"},"result":{"@attributes":{"id":"1","name":"CURRENT","value":""}}}},{"@attributes":{"id":"Line truncated
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1 +0,0 @@
|
||||
{"@attributes":{"time":"2025-11-30T05:12:00+00:00","timestamp":"1764479520"},"match":{"@attributes":{"id":"13425457","xsid":"0","gsmid":"0"},"time":"2025-11-29T05:00:00+00:00","group":{"@attributes":{"id":"172158","cgid":"110","spid":"1","cnid":"416","mgid":"1031","cname":"J2 League"},"@text":"FBJPN J2 League-25"},"hteam":{"@attributes":{"id":"42598"},"@text":"Renofa Yamaguchi"},"ateam":{"@attributes":{"id":"6519"},"@text":"Omiya Ardija"},"results":null,"bookmaker":[{"@attributes":{"bid":"42","name":"William Hill"},"offer":[{"@attributes":{"id":"4093976728","n":"2","ot":"5242880","otname":"double chance (1x\/x2\/12)","last_updated":"2025-11-29T04:57:49+00:00","flags":"0","bmoid":"37808110"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T03:55:11+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"1.620","o2":"1.350","o3":"1.330"}},{"@attributes":{"id":"4093976730","n":"1","ot":"4","otname":"totals","last_updated":"2025-11-29T04:57:49+00:00","flags":"0","bmoid":"37808110"},"odds":{"@attributes":{"i":"0","time":"2025-11-24T02:16:13+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"1.050","o2":"10.000","o3":"0.50"}},{"@attributes":{"id":"4093976740","n":"7","ot":"0","otname":"three way","last_updated":"2025-11-29T04:57:49+00:00","flags":"0","bmoid":"37808110"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T04:47:14+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"3.000","o2":"3.100","o3":"2.150"}},{"@attributes":{"id":"4093976746","n":"2","ot":"4","otname":"totals","last_updated":"2025-11-29T04:57:49+00:00","flags":"0","bmoid":"37808110"},"odds":{"@attributes":{"i":"0","time":"2025-11-28T05:04:25+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"1.910","o2":"1.800","o3":"2.50"}},{"@attributes":{"id":"4093976751","n":"3","ot":"4","otname":"totals","last_updated":"2025-11-29T04:57:49+00:00","flags":"0","bmoid":"37808110"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T04:52:23+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"1.250","o2":"3.500","o3":"1.50"}},{"@attributes":{"id":"4093976754","n":"3","ot":"4","otname":"totals","last_updated":"2025-11-29T04:57:49+00:00","flags":"0","bmoid":"37808110"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T02:02:19+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"3.100","o2":"1.300","o3":"3.50"}},{"@attributes":{"id":"4093976781","n":"1","ot":"11534337","otname":"both teams to score","last_updated":"2025-11-29T04:57:49+00:00","flags":"0","bmoid":"37808110"},"odds":{"@attributes":{"i":"0","time":"2025-11-24T02:16:13+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"1.670","o2":"0.000","o3":"2.100"}}]},{"@attributes":{"bid":"327","name":"Sbobet.com"},"offer":[{"@attributes":{"id":"4094133178","n":"44","ot":"4","otname":"totals","last_updated":"2025-11-29T05:02:04+00:00","flags":"0","bmoid":"0"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T04:58:47+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"1.930","o2":"1.970","o3":"2.50"}},{"@attributes":{"id":"4094249885","n":"52","ot":"0","otname":"three way","last_updated":"2025-11-29T05:02:04+00:00","flags":"0","bmoid":"0"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T04:58:47+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"3.190","o2":"3.290","o3":"2.250"}},{"@attributes":{"id":"4094250268","n":"44","ot":"5242880","otname":"double chance (1x\/x2\/12)","last_updated":"2025-11-29T05:02:04+00:00","flags":"0","bmoid":"0"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T04:58:47+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"1.690","o2":"1.320","o3":"1.300"}},{"@attributes":{"id":"4096814952","n":"10","ot":"4","otname":"totals","last_updated":"2025-11-29T05:02:04+00:00","flags":"0","bmoid":"0"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T04:58:47+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"2.200","o2":"1.730","o3":"2.75"}},{"@attributes":{"id":"4097533283","n":"2","ot":"4","otname":"totals","last_updated":"2025-11-29T05:02:04+00:00","flags":"0","bmoid":"0"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T04:58:47+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"1.670","o2":"2.290","o3":"2.25"}}]},{"@attributes":{"bid":"30","name":"Bwin"},"offer":[{"@attributes":{"id":"4094637420","n":"3","ot":"5242880","otname":"double chance (1x\/x2\/12)","last_updated":"2025-11-29T05:00:09+00:00","flags":"0","bmoid":"0"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T04:10:54+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"1.610","o2":"1.350","o3":"1.310"}},{"@attributes":{"id":"4094637422","n":"3","ot":"0","otname":"three way","last_updated":"2025-11-29T05:00:09+00:00","flags":"0","bmoid":"0"},"odds":{"@attributes":{"i":"0","time":"2025-11-29T04:10:54+00:00","starting_time":"2025-11-29T05:00:00+00:00"},"o1":"2.950","o2":"3.100","o3":"2.150"}},{"@attributes":{"id":"4094637424","n":"2","ot":"4","otname":"totals","last_updated":"2025-11-29T05:00:09+00:00","flags":"0","bmoid":"0"},"odds":{"@attributeLine truncated
|
||||
@@ -22,7 +22,7 @@ class BookmakerResource extends Resource
|
||||
|
||||
protected static ?string $cluster = AdministratorCluster::class;
|
||||
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Administration';
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Static Data';
|
||||
|
||||
public static function canViewAny(): bool
|
||||
{
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\CompetitionGroupFilters;
|
||||
|
||||
use App\Filament\Clusters\Administrator\AdministratorCluster;
|
||||
use App\Filament\Resources\CompetitionGroupFilters\Pages\CreateCompetitionGroupFilter;
|
||||
use App\Filament\Resources\CompetitionGroupFilters\Pages\EditCompetitionGroupFilter;
|
||||
use App\Filament\Resources\CompetitionGroupFilters\Pages\ListCompetitionGroupFilters;
|
||||
use App\Filament\Resources\CompetitionGroupFilters\Schemas\CompetitionGroupFilterForm;
|
||||
use App\Filament\Resources\CompetitionGroupFilters\Tables\CompetitionGroupFiltersTable;
|
||||
use App\Models\CompetitionGroupFilter;
|
||||
use BackedEnum;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Schemas\Schema;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Table;
|
||||
use UnitEnum;
|
||||
|
||||
class CompetitionGroupFilterResource extends Resource
|
||||
{
|
||||
protected static ?string $model = CompetitionGroupFilter::class;
|
||||
|
||||
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
|
||||
|
||||
protected static ?string $recordTitleAttribute = 'name';
|
||||
|
||||
protected static ?string $cluster = AdministratorCluster::class;
|
||||
|
||||
protected static string|UnitEnum|null $navigationGroup = 'Dynamic Data';
|
||||
|
||||
public static function canViewAny(): bool
|
||||
{
|
||||
return auth()->user()->super_admin == 1;
|
||||
}
|
||||
|
||||
public static function form(Schema $schema): Schema
|
||||
{
|
||||
return CompetitionGroupFilterForm::configure($schema);
|
||||
}
|
||||
|
||||
public static function table(Table $table): Table
|
||||
{
|
||||
return CompetitionGroupFiltersTable::configure($table);
|
||||
}
|
||||
|
||||
public static function getRelations(): array
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
{
|
||||
return [
|
||||
'index' => ListCompetitionGroupFilters::route('/'),
|
||||
'create' => CreateCompetitionGroupFilter::route('/create'),
|
||||
'edit' => EditCompetitionGroupFilter::route('/{record}/edit'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\CompetitionGroupFilters\Pages;
|
||||
|
||||
use App\Filament\Resources\CompetitionGroupFilters\CompetitionGroupFilterResource;
|
||||
use Filament\Resources\Pages\CreateRecord;
|
||||
|
||||
class CreateCompetitionGroupFilter extends CreateRecord
|
||||
{
|
||||
protected static string $resource = CompetitionGroupFilterResource::class;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\CompetitionGroupFilters\Pages;
|
||||
|
||||
use App\Filament\Resources\CompetitionGroupFilters\CompetitionGroupFilterResource;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
class EditCompetitionGroupFilter extends EditRecord
|
||||
{
|
||||
protected static string $resource = CompetitionGroupFilterResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
DeleteAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\CompetitionGroupFilters\Pages;
|
||||
|
||||
use App\Filament\Resources\CompetitionGroupFilters\CompetitionGroupFilterResource;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
|
||||
class ListCompetitionGroupFilters extends ListRecords
|
||||
{
|
||||
protected static string $resource = CompetitionGroupFilterResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
CreateAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\CompetitionGroupFilters\Schemas;
|
||||
|
||||
use Filament\Schemas\Schema;
|
||||
|
||||
class CompetitionGroupFilterForm
|
||||
{
|
||||
public static function configure(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
->components([
|
||||
//
|
||||
]);
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\CompetitionGroupFilters\Tables;
|
||||
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class CompetitionGroupFiltersTable
|
||||
{
|
||||
public static function configure(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->columns([
|
||||
//
|
||||
])
|
||||
->filters([
|
||||
//
|
||||
])
|
||||
->recordActions([
|
||||
EditAction::make(),
|
||||
])
|
||||
->toolbarActions([
|
||||
BulkActionGroup::make([
|
||||
DeleteBulkAction::make(),
|
||||
]),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ class CountryResource extends Resource
|
||||
|
||||
protected static ?string $cluster = AdministratorCluster::class;
|
||||
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Administration';
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Static Data';
|
||||
|
||||
public static function canViewAny(): bool
|
||||
{
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\ElementFilters;
|
||||
|
||||
use App\Filament\Clusters\Administrator\AdministratorCluster;
|
||||
use App\Filament\Resources\ElementFilters\Pages\CreateElementFilter;
|
||||
use App\Filament\Resources\ElementFilters\Pages\EditElementFilter;
|
||||
use App\Filament\Resources\ElementFilters\Pages\ListElementFilters;
|
||||
use App\Filament\Resources\ElementFilters\Schemas\ElementFilterForm;
|
||||
use App\Filament\Resources\ElementFilters\Tables\ElementFiltersTable;
|
||||
use App\Models\ElementFilter;
|
||||
use BackedEnum;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Schemas\Schema;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Table;
|
||||
use UnitEnum;
|
||||
|
||||
class ElementFilterResource extends Resource
|
||||
{
|
||||
protected static ?string $model = ElementFilter::class;
|
||||
|
||||
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
|
||||
|
||||
protected static ?string $recordTitleAttribute = 'name';
|
||||
|
||||
protected static ?string $cluster = AdministratorCluster::class;
|
||||
|
||||
protected static string|UnitEnum|null $navigationGroup = 'Dynamic Data';
|
||||
|
||||
public static function canViewAny(): bool
|
||||
{
|
||||
return auth()->user()->super_admin == 1;
|
||||
}
|
||||
|
||||
public static function form(Schema $schema): Schema
|
||||
{
|
||||
return ElementFilterForm::configure($schema);
|
||||
}
|
||||
|
||||
public static function table(Table $table): Table
|
||||
{
|
||||
return ElementFiltersTable::configure($table);
|
||||
}
|
||||
|
||||
public static function getRelations(): array
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
{
|
||||
return [
|
||||
'index' => ListElementFilters::route('/'),
|
||||
'create' => CreateElementFilter::route('/create'),
|
||||
'edit' => EditElementFilter::route('/{record}/edit'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\ElementFilters\Pages;
|
||||
|
||||
use App\Filament\Resources\ElementFilters\ElementFilterResource;
|
||||
use Filament\Resources\Pages\CreateRecord;
|
||||
|
||||
class CreateElementFilter extends CreateRecord
|
||||
{
|
||||
protected static string $resource = ElementFilterResource::class;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\ElementFilters\Pages;
|
||||
|
||||
use App\Filament\Resources\ElementFilters\ElementFilterResource;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
class EditElementFilter extends EditRecord
|
||||
{
|
||||
protected static string $resource = ElementFilterResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
DeleteAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\ElementFilters\Pages;
|
||||
|
||||
use App\Filament\Resources\ElementFilters\ElementFilterResource;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
|
||||
class ListElementFilters extends ListRecords
|
||||
{
|
||||
protected static string $resource = ElementFilterResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
CreateAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\ElementFilters\Schemas;
|
||||
|
||||
use Filament\Schemas\Schema;
|
||||
|
||||
class ElementFilterForm
|
||||
{
|
||||
public static function configure(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
->components([
|
||||
//
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\ElementFilters\Tables;
|
||||
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class ElementFiltersTable
|
||||
{
|
||||
public static function configure(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->columns([
|
||||
//
|
||||
])
|
||||
->filters([
|
||||
//
|
||||
])
|
||||
->recordActions([
|
||||
EditAction::make(),
|
||||
])
|
||||
->toolbarActions([
|
||||
BulkActionGroup::make([
|
||||
DeleteBulkAction::make(),
|
||||
]),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ class EventForm
|
||||
TextInput::make('country_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
TextInput::make('liga_id')
|
||||
TextInput::make('group_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
TextInput::make('home_id')
|
||||
@@ -31,27 +31,6 @@ class EventForm
|
||||
TextInput::make('provider_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
TextInput::make('txodds_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
TextInput::make('betaid_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
TextInput::make('betradar_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
TextInput::make('magnig_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
TextInput::make('magken_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
TextInput::make('lognig_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
TextInput::make('logcol_id')
|
||||
->numeric()
|
||||
->default(0),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -24,13 +24,14 @@ class EventsTable
|
||||
->size(IconSize::ExtraLarge)
|
||||
->icon(fn ($record) => $record->sport->icon)
|
||||
->tooltip(fn ($record) => $record->txodds_id),
|
||||
TextColumn::make('txodds_id')->searchable()->label('Match Id')->badge()->copyable(),
|
||||
TextColumn::make('starttime')
|
||||
->label('Start')
|
||||
->alignCenter()
|
||||
->dateTime('d.m')
|
||||
->weight(FontWeight::Bold)
|
||||
->description(fn ($state): string => Carbon::createFromDate($state)->format('H:i')),
|
||||
TextColumn::make('liga.name')
|
||||
TextColumn::make('competition_group.name')
|
||||
->color('gray')
|
||||
->label('Event')
|
||||
->icon(fn ($record) => $record->country->icon)
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\GroupFilters;
|
||||
|
||||
use App\Filament\Clusters\Administrator\AdministratorCluster;
|
||||
use App\Filament\Resources\GroupFilters\Pages\ListGroupFilters;
|
||||
use App\Filament\Resources\GroupFilters\Schemas\GroupFilterForm;
|
||||
use App\Filament\Resources\GroupFilters\Tables\GroupFiltersTable;
|
||||
use App\Models\GroupFilter;
|
||||
use BackedEnum;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Schemas\Schema;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class GroupFilterResource extends Resource
|
||||
{
|
||||
protected static ?string $model = GroupFilter::class;
|
||||
|
||||
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
|
||||
|
||||
protected static ?string $recordTitleAttribute = 'name';
|
||||
|
||||
protected static ?string $cluster = AdministratorCluster::class;
|
||||
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Dynamic Data';
|
||||
|
||||
public static function canViewAny(): bool
|
||||
{
|
||||
return auth()->user()->super_admin == 1;
|
||||
}
|
||||
|
||||
public static function form(Schema $schema): Schema
|
||||
{
|
||||
return GroupFilterForm::configure($schema);
|
||||
}
|
||||
|
||||
public static function table(Table $table): Table
|
||||
{
|
||||
return GroupFiltersTable::configure($table);
|
||||
}
|
||||
|
||||
public static function getRelations(): array
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
{
|
||||
return [
|
||||
'index' => ListGroupFilters::route('/'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\GroupFilters\Pages;
|
||||
|
||||
use App\Filament\Resources\GroupFilters\GroupFilterResource;
|
||||
use Filament\Resources\Pages\CreateRecord;
|
||||
|
||||
class CreateGroupFilter extends CreateRecord
|
||||
{
|
||||
protected static string $resource = GroupFilterResource::class;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\GroupFilters\Pages;
|
||||
|
||||
use App\Filament\Resources\GroupFilters\GroupFilterResource;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
class EditGroupFilter extends EditRecord
|
||||
{
|
||||
protected static string $resource = GroupFilterResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
DeleteAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\GroupFilters\Pages;
|
||||
|
||||
use App\Filament\Resources\GroupFilters\GroupFilterResource;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
|
||||
class ListGroupFilters extends ListRecords
|
||||
{
|
||||
protected static string $resource = GroupFilterResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
CreateAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\GroupFilters\Schemas;
|
||||
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Schemas\Schema;
|
||||
|
||||
class GroupFilterForm
|
||||
{
|
||||
public static function configure(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
->components([
|
||||
TextInput::make('group_id')
|
||||
->required()
|
||||
->numeric(),
|
||||
TextInput::make('bkm_group_id')
|
||||
->required()
|
||||
->numeric(),
|
||||
TextInput::make('bookmaker_id')
|
||||
->required()
|
||||
->numeric(),
|
||||
TextInput::make('name')
|
||||
->default(null),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\GroupFilters\Tables;
|
||||
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class GroupFiltersTable
|
||||
{
|
||||
public static function configure(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->columns([
|
||||
TextColumn::make('group_id')
|
||||
->numeric()
|
||||
->sortable(),
|
||||
TextColumn::make('bkm_group_id')
|
||||
->numeric()
|
||||
->sortable(),
|
||||
TextColumn::make('bookmaker_id')
|
||||
->numeric()
|
||||
->sortable(),
|
||||
TextColumn::make('name')
|
||||
->searchable(),
|
||||
TextColumn::make('created_at')
|
||||
->dateTime()
|
||||
->sortable()
|
||||
->toggleable(isToggledHiddenByDefault: true),
|
||||
TextColumn::make('updated_at')
|
||||
->dateTime()
|
||||
->sortable()
|
||||
->toggleable(isToggledHiddenByDefault: true),
|
||||
])
|
||||
->filters([
|
||||
//
|
||||
])
|
||||
->recordActions([
|
||||
EditAction::make(),
|
||||
])
|
||||
->toolbarActions([
|
||||
BulkActionGroup::make([
|
||||
DeleteBulkAction::make(),
|
||||
]),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -7,9 +7,11 @@ use App\Filament\Resources\Providers\Pages\ListProviders;
|
||||
use App\Filament\Resources\Providers\Schemas\ProviderForm;
|
||||
use App\Filament\Resources\Providers\Tables\ProvidersTable;
|
||||
use App\Models\Provider;
|
||||
use BackedEnum;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Schemas\Schema;
|
||||
use Filament\Tables\Table;
|
||||
use UnitEnum;
|
||||
|
||||
class ProviderResource extends Resource
|
||||
{
|
||||
@@ -17,13 +19,13 @@ class ProviderResource extends Resource
|
||||
|
||||
protected static ?int $navigationSort = 23;
|
||||
|
||||
protected static string|\BackedEnum|null $navigationIcon = 'lucide-arrow-down-up';
|
||||
protected static string|BackedEnum|null $navigationIcon = 'lucide-arrow-down-up';
|
||||
|
||||
protected static ?string $recordTitleAttribute = 'name';
|
||||
|
||||
protected static ?string $cluster = AdministratorCluster::class;
|
||||
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Grapper';
|
||||
protected static string|UnitEnum|null $navigationGroup = 'Grapper';
|
||||
|
||||
public static function canViewAny(): bool
|
||||
{
|
||||
|
||||
@@ -26,7 +26,7 @@ class SportResource extends Resource
|
||||
|
||||
protected static ?string $cluster = AdministratorCluster::class;
|
||||
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Administration';
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Static Data';
|
||||
|
||||
public static function canViewAny(): bool
|
||||
{
|
||||
|
||||
@@ -4,15 +4,20 @@ namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Liga extends Model
|
||||
class CompetitionGroup extends Model
|
||||
{
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'txodds_id',
|
||||
'sport_id',
|
||||
'country_id',
|
||||
'txodds_id',
|
||||
];
|
||||
|
||||
public function sport()
|
||||
{
|
||||
return $this->belongsTo(Sport::class);
|
||||
}
|
||||
|
||||
public function country()
|
||||
{
|
||||
return $this->belongsTo(Country::class);
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class CompetitionGroupFilter extends Model
|
||||
{
|
||||
protected $fillable = [
|
||||
'competition_group_id',
|
||||
'bkm_competition_group_id',
|
||||
'bookmaker_id',
|
||||
'name',
|
||||
];
|
||||
|
||||
public function competition_group()
|
||||
{
|
||||
return $this->belongsTo(CompetitionGroup::class);
|
||||
}
|
||||
|
||||
public function bookmaker()
|
||||
{
|
||||
return $this->belongsTo(Bookmaker::class);
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,12 @@ class Element extends Model
|
||||
{
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'sport_id',
|
||||
'txodds_id',
|
||||
'betsapi_id',
|
||||
'mag_id',
|
||||
'log_id',
|
||||
'sport_id',
|
||||
];
|
||||
|
||||
public function sport()
|
||||
{
|
||||
return $this->belongsTo(Sport::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ElementFilter extends Model
|
||||
{
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'element_id',
|
||||
'bkm_element_id',
|
||||
'bookmaker_id',
|
||||
];
|
||||
|
||||
public function element()
|
||||
{
|
||||
return $this->belongsTo(Element::class);
|
||||
}
|
||||
|
||||
public function bookmaker()
|
||||
{
|
||||
return $this->belongsTo(Bookmaker::class);
|
||||
}
|
||||
}
|
||||
+14
-12
@@ -10,41 +10,43 @@ class Event extends Model
|
||||
'starttime',
|
||||
'sport_id',
|
||||
'country_id',
|
||||
'liga_id',
|
||||
'group_id',
|
||||
'competition_group_id',
|
||||
'home_id',
|
||||
'away_id',
|
||||
'provider_id',
|
||||
'txodds_id',
|
||||
'provider_id',
|
||||
'betaid_id',
|
||||
'betradar_id',
|
||||
'magnig_id',
|
||||
'magken_id',
|
||||
'lognig_id',
|
||||
'logcol_id',
|
||||
];
|
||||
|
||||
public function sport()
|
||||
{
|
||||
return $this->belongsTo(Sport::class, 'sport_id', 'id');
|
||||
return $this->belongsTo(Sport::class);
|
||||
}
|
||||
|
||||
public function country()
|
||||
{
|
||||
return $this->belongsTo(Country::class);
|
||||
return $this->belongsTo(Country::class, 'country_id', 'txodds_id');
|
||||
}
|
||||
|
||||
public function liga()
|
||||
public function group()
|
||||
{
|
||||
return $this->belongsTo(Liga::class);
|
||||
return $this->hasOne(Group::class, 'txodds_id', 'group_id');
|
||||
}
|
||||
|
||||
public function competition_group()
|
||||
{
|
||||
return $this->hasOne(CompetitionGroup::class, 'txodds_id', 'competition_group_id');
|
||||
}
|
||||
|
||||
public function home()
|
||||
{
|
||||
return $this->belongsTo(Element::class);
|
||||
return $this->hasOne(Element::class, 'txodds_id', 'home_id');
|
||||
}
|
||||
|
||||
public function away()
|
||||
{
|
||||
return $this->belongsTo(Element::class);
|
||||
return $this->hasOne(Element::class, 'txodds_id', 'away_id');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class EventBookmaker extends Model
|
||||
{
|
||||
protected $fillable = [
|
||||
'event_id',
|
||||
'bookmaker_id',
|
||||
'bmoid',
|
||||
'send_status',
|
||||
'last_check_at',
|
||||
];
|
||||
|
||||
public function event()
|
||||
{
|
||||
return $this->belongsTo(Event::class);
|
||||
}
|
||||
|
||||
public function bookmaker()
|
||||
{
|
||||
return $this->belongsTo(Bookmaker::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Group extends Model
|
||||
{
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'txodds_id',
|
||||
'competition_group_id',
|
||||
'sport_id',
|
||||
'country_id',
|
||||
];
|
||||
|
||||
public function country()
|
||||
{
|
||||
return $this->belongsTo(Country::class);
|
||||
}
|
||||
|
||||
public function sport()
|
||||
{
|
||||
return $this->belongsTo(Sport::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class GroupFilter extends Model
|
||||
{
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'group_id',
|
||||
'bkm_group_id',
|
||||
'bookmaker_id',
|
||||
];
|
||||
|
||||
public function group()
|
||||
{
|
||||
return $this->belongsTo(Group::class);
|
||||
}
|
||||
|
||||
public function bookmaker()
|
||||
{
|
||||
return $this->belongsTo(Bookmaker::class);
|
||||
}
|
||||
}
|
||||
@@ -14,11 +14,11 @@ class Odds2way extends Model
|
||||
'sport_id',
|
||||
'bookmaker_id',
|
||||
'provider_id',
|
||||
'home',
|
||||
'away',
|
||||
'h2w',
|
||||
'a2w',
|
||||
'margin',
|
||||
'flag',
|
||||
'check',
|
||||
'nuh_check',
|
||||
'add_time',
|
||||
'updated_at',
|
||||
];
|
||||
|
||||
@@ -14,12 +14,12 @@ class Odds3way extends Model
|
||||
'sport_id',
|
||||
'bookmaker_id',
|
||||
'provider_id',
|
||||
'home',
|
||||
'draw',
|
||||
'away',
|
||||
'h3w',
|
||||
'd3w',
|
||||
'a3w',
|
||||
'margin',
|
||||
'flag',
|
||||
'check',
|
||||
'nuh_check',
|
||||
'add_time',
|
||||
'updated_at',
|
||||
];
|
||||
|
||||
@@ -14,11 +14,12 @@ class OddsDc extends Model
|
||||
'sport_id',
|
||||
'bookmaker_id',
|
||||
'provider_id',
|
||||
'dnb1',
|
||||
'dnb2',
|
||||
'dc1x',
|
||||
'dc12',
|
||||
'dc2x',
|
||||
'margin',
|
||||
'flag',
|
||||
'check',
|
||||
'nuh_check',
|
||||
'add_time',
|
||||
'updated_at',
|
||||
];
|
||||
|
||||
@@ -18,7 +18,7 @@ class OddsDnb extends Model
|
||||
'dnb2',
|
||||
'margin',
|
||||
'flag',
|
||||
'check',
|
||||
'nuh_check',
|
||||
'add_time',
|
||||
'updated_at',
|
||||
];
|
||||
|
||||
@@ -18,7 +18,7 @@ class OddsGgng extends Model
|
||||
'ng',
|
||||
'margin',
|
||||
'flag',
|
||||
'check',
|
||||
'nuh_check',
|
||||
'add_time',
|
||||
'updated_at',
|
||||
];
|
||||
|
||||
@@ -19,7 +19,7 @@ class OddsHandicap extends Model
|
||||
'handicap',
|
||||
'margin',
|
||||
'flag',
|
||||
'check',
|
||||
'nuh_check',
|
||||
'add_time',
|
||||
'updated_at',
|
||||
];
|
||||
|
||||
@@ -16,7 +16,7 @@ class OddsQualify extends Model
|
||||
'atq',
|
||||
'margin',
|
||||
'flag',
|
||||
'check',
|
||||
'nuh_check',
|
||||
'add_time',
|
||||
'updated_at',
|
||||
];
|
||||
|
||||
@@ -19,7 +19,7 @@ class OddsTotal extends Model
|
||||
'spread',
|
||||
'margin',
|
||||
'flag',
|
||||
'check',
|
||||
'nuh_check',
|
||||
'add_time',
|
||||
'updated_at',
|
||||
];
|
||||
|
||||
@@ -10,8 +10,6 @@ class Supervisorctl
|
||||
|
||||
public static $code = '';
|
||||
|
||||
public static $events = 0;
|
||||
|
||||
public static function start(&$options)
|
||||
{
|
||||
$debug = $options['d'] ?? 0;
|
||||
@@ -49,7 +47,7 @@ class Supervisorctl
|
||||
{
|
||||
$processend = microtime(true);
|
||||
$runtime = round(($processend - self::$starttime) / 60, 3);
|
||||
Supervisor::where('id', self::$code)->update(['runtime' => $runtime, 'events' => self::$events]);
|
||||
Supervisor::where('id', self::$code)->update(['runtime' => $runtime]);
|
||||
if ($options['d']) {
|
||||
Notice::note('spervisor time: '.$runtime.' min', 'g');
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user