121 lines
4.2 KiB
PHP
121 lines
4.2 KiB
PHP
<?php
|
|
/**
|
|
* Invoice Ninja (https://invoiceninja.com).
|
|
*
|
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
|
*
|
|
* @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
|
|
*
|
|
* @license https://www.elastic.co/licensing/elastic-license
|
|
*/
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Casts\AsTaxEntityCollection;
|
|
use App\DataMapper\EInvoice\TaxEntity;
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
|
|
|
|
/**
|
|
* App\Models\License
|
|
*
|
|
* @property int $id
|
|
* @property \Carbon\Carbon $created_at
|
|
* @property int|null $updated_at
|
|
* @property int|null $deleted_at
|
|
* @property string|null $first_name
|
|
* @property string|null $last_name
|
|
* @property string|null $email
|
|
* @property string|null $license_key
|
|
* @property int|null $is_claimed
|
|
* @property string|null $transaction_reference
|
|
* @property int|null $product_id
|
|
* @property int|null $recurring_invoice_id
|
|
* @property int|null $e_invoice_quota
|
|
* @property bool $is_flagged
|
|
* @property array|null $entities
|
|
* @property-read \App\Models\RecurringInvoice $recurring_invoice
|
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\EInvoiceToken> $e_invoicing_tokens
|
|
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
|
|
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License newModelQuery()
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License newQuery()
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License onlyTrashed()
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License query()
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereCreatedAt($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereDeletedAt($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereEmail($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereFirstName($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereId($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereIsClaimed($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereLastName($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereLicenseKey($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereProductId($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereRecurringInvoiceId($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereTransactionReference($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License whereUpdatedAt($value)
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License withTrashed()
|
|
* @method static \Illuminate\Database\Eloquent\Builder|License withoutTrashed()
|
|
* @mixin \Eloquent
|
|
*/
|
|
class License extends StaticModel
|
|
{
|
|
use SoftDeletes;
|
|
|
|
protected $casts = [
|
|
'created_at' => 'date',
|
|
'entities' => AsTaxEntityCollection::class,
|
|
];
|
|
|
|
public function expiry(): string
|
|
{
|
|
return $this->created_at->addYear()->format('Y-m-d');
|
|
}
|
|
|
|
public function recurring_invoice()
|
|
{
|
|
return $this->belongsTo(RecurringInvoice::class);
|
|
}
|
|
|
|
public function url()
|
|
{
|
|
$contact = $this->recurring_invoice->client->contacts()->where('email', $this->email)->first();
|
|
}
|
|
|
|
public function e_invoicing_tokens()
|
|
{
|
|
return $this->hasMany(EInvoicingToken::class, 'license_key', 'license_key');
|
|
}
|
|
|
|
public function addEntity(TaxEntity $entity)
|
|
{
|
|
$entities = $this->entities;
|
|
|
|
if (is_array($entities)) {
|
|
$entities[] = $entity;
|
|
} else {
|
|
$entities = [$entity];
|
|
}
|
|
|
|
$this->entities = $entities;
|
|
|
|
$this->save();
|
|
|
|
}
|
|
|
|
public function removeEntity(TaxEntity $entity)
|
|
{
|
|
|
|
if (!is_array($this->entities)) {
|
|
return;
|
|
}
|
|
|
|
$this->entities = array_filter($this->entities, function ($existingEntity) use ($entity) {
|
|
return $existingEntity->legal_entity_id !== $entity->legal_entity_id;
|
|
});
|
|
|
|
$this->save();
|
|
|
|
}
|
|
}
|