Move category/category_name product::class methods into __get(), no functional changes

This commit is contained in:
2025-05-22 12:01:31 +10:00
parent 04ae35b1dd
commit 5ef1a27a64
23 changed files with 63 additions and 85 deletions

View File

@@ -77,6 +77,10 @@ class Product extends Model implements IDs
return match ($key) {
'base_cost' => round($this->supplied->base_cost,2)*Invoice::billing_change($this->type->billing_interval,$this->billing_interval) ?: 0,
'category' => $this->supplied->category,
'category_lc' => strtolower($this->category),
'category_name' => $this->supplied->category_name,
default => parent::__get($key),
};
}
@@ -181,29 +185,6 @@ class Product extends Model implements IDs
return max($this->price_recur_default,$this->type->billing_interval);
}
/**
* This will return the category of the product (eg: domain, webhosting, etc) which is the basis for all
* other logic of these types.
*
* @return string
*/
public function getCategoryAttribute(): string
{
return strtolower(Str::studly($this->category_name));
}
/**
* Return the type of service is provided. eg: Broadband, Phone.
* This will return the category of the product (eg: domain, hosting, etc) which is the basis for all
* other logic of these types.
*
* @return string
*/
public function getCategoryNameAttribute(): string
{
return $this->supplied->category_name;
}
/**
* How long must this product be purchased for as a service.
*

View File

@@ -49,8 +49,8 @@ class Supplier extends Model
if ($so) {
// If we have a connections configuration for that supplier, then build the child relationships
if (Arr::get($so->detail->connections,$class->category)) {
$result->put($class->category,(object)[
if (Arr::get($so->detail->connections,$class->category_lc)) {
$result->put($class->category_lc,(object)[
'type' => $class->category_name,
'items' => $class->where('supplier_detail_id',$so->detail->id),
]);
@@ -63,13 +63,13 @@ class Supplier extends Model
$o->where('supplier_detail_id',$so->detail->id);
if ($o->count())
$result->put($class->category,(object)[
$result->put($class->category_lc,(object)[
'type' => $class->category_name,
'items' => $class->where('supplier_detail_id',$so->detail->id),
]);
} else {
$result->put($class->category_name,$class);
$result->put($class->category_lc,$class);
}
}

View File

@@ -10,10 +10,30 @@ use Leenooks\Traits\ScopeActive;
use App\Models\{Invoice, Supplier, SupplierDetail};
use App\Traits\SiteID;
/**
* Class Supplier\Type
*
* Attributes for supplier types:
* + category : This will return the category of the product (eg: domain, hosting, etc), based on the class, which is the basis for all other logic of these types.
* + category_name : A friendly name that can override category
*/
abstract class Type extends Model
{
use SiteID,ScopeActive;
protected const category_name = NULL;
public function __get($key): mixed
{
return match ($key) {
'category' => (new \ReflectionClass($this))->getShortName(),
'category_name' => static::category_name ?: $this->category,
default => parent::__get($key),
};
}
/* RELATIONS */
/**
@@ -33,27 +53,6 @@ abstract class Type extends Model
/* ATTRIBUTES */
/**
* This will return the category of the product (eg: domain, hosting, etc) which is the basis for all
* other logic of these types.
*
* @return string
*/
final public function getCategoryAttribute(): string
{
return strtolower((new \ReflectionClass($this))->getShortName());
}
/**
* Return a friendly name for this product, used for display
*
* @return string
*/
final public function getCategoryNameAttribute(): string
{
return static::category_name;
}
final public function getContractTermAttribute(?int $val): int
{
return $val ?: 1;