37 lines
1.4 KiB
PHP
Executable File
37 lines
1.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\Licensing\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Concerns\HasUuids;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
|
|
class License extends Model
|
|
{
|
|
use HasUuids;
|
|
|
|
public $incrementing = false;
|
|
|
|
protected $keyType = 'string';
|
|
|
|
protected $fillable = ['license_product_id', 'license_key_hash', 'license_key_last4', 'customer_name', 'customer_email', 'edition', 'activation_limit', 'max_major_version', 'expires_at', 'revoked_at', 'revoke_reason', 'payment_provider', 'external_order_id', 'external_customer_id', 'external_subscription_id', 'external_price_id', 'subscription_status', 'current_period_ends_at', 'cancel_scheduled_at'];
|
|
|
|
protected $casts = ['expires_at' => 'datetime', 'revoked_at' => 'datetime', 'activation_limit' => 'integer', 'max_major_version' => 'integer', 'current_period_ends_at' => 'datetime', 'cancel_scheduled_at' => 'datetime'];
|
|
|
|
public function product(): BelongsTo
|
|
{
|
|
return $this->belongsTo(LicenseProduct::class, 'license_product_id');
|
|
}
|
|
|
|
public function activations(): HasMany
|
|
{
|
|
return $this->hasMany(LicenseActivation::class);
|
|
}
|
|
|
|
public function getIsUsableAttribute(): bool
|
|
{
|
|
return $this->revoked_at === null && ($this->expires_at === null || $this->expires_at->isFuture());
|
|
}
|
|
}
|