<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class OrderDetailResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param \Illuminate\Http\Request $request
     * @return array
     */
    public function toArray($request)
    {
        // order_detail から商品小計・オプション・送料を計算
        $details = $this->order_detail;
        $productPrice = 0;
        $optionPrice = 0;
        // 送料は注文レベル（orders.shipping_cost）のみ使用
        // order_details.shipping_cost は常に0のため加算しない
        $shippingCost = $this->shipping_cost ?? 0;
        if ($details) {
            foreach ($details as $d) {
                $productPrice += $d->price ?? 0;
                $optionPrice += ($d->safe_pack ?? 0) + ($d->tabi ?? 0) + ($d->towel ?? 0);
            }
        }

        return [
            'id'                      => $this->id,
            'code'                    => $this->code,
            'type'                    => $this->type,
            'user_id'                 => $this->user_id,
            'total_price'             => $this->total_price,
            'product_price'           => $productPrice,
            'option_price'            => $optionPrice,
            'shipping_cost'           => $shippingCost,
            'estimated_delivery_date' => $this->estimated_delivery_date,
            'payment_method'          => $this->payment_method,
            'payment_status'          => $this->payment_status,
            'note'                    => $this->note,
            'status'                  => $this->status,
            'order_detail'            => $this->order_detail,
            'delivery'                => $this->delivery,
            'payment'                 => $this->payment,
            'created_at'              => $this->created_at,
            // Provisional order fields (status = 9)
            'is_provisional'                 => $this->status === \App\Order::STATUS_PROVISIONAL,
            'provisional_expires_at'         => $this->provisional_expires_at,
            'identity_verification_required' => $this->identity_verification_required ?? false,
        ];
    }
}
