55 lines
1.5 KiB
PHP
55 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands\Grapper\TxOdds\Odds;
|
|
|
|
use App\Console\Commands\Nuh;
|
|
use App\Models\OddsDc;
|
|
use App\Utilities\Margin;
|
|
use PDOException;
|
|
|
|
class _Dc
|
|
{
|
|
public static function grap($odds, $offer)
|
|
{
|
|
$block_update = Nuh::$options['b'] ?? 0;
|
|
|
|
foreach ($offer as $value) {
|
|
$odds['dc1x'] = (float) $value->o1;
|
|
$odds['dc12'] = (float) $value->o2;
|
|
$odds['dcx2'] = (float) $value->o3;
|
|
}
|
|
$odds['margin'] = (float) Margin::calculate([$odds['dc1x'], $odds['dc12'], $odds['dcx2']], 1);
|
|
|
|
$res = OddsDc::where('event_id', $odds['event_id'])->where('bookmaker_id', $odds['bookmaker_id'])->first();
|
|
|
|
if (! $res) {
|
|
OddsDc::create($odds);
|
|
} elseif (! $block_update) {
|
|
$res->dc1x = $odds['dc1x'];
|
|
$res->dc12 = $odds['dc12'];
|
|
$res->dcx2 = $odds['dcx2'];
|
|
$res->flags = 1;
|
|
$res->margin = $odds['margin'];
|
|
|
|
$max_tries = 5;
|
|
$tries = 0;
|
|
do {
|
|
$retry = false;
|
|
try {
|
|
|
|
$res->save();
|
|
|
|
return $res;
|
|
} catch (PDOException $exc) {
|
|
if ($tries < $max_tries && $exc->errorInfo[0] == 40001 && $exc->errorInfo[1] == 1213) {
|
|
$retry = true;
|
|
sleep(1);
|
|
} else {
|
|
throw $exc;
|
|
}
|
|
}
|
|
} while ($retry);
|
|
}
|
|
}
|
|
}
|