<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\GeneralSetting;
use Illuminate\Support\Facades\Gate;
use Symfony\Component\HttpFoundation\Response;

class GeneralSettingsController extends Controller
{
    /**
     * Display the general settings form.
     */
    public function edit()
    {
        abort_if(Gate::denies('general_settings_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        // $settings = GeneralSetting::all()->pluck('value', 'key');
        $settings = GeneralSetting::select('*')->get();
        
        return view('admin.general_settings.form', compact('settings'));
    }

    /**
     * Update the general settings.
     */
    public function update(Request $request)
    {
        $data = $request->except('_token', 'new_key', 'new_value', 'type');

        foreach ($data as $key => $value) {
            // GeneralSetting::updateOrCreate(['key' => $key], ['value' => $value, 'type' => $request->type[$key] ?? 'text']);

            // If value is array → convert to JSON
            if (is_array($value)) {
                $value = json_encode($value);
            }

            GeneralSetting::updateOrCreate(
                ['key' => $key],
                [
                    'value' => $value
                ]
            );
        }
    
        if ($request->new_key && $request->new_value) {
            GeneralSetting::updateOrCreate(['key' => $request->new_key], ['value' => $request->new_value, 'type' => $request->type]);
        }

        return redirect()->back()->with('success', __('global.general_settings_update'));
    }
}