Rework address roles, making Address::role optional, rework determining uplink/downlinks/parent/children

This commit is contained in:
2024-05-09 21:22:30 +10:00
parent 2765a27db8
commit 23159d19d5
23 changed files with 667 additions and 421 deletions

View File

@@ -194,7 +194,7 @@ class System extends Model
*/
public function full_name(Address $o): string
{
switch ($o->attributes['role']) {
switch ($o->role_id) {
case Address::NODE_ZC;
return sprintf('ZC-%s-%05d',$o->zone->domain->name,$o->zone->zone_id);
@@ -205,7 +205,7 @@ class System extends Model
return sprintf('NC-%s-%05d',$o->zone->domain->name,$o->host_id);
case Address::NODE_HC;
case Address::NODE_ACTIVE;
case Address::NODE_NN;
default:
return $this->name;
}
@@ -218,9 +218,8 @@ class System extends Model
* @param Zone $o
* @param int $type
* @return Collection
* @todo This doesnt return sorted addresses, so it is possible that a node address is returned first, before a NC/HC, etc
*/
public function match(Zone $o,int $type=(Address::NODE_NC|Address::NODE_HC|Address::NODE_ACTIVE|Address::NODE_PVT|Address::NODE_POINT)): Collection
public function match(Zone $o,int $type=(Address::NODE_NC|Address::NODE_HC|Address::NODE_NN|Address::NODE_POINT)): Collection
{
$akas = $this->akas
->where(function($item) use($o) {
@@ -228,9 +227,7 @@ class System extends Model
});
return ($akas->count() > 1)
? $akas->filter(function($item) use ($type) {
return $item->role & $type;
})
? $akas->filter(function($item) use ($type) { return $item->role_id & $type;})
: $akas;
}
@@ -241,7 +238,7 @@ class System extends Model
* @param int $type
* @return Collection
*/
public function inMyZones(Collection $addresses,int $type=(Address::NODE_HC|Address::NODE_ACTIVE|Address::NODE_PVT|Address::NODE_POINT)): Collection
public function inMyZones(Collection $addresses,int $type=(Address::NODE_HC|Address::NODE_NN|Address::NODE_POINT)): Collection
{
$myzones = $this->addresses->pluck('zone_id')->unique();