<?php

namespace App\Models;

use App\Models\Concerns\BelongsToOwner;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;

class Organization extends Model
{
    use BelongsToOwner, SoftDeletes;

    protected $table = 'meet_organizations';

    protected $fillable = [
        'owner_ref', 'name', 'slug', 'logo_path', 'timezone', 'license_tier', 'usage_quotas',
        'settings', 'security_policy',
    ];

    protected function casts(): array
    {
        return [
            'settings' => 'array',
            'security_policy' => 'array',
            'usage_quotas' => 'array',
        ];
    }

    public function branches(): HasMany
    {
        return $this->hasMany(Branch::class, 'organization_id');
    }

    public function members(): HasMany
    {
        return $this->hasMany(Member::class, 'organization_id');
    }

    public function securitySetting(string $key, mixed $default = null): mixed
    {
        return data_get($this->security_policy, $key, data_get(config('meet.security_defaults'), $key, $default));
    }
}
