HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/hi.naniguide.com/app/Http/Controllers/Admin/VatTaxController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Setting;
use Illuminate\Http\Request;

class VatTaxController extends Controller
{
    public function index(Request $request)
    {
        return view('admin.vat-tax.index', [
            'vat_enabled' => (bool) Setting::get('vat_enabled', false),
            'vat_rate' => Setting::get('vat_rate', null),
            'vat_number' => Setting::get('vat_number', null),
            'tax_notes' => Setting::get('tax_notes', null),
            'us_sales_tax_rates' => Setting::get('us_sales_tax_rates', []),
        ]);
    }

    public function update(Request $request)
    {
        $validated = $request->validate([
            'vat_enabled' => ['nullable', 'boolean'],
            'vat_rate' => ['nullable', 'numeric', 'min:0'],
            'vat_number' => ['nullable', 'string', 'max:255'],
            'tax_notes' => ['nullable', 'string'],
            'us_sales_tax_rates' => ['nullable', 'string'],
        ]);

        Setting::set('vat_enabled', $request->boolean('vat_enabled'), 'tax', 'boolean');
        Setting::set('vat_rate', $validated['vat_rate'] ?? null, 'tax', 'string');
        Setting::set('vat_number', $validated['vat_number'] ?? null, 'tax', 'string');
        Setting::set('tax_notes', $validated['tax_notes'] ?? null, 'tax', 'string');

        $salesTaxRates = [];
        $raw = trim((string) ($validated['us_sales_tax_rates'] ?? ''));
        if ($raw !== '') {
            foreach (preg_split('/\r\n|\r|\n/', $raw) as $line) {
                $line = trim((string) $line);
                if ($line === '' || !str_contains($line, '=')) {
                    continue;
                }
                [$state, $rate] = array_pad(explode('=', $line, 2), 2, null);
                $state = strtoupper(trim((string) $state));
                $rate = trim((string) $rate);
                if ($state === '' || !is_numeric($rate)) {
                    continue;
                }
                $salesTaxRates[$state] = (float) $rate;
            }
        }

        Setting::set('us_sales_tax_rates', $salesTaxRates, 'tax', 'array');

        return redirect()
            ->route('admin.vat-tax.index')
            ->with('success', __('Vat/Tax settings updated.'));
    }
}