HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/wingssprayer.komma.pro/app/Vat/VatController.php
<?php
namespace App\Vat;

use Komma\KMS\Core\SectionController;
use App\Vat\Models\Rate;
use App\Vat\Requests\CalculateVatRequest;
use App\Vat\Resources\VatCalculationResource;

final class VatController extends SectionController
{
    protected $slug = "vatrates";
    protected $classModelName = Rate::class;

    /**
     * RateController constructor.
     *
     * @param VatSection $section
     */
    function __construct(VatSection $section)
    {
        parent::__construct($section);
    }

    /**
     * Calculates the vat rate amount using a price.
     * For ajax requests only. Used in product section
     *
     * @param CalculateVatRequest $request
     * @return VatCalculationResource
     */
    public function calculateVatRateAmount(CalculateVatRequest $request)
    {
        /** @var VatServiceInterface $rateService */
        $rateService = app(VatServiceInterface::class);
        $price = $request->get('price');
        $isIncludingVat = $request->get('isIncludingVat');

        if(!$isIncludingVat) {
            $vatAmount = $rateService->calculateVatRateAmountFromExAmount($price);
            $priceIncVat = $rateService->calculateIncVatRatePrice($price);
            $priceExVat = $price;
        } else {
            $vatAmount = $rateService->calculateVatRateAmountFromIncAmount($price);
            $priceIncVat = $price;
            $priceExVat = $rateService->calculateExVatRatePrice($price);
        }
        $vatPercentage = $rateService->getVatRate();

        $calculationResource = (new VatCalculationResource())
            ->setPriceExVat($priceExVat)
            ->setPriceIncVat($priceIncVat)
            ->setVatAmount($vatAmount)
            ->setVatPercentage($vatPercentage->percentage);

        return $calculationResource;
    }
}