<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

final class AgentProfile extends Model
{
    protected $primaryKey = 'agent_node_id';

    public $incrementing = false;

    protected $keyType = 'int';

    protected $fillable = [
        'agent_node_id',
        'total_share_rate',
        'credit_limit',
        'allocated_credit',
        'used_credit',
        'rebate_limit',
        'default_player_rebate',
        'can_grant_extra_rebate',
        'can_create_child_agent',
        'can_create_player',
        'settlement_cycle',
    ];

    protected function casts(): array
    {
        return [
            'agent_node_id' => 'integer',
            'total_share_rate' => 'float',
            'credit_limit' => 'integer',
            'allocated_credit' => 'integer',
            'used_credit' => 'integer',
            'rebate_limit' => 'float',
            'default_player_rebate' => 'float',
            'can_grant_extra_rebate' => 'boolean',
            'can_create_child_agent' => 'boolean',
            'can_create_player' => 'boolean',
            'settlement_cycle' => 'string',
        ];
    }

    /** @return BelongsTo<AgentNode, AgentProfile> */
    public function agentNode(): BelongsTo
    {
        return $this->belongsTo(AgentNode::class, 'agent_node_id');
    }
}
