<?php

namespace App\Http\Controllers\Page;

use App\Http\Controllers\Controller;
use App\Models\Agency\Agency;

/**
 * Herkese açık şirket bilgileri sayfası.
 *
 * Acente, Ayarlar → Şirket Bilgilerim ekranından sayfayı yayına alır ve hangi
 * bölümlerin görüneceğini seçer. Acente URL'den mevcut public site deseniyle
 * (slug) çözülür: /agency/{slug}/company-profile
 */
class AgencyCompanyProfileController extends Controller
{
    public function show(Agency $agency)
    {
        if (!$agency->is_active || !$agency->company_profile_published) {
            abort(404, 'Bu sayfa yayında değil.');
        }

        $settings = $agency->companyProfileSettings();

        $certificates = $settings['show_certificates']
            ? $agency->certificates()->where('show_on_website', true)->orderBy('title')->get()
            : collect();

        $bankAccounts = $settings['show_banks'] ? $agency->publicBankAccounts() : [];

        // Tema renkleri — acentenin public site ayarlarıyla tutarlı olsun
        $colors = is_array($agency->theme_settings) ? ($agency->theme_settings['colors'] ?? []) : [];

        return view('page.agency.company-profile', [
            'agency' => $agency,
            'settings' => $settings,
            'certificates' => $certificates,
            'bankAccounts' => $bankAccounts,
            'primary' => $this->safeColor($colors['primary'] ?? null, '#0f766e'),
            'accent' => $this->safeColor($colors['accent'] ?? null, '#f59e0b'),
        ]);
    }

    /** Yalnızca #rgb / #rrggbb kabul et (tema ayarı doğrudan CSS'e basılıyor). */
    private function safeColor(?string $value, string $fallback): string
    {
        $value = trim((string) $value);

        return preg_match('/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/', $value) ? $value : $fallback;
    }
}
