MOON
Server: Apache
System: Linux server.royaltuning.hu 4.18.0-425.13.1.el8_7.x86_64 #1 SMP Tue Feb 21 04:20:52 EST 2023 x86_64
User: royaltuning (1001)
PHP: 8.2.32
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //var/www/html/Modules/Option/Entities/OptionValue.php
<?php

namespace Modules\Option\Entities;

use Modules\Support\Money;
use Modules\Support\Eloquent\Model;
use Modules\Product\Entities\Product;
use Modules\Support\Eloquent\Translatable;

class OptionValue extends Model
{
    use Translatable;

    /**
     * The relations to eager load on every query.
     *
     * @var array
     */
    protected $with = ['translations'];

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['price', 'price_type', 'position'];

    /**
     * The attributes that are translatable.
     *
     * @var array
     */
    protected $translatedAttributes = ['label'];

    public function getPriceAttribute($price)
    {
        if ($this->priceIsPercent()) {
            return $price;
        }

        return Money::inDefaultCurrency($price);
    }

    public function priceIsPercent()
    {
        return $this->price_type === 'percent';
    }

    public function priceIsFixed()
    {
        return $this->price_type === 'fixed';
    }

    public function priceForProduct(Product $product)
    {
        if ($this->priceIsFixed()) {
            return $this->price;
        }

        return $this->getPercentOf($product->selling_price->amount());
    }

    private function getPercentOf($productPrice)
    {
        return Money::inDefaultCurrency(($this->price / 100) * $productPrice);
    }

    public function formattedPriceForProduct(Product $product, $forSelectOption = false)
    {
        $price = $this->priceForProduct($product);

        if ($price->isZero()) {
            return;
        }

        $formattedPrice = $price->convertToCurrentCurrency()->format();

        if ($forSelectOption) {
            return "+ {$formattedPrice}";
        }

        return "<span class='extra-price'>+ {$formattedPrice}</span>";
    }
}