<?php

namespace App\Http\Controllers\Api\Company;

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

class CompanySettingController extends Controller
{
    public function toggleNotificationSetting(Request $request)
    {
        $company =  $this->company($request);

        // Sorgular company_id ile sınırlandı: filtresiz update tüm firmaların
        // satırlarını değiştiriyordu. Satır yoksa ayar açık sayılır.
        $is_value = CompanySetting::isEnabledFor(
            $company->id,
            CompanySetting::NOTIFICATION_SETTING
        );

        $new_value = !$is_value;

        CompanySetting::query()
            ->updateOrCreate(
                [
                    'company_id' => $company->id,
                    'key' => CompanySetting::NOTIFICATION_SETTING
                ],
                [
                    'value' => $new_value ? '1' : '0'
                ]
            );

        return response()->json([
            'message' => $new_value
                ? 'Bildirimler kullanıcılar için açıldı'
                : 'Bildirimler kullanıcılara kapatıldı',
            'key' => CompanySetting::NOTIFICATION_SETTING,
            'enabled' => $new_value,
        ]);

    }

    public function getAllCompanysSettings(Request $request)
    {
        $company = $this->company($request);

        // 'global': adminin sistem geneli anahtarı. Kapalıysa firma ayarı açık
        // olsa bile mail gitmez; panel anahtarı kilitleyip sebebini yazar.
        return response()->json([
            'data' => [
                CompanySetting::NOTIFICATION_SETTING => CompanySetting::isEnabledFor(
                    $company->id,
                    CompanySetting::NOTIFICATION_SETTING
                ),
            ],
            'global' => [
                Setting::GLOBAL_NOTIFICATİON_SETTING => Setting::isEnabled(
                    Setting::GLOBAL_NOTIFICATİON_SETTING
                ),
            ],
        ]);
    }





    private function company(Request $request)
    {
        $company = $request->user()->company;

        abort_unless(
            $company && $company->application_status === Company::STATUS_APPROVED,
            403,
            'Onaylı bir firmanız bulunmuyor.'
        );

        return $company;
    }
}
