File: /home/xedaptot/ai.naniguide.com/app/Jobs/ExportSubscribersJob.php
<?php
namespace App\Jobs;
use App\Library\Traits\Trackable;
use Exception;
use Illuminate\Support\Facades\Log;
class ExportSubscribersJob extends Base
{
use Trackable;
public $timeout = 3600;
protected $mailList;
protected $segment;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($mailList, $segment = null)
{
$this->mailList = $mailList;
$this->segment = $segment;
$this->mailList->customer->setUserDbConnection();
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
\App::setLocale($this->mailList->customer->language->code);
\Carbon\Carbon::setLocale($this->mailList->customer->language->code);
$this->monitor->setJsonData([
'percentage' => 0,
'total' => 0,
'processed' => 0,
'failed' => 0,
'message' => trans('messages.list.export.queued.msg'),
'filepath' => $this->mailList->getExportFilePath(),
]);
$this->mailList->export(function ($processed, $total, $failed, $message) {
$percentage = ($total && $processed) ? (int)($processed * 100 / $total) : 0;
if ($total === 0) {
$percentage = 100;
}
$this->monitor->updateJsonData([
'percentage' => $percentage,
'total' => $total,
'processed' => $processed,
'failed' => $failed,
'message' => $message,
]);
}, $this->segment);
}
public function failed(\Throwable $exception): void
{
Log::error('[JOB_FAILED] ' . static::class, [
'exception' => $exception->getMessage(),
'file' => $exception->getFile(),
'line' => $exception->getLine(),
'list_uid' => $this->mailList->uid ?? null,
]);
}
}