51 lines
1.1 KiB
PHP
51 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Support;
|
|
|
|
/**
|
|
* Helper math
|
|
* @package App\Support
|
|
*/
|
|
class Math
|
|
{
|
|
/**
|
|
* Determine from the base rate, if we want to return the overridden rate
|
|
* or if the overridden rate is a percentage, then return that amount
|
|
* @param $base_rate
|
|
* @param $override_rate
|
|
* @return float|null
|
|
*/
|
|
public static function applyAmountOrPercent($base_rate, $override_rate = null): ?float
|
|
{
|
|
if (!$override_rate) {
|
|
return $base_rate;
|
|
}
|
|
|
|
# Not a percentage override
|
|
if (substr_count($override_rate, '%') === 0) {
|
|
return $override_rate;
|
|
}
|
|
|
|
return static::addPercent($base_rate, $override_rate);
|
|
}
|
|
|
|
/**
|
|
* Add/subtract a percentage to a number
|
|
* @param $number
|
|
* @param $percent
|
|
* @return float
|
|
*/
|
|
public static function addPercent($number, $percent): float
|
|
{
|
|
if(!is_numeric($number)) {
|
|
$number = (float) $number;
|
|
}
|
|
|
|
if(!is_numeric($percent)) {
|
|
$percent = (float) $percent;
|
|
}
|
|
|
|
return $number + ($number * ($percent/100));
|
|
}
|
|
}
|