<?php

namespace App\Http\Resources;

use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

class DeliveryResource extends JsonResource
{
    /**
     * @return array<string, mixed>
     */
    public function toArray(Request $request): array
    {
        return [
            'id' => $this->id,
            'categoria' => $this->categoria,
            'origem' => $this->origem,
            'origemLat' => $this->origem_lat !== null ? (float) $this->origem_lat : null,
            'origemLng' => $this->origem_lng !== null ? (float) $this->origem_lng : null,
            'destino' => $this->destino,
            'destinoLat' => $this->destino_lat !== null ? (float) $this->destino_lat : null,
            'destinoLng' => $this->destino_lng !== null ? (float) $this->destino_lng : null,
            'distanciaKm' => $this->distancia_km !== null ? (float) $this->distancia_km : null,
            'destinatarioNome' => $this->destinatario_nome,
            'destinatarioTelefone' => $this->destinatario_telefone,
            'descricao' => $this->descricao,
            'tamanho' => $this->tamanho,
            'peso' => $this->peso !== null ? (float) $this->peso : null,
            'valorDeclarado' => $this->valor_declarado !== null ? (float) $this->valor_declarado : null,
            'fragil' => (bool) $this->fragil,
            'precoEstimado' => (float) $this->preco_estimado,
            'metodoPagamento' => $this->metodo_pagamento,
            'pagador' => $this->pagador,
            'agendadoPara' => $this->agendado_para,
            'referenciaRecolha' => $this->referencia_recolha,
            'referenciaEntrega' => $this->referencia_entrega,
            'instrucoes' => $this->instrucoes,
            'status' => $this->status,
            'entregadorNome' => $this->whenLoaded('entregador', fn () => $this->entregador?->nome),
            'clienteNome' => $this->whenLoaded('cliente', fn () => $this->cliente?->nome),
            'clienteTelefone' => $this->whenLoaded('cliente', fn () => $this->cliente?->telefone),
            'createdAt' => $this->created_at?->toIso8601String(),
        ];
    }
}
