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/be.naniguide.com/database/migrations/2024_02_15_051112_update_sending_credits.php
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class UpdateSendingCredits extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {

        $customers = \Acelle\Model\Customer::all();

        foreach($customers as $customer) {
            $this->updateCredits($customer);
        }
    }

    public function updateCredits($customer)
    {
        $subscription = $customer->getCurrentActiveSubscription();

        if (!$subscription) {
            return;
        }

        if (config('custom.distributed_worker')) {
            $key = 'subscription-send-email-rate-tracking-log-'.$subscription->uid;
            $tracker = new \Acelle\Library\InMemoryRateTracker($key);
        } else {
            // Get the limits from plan
            $file = storage_path('app/quota/subscription-send-email-rate-tracking-log-'.$subscription->uid);
            $tracker = new \Acelle\Library\RateTracker($file);
        }

        $timeAmount = $subscription->planGeneral->frequency_amount;
        $timeUnit = $subscription->planGeneral->frequency_unit;
        $countFrom = now()->subtract("{$timeAmount} {$timeUnit}");
        $used = (int)$tracker->getCreditsUsed($countFrom);

        $creditTracker = $subscription->getSendEmailCreditTracker();
        $credits = (int)$subscription->planGeneral->getOption('email_max');
        $remaining = $credits - $used;

        // echo "*** {$timeAmount} {$timeUnit}: {$used} / {$remaining} / {$credits}";

        if ($credits == -1) {
            $creditTracker->setCredits($credits); // unlimited credit, just fine
        } elseif ($remaining > 0) {
            $creditTracker->setCredits($remaining);
        } else {
            $creditTracker->setCredits(0);
        }
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}