<?php

namespace App\Models;

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

class Delivery extends Model
{
    use HasUuids;

    /**
     * @var list<string>
     */
    protected $fillable = [
        'cliente_id',
        'entregador_id',
        'origem_referencia_id',
        'destino_referencia_id',
        'categoria',
        'origem',
        'origem_lat',
        'origem_lng',
        'destino',
        'destino_lat',
        'destino_lng',
        'distancia_km',
        'destinatario_nome',
        'destinatario_telefone',
        'descricao',
        'tamanho',
        'peso',
        'valor_declarado',
        'fragil',
        'preco_estimado',
        'metodo_pagamento',
        'pagador',
        'agendado_para',
        'referencia_recolha',
        'referencia_entrega',
        'instrucoes',
        'status',
    ];

    /**
     * @return array<string, string>
     */
    protected function casts(): array
    {
        return [
            'preco_estimado' => 'decimal:2',
            'peso' => 'decimal:2',
            'valor_declarado' => 'decimal:2',
            'distancia_km' => 'decimal:2',
            'origem_lat' => 'decimal:7',
            'origem_lng' => 'decimal:7',
            'destino_lat' => 'decimal:7',
            'destino_lng' => 'decimal:7',
            'fragil' => 'boolean',
        ];
    }

    public function cliente(): BelongsTo
    {
        return $this->belongsTo(User::class, 'cliente_id');
    }

    public function entregador(): BelongsTo
    {
        return $this->belongsTo(User::class, 'entregador_id');
    }
}
