65 lines
1.4 KiB
PHP
65 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Models\Service;
|
|
|
|
use Carbon\Carbon;
|
|
|
|
use App\Models\Base\ServiceType;
|
|
use App\Models\{Account, DomainRegistrar, DomainTld, Service, TLD};
|
|
use App\Interfaces\ServiceItem;
|
|
use App\Traits\{NextKey,ScopeServiceActive,ScopeServiceUserAuthorised};
|
|
|
|
/**
|
|
* Class Email (Service)
|
|
* Services that email hostings
|
|
*
|
|
* Attributes for services:
|
|
* + service_description : Description as shown in a Service Context
|
|
* + service_expire : The date the service expires
|
|
* + service_name : Name as shown in a Service Context
|
|
*
|
|
* @package App\Models\Service
|
|
*/
|
|
class Email extends ServiceType implements ServiceItem
|
|
{
|
|
use ScopeServiceActive,ScopeServiceUserAuthorised;
|
|
|
|
protected $dates = ['expire_at'];
|
|
protected $table = 'service_emails';
|
|
|
|
/* INTERFACES */
|
|
|
|
public function getServiceDescriptionAttribute(): string
|
|
{
|
|
// N/A
|
|
return 'Email Hosting';
|
|
}
|
|
|
|
public function getServiceExpireAttribute(): Carbon
|
|
{
|
|
return $this->expire_at ?: $this->service->next_invoice;
|
|
}
|
|
|
|
/**
|
|
* The name of the domain with its TLD
|
|
*
|
|
* @return string
|
|
* // @todo
|
|
*/
|
|
public function getServiceNameAttribute(): string
|
|
{
|
|
return strtoupper(sprintf('%s.%s',$this->domain_name,$this->tld->name));
|
|
}
|
|
|
|
public function inContract(): bool
|
|
{
|
|
return $this->expire_at && $this->expire_at->isFuture();
|
|
}
|
|
|
|
/* RELATIONS */
|
|
|
|
public function tld()
|
|
{
|
|
return $this->belongsTo(TLD::class);
|
|
}
|
|
} |