2022-02-01 05:40:46 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Models\Supplier;
|
|
|
|
|
2022-08-10 05:18:56 +00:00
|
|
|
use Illuminate\Support\Collection;
|
|
|
|
|
2022-02-01 05:40:46 +00:00
|
|
|
use App\Models\Product\Domain as ProductDomain;
|
|
|
|
use App\Models\TLD;
|
|
|
|
|
2023-05-05 05:48:24 +00:00
|
|
|
final class Domain extends Type
|
2022-02-01 05:40:46 +00:00
|
|
|
{
|
2023-05-05 05:48:24 +00:00
|
|
|
protected const category_name = 'Domain';
|
2022-06-30 13:51:20 +00:00
|
|
|
|
2022-02-01 05:40:46 +00:00
|
|
|
protected $table = 'supplier_domain';
|
|
|
|
|
2023-05-05 05:48:24 +00:00
|
|
|
// The model of the product that is supplied by this model
|
|
|
|
const ProductModel = ProductDomain::class;
|
2022-02-01 05:40:46 +00:00
|
|
|
|
2023-05-05 05:48:24 +00:00
|
|
|
/* INTERFACES */
|
2022-02-01 05:40:46 +00:00
|
|
|
|
|
|
|
public function getNameAttribute(): string
|
|
|
|
{
|
|
|
|
return sprintf('%s: %s',$this->product_id,$this->tld->name);
|
|
|
|
}
|
|
|
|
|
2022-08-10 05:18:56 +00:00
|
|
|
/* STATIC */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Determine the owner of the name servers used for the domain
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static function nameserver_name(Collection $nameservers): string
|
|
|
|
{
|
|
|
|
foreach (config('nameservers') as $key => $ns) {
|
|
|
|
if ($nameservers->diff($ns)->count() < count($ns))
|
|
|
|
return $key;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 'custom';
|
|
|
|
}
|
|
|
|
|
2022-02-01 05:40:46 +00:00
|
|
|
/* RELATIONS */
|
|
|
|
|
|
|
|
public function tld()
|
|
|
|
{
|
|
|
|
return $this->belongsTo(TLD::class);
|
|
|
|
}
|
|
|
|
}
|