File "CronController.php"
Full Path: /home/trinadezambia/public_html/gambling/app/Http/Controllers/CronController.php
File size: 3.26 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers;
use App\Constants\Status;
use App\Lib\CurlRequest;
use App\Models\CronJob;
use App\Models\CronJobLog;
use App\Models\GameLog;
use App\Models\Transaction;
use App\Models\User;
use Carbon\Carbon;
class CronController extends Controller
{
public function cron()
{
$general = gs();
$general->last_cron = now();
$general->save();
$crons = CronJob::with('schedule');
if (request()->alias) {
$crons->where('alias', request()->alias);
} else {
$crons->where('next_run', '<', now())->where('is_running', Status::YES);
}
$crons = $crons->get();
foreach ($crons as $cron) {
$cronLog = new CronJobLog();
$cronLog->cron_job_id = $cron->id;
$cronLog->start_at = now();
if ($cron->is_default) {
$controller = new $cron->action[0];
try {
$method = $cron->action[1];
$controller->$method();
} catch (\Exception $e) {
$cronLog->error = $e->getMessage();
}
} else {
try {
CurlRequest::curlContent($cron->url);
} catch (\Exception $e) {
$cronLog->error = $e->getMessage();
}
}
$cron->last_run = now();
$cron->next_run = now()->addSeconds((int) $cron->schedule->interval);
$cron->save();
$cronLog->end_at = $cron->last_run;
$startTime = Carbon::parse($cronLog->start_at);
$endTime = Carbon::parse($cronLog->end_at);
$diffInSeconds = $startTime->diffInSeconds($endTime);
$cronLog->duration = $diffInSeconds;
$cronLog->save();
}
if (request()->target == 'all') {
$notify[] = ['success', 'Cron executed successfully'];
return back()->withNotify($notify);
}
if (request()->alias) {
$notify[] = ['success', keyToTitle(request()->alias) . ' executed successfully'];
return back()->withNotify($notify);
}
}
public function incompleteGame()
{
$games = GameLog::where('status', Status::DISABLE)->get();
$general = gs();
$general->last_cron = now();
$general->save();
foreach ($games as $game) {
if ($game->created_at->addMinutes(2) > now()) {
continue;
}
$user = $game->user;
$user->balance += $game->invest;
$user->save();
$transaction = new Transaction();
$transaction->user_id = $user->id;
$transaction->amount = $game->invest;
$transaction->charge = 0;
$transaction->trx_type = '+';
$transaction->details = 'In-complete game invest return';
$transaction->remark = 'invest_return';
$transaction->trx = getTrx();
$transaction->post_balance = $user->balance;
$transaction->save();
$game->status = 2;
$game->save();
}
}
}