<?php

namespace App\Http\Resources\Admin\V1;

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

/**
 * Un cliente, tal como lo ve la API de administración (PRODSECU-215).
 *
 * **Lo que se puede escribir, se puede leer**: todos los campos que acepta
 * {@see \App\Http\Requests\Api\Admin\V1\ClienteRequest}, más el id y si está de alta. Lo
 * que la API no escribe no sale: el motivo de una baja, quién la hizo, `metadata`.
 *
 * Cada campo con el nombre de su columna, sin alias.
 *
 * @mixin \App\Models\Clients\Client
 */
class ClientResource extends JsonResource
{
    public function toArray(Request $request): array
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'shortname' => $this->shortname,
            'crm_id' => $this->crm_id,
            'cif' => $this->cif,
            // Los dos alias de la API: ver `ClienteRequest::ALIAS`.
            'legal_name' => $this->razon_social,
            'relationship_start_date' => $this->fecha_inicio_relacion?->format('Y-m-d'),
            'description' => $this->description,
            'jira' => $this->jira,
            'observation' => $this->observation,
            // Siempre lista: el accesor del modelo ya convierte el null en `[]`.
            'contacts' => array_values($this->contacts ?? []),
            'actived' => (bool) $this->actived,
        ];
    }
}
