HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
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,
        ]);
    }
}