<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Setting;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

class SettingsController extends Controller
{
    protected array $settingKeys = [
        'site_name', 'site_tagline', 'site_email', 'site_phone', 'site_address',
        'site_logo',
        'facebook_url', 'youtube_url', 'instagram_url',
        'facebook_pixel_id', 'conversions_api_token', 'conversions_api_test_code',
        'google_analytics_id', 'google_tag_manager_id',
        'footer_text', 'meta_description', 'meta_keywords',
        'shipping_inside_dhaka', 'shipping_outside_dhaka',
        'bkash_number', 'rocket_number', 'nagad_number',
        'bkash_instruction', 'rocket_instruction', 'nagad_instruction',
    ];

    public function index()
    {
        $settings = [];
        foreach ($this->settingKeys as $key) {
            $settings[$key] = Setting::get($key, '');
        }
        return view('admin.settings.index', compact('settings'));
    }

    public function update(Request $request)
    {
        $request->validate([
            'site_name'              => 'required|string|max:255',
            'site_logo'              => 'nullable|image|max:2048',
            'facebook_pixel_id'      => 'nullable|string|max:100',
            'google_analytics_id'    => 'nullable|string|max:100',
            'google_tag_manager_id'  => 'nullable|string|max:100',
            'shipping_inside_dhaka'  => 'nullable|integer|min:0',
            'shipping_outside_dhaka' => 'nullable|integer|min:0',
        ]);

        foreach ($this->settingKeys as $key) {
            if ($key === 'site_logo') continue;
            Setting::set($key, $request->input($key, ''));
        }

        if ($request->hasFile('site_logo')) {
            $old = Setting::get('site_logo');
            if ($old) Storage::disk('public')->delete($old);
            $path = $request->file('site_logo')->store('settings', 'public');
            Setting::set('site_logo', $path);
        }

        return back()->with('success', 'Settings saved successfully.');
    }
}
