<?php

namespace App\Modules\Geo\Entities;

use CodeIgniter\Entity\Entity;

/**
 * Zone Entity
 * 
 * Represents a geographic zone/geofence in the system.
 */
class Zone extends Entity
{
    /**
     * Attributes that can be mass assigned
     * 
     * @var array<string>
     */
    protected $allowedFields = [
        'zone_code',
        'zone_name',
        'latitude',
        'longitude',
        'radius_meters',
        'is_active',
    ];

    /**
     * Attributes that should be cast to specific types
     * 
     * @var array<string, string>
     */
    protected $casts = [
        'id'            => 'integer',
        'latitude'      => 'float',
        'longitude'     => 'float',
        'radius_meters' => 'integer',
        'is_active'     => 'boolean',
        'created_at'    => 'datetime',
        'updated_at'    => 'datetime',
    ];

    /**
     * Check if zone is active
     * 
     * @return bool
     */
    public function isActive(): bool
    {
        return (bool) $this->attributes['is_active'];
    }
}
