<?php

namespace App\Payment;

use App\Lib\HasMeta;
use Illuminate\Http\Resources\Json\JsonResource;

/**
 * @mixin Subscription
 */
class SubscriptionResource extends JsonResource
{
    use HasMeta;

    /**
     * Transform the resource into an array.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'fee_id' => $this->fee_id,
            'fee_name' => $this->fee->name,
            'amount_human' => number_format($this->getAmount() / 100, 2, ',', '.') . ' €',
            'amount' => $this->getAmount(),
            'children' => SubscriptionChildResource::collection($this->whenLoaded('children')),
        ];
    }

    /**
     * @return array<string, mixed>
     */
    public static function meta(): array
    {
        return [
            'links' => [
                'index' => route('subscription.index'),
                'create' => route('subscription.create'),
            ],
        ];
    }
}