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/app/Library/Traits/HasUid.php
<?php

namespace Acelle\Library\Traits;

trait HasUid
{
    public static function boot()
    {
        parent::boot();

        static::creating(function ($item) {
            if (is_null($item->uid)) {
                $item->generateUid();
            }
        });

        static::saving(function ($item) {
            //
            if (static::class == \Acelle\Model\Subscription::class) {
                // Nếu trạng thái của subscription là ACTIVE mà customer đang có 1 subscription khách new|active thì throw exception
                if ($item->status == static::STATUS_ACTIVE &&
                    $item->customer->getNewOrActiveGeneralSubscription() &&
                    $item->customer->getNewOrActiveGeneralSubscription()->id != $item->id
                ) {
                    throw new \Exception(
                        'Subscription before save check failed: Customer đang có 1 subscription đang ' . $item->customer->getNewOrActiveGeneralSubscription()->status .
                        '. Saving ID ' . $item->id .
                        '. Current ID: ' . $item->customer->getNewOrActiveGeneralSubscription()->id
                    );
                }
            }
        });

    }

    public static function findByUid($uid)
    {
        return static::where('uid', '=', $uid)->first();
    }

    public function generateUid()
    {
        $this->uid = uniqid();
    }

    public function getUid(): ?string
    {
        return $this->uid;
    }
}