12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- namespace App\Models;
- use Hidehalo\Nanoid\Client;
- use Illuminate\Database\Eloquent\Model;
- use NumberFormatter;
- use Spatie\Activitylog\Traits\LogsActivity;
- use App\Models\Configuration;
- class CreditProduct extends Model
- {
- use LogsActivity;
- /**
- * @var bool
- */
- public $incrementing = false;
- /**
- * @var string[]
- */
- protected $fillable = [
- "type",
- "price",
- "description",
- "display",
- "currency_code",
- "quantity",
- "disabled",
- ];
- public static function boot()
- {
- parent::boot();
- static::creating(function (CreditProduct $creditProduct) {
- $client = new Client();
- $creditProduct->{$creditProduct->getKeyName()} = $client->generateId($size = 21);
- });
- }
- /**
- * @param mixed $value
- * @param string $locale
- *
- * @return float
- */
- public function formatToCurrency($value,$locale = 'en_US')
- {
- $formatter = new NumberFormatter($locale, NumberFormatter::CURRENCY);
- return $formatter->formatCurrency($value, $this->currency_code);
- }
- /**
- * @description Returns the tax in % taken from the Configuration
- *
- * @return int
- */
- public function getTaxPercent()
- {
- $tax = Configuration::getValueByKey("SALES_TAX");
- return $tax < 0 ? 0 : $tax;
- }
- /**
- * @description Returns the tax as Number
- *
- * @return float
- */
- public function getTaxValue()
- {
- return $this->price*$this->getTaxPercent()/100;
- }
- /**
- * @description Returns the full price of a Product including tax
- *
- * @return float
- */
- public function getTotalPrice()
- {
- return $this->price+($this->getTaxValue());
- }
- }
|