<?php

namespace App\Http\Requests\Shipment;

use Illuminate\Foundation\Http\FormRequest;

class ShipmentUpdateRequest extends FormRequest
{
    public function authorize(): bool
    {
        return true;
    }

    public function rules(): array
    {
        return [
            // 기본 정보
            'lot_no' => 'nullable|string|max:50',
            'order_id' => 'nullable|integer|exists:orders,id',
            'scheduled_date' => 'nullable|date',
            'priority' => 'nullable|in:urgent,normal,low',
            'delivery_method' => 'nullable|in:pickup,direct,logistics,direct_dispatch,loading,kyungdong_delivery,daesin_delivery,kyungdong_freight,daesin_freight,self_pickup',

            // 발주처/배송 정보
            'client_id' => 'nullable|integer|exists:clients,id',
            'customer_name' => 'nullable|string|max:100',
            'site_name' => 'nullable|string|max:100',
            'delivery_address' => 'nullable|string|max:255',
            'receiver' => 'nullable|string|max:50',
            'receiver_contact' => 'nullable|string|max:50',

            // 상태 플래그
            'can_ship' => 'nullable|boolean',
            'deposit_confirmed' => 'nullable|boolean',
            'invoice_issued' => 'nullable|boolean',
            'customer_grade' => 'nullable|string|max:20',

            // 상차 정보
            'loading_manager' => 'nullable|string|max:50',
            'loading_time' => 'nullable|date',

            // 물류/배차 정보
            'logistics_company' => 'nullable|string|max:50',
            'vehicle_tonnage' => 'nullable|string|max:20',
            'shipping_cost' => 'nullable|numeric|min:0',

            // 차량/운전자 정보
            'vehicle_no' => 'nullable|string|max:20',
            'driver_name' => 'nullable|string|max:50',
            'driver_contact' => 'nullable|string|max:50',
            'expected_arrival' => 'nullable|date',

            // 기타
            'remarks' => 'nullable|string',

            // 배차정보
            'vehicle_dispatches' => 'nullable|array',
            'vehicle_dispatches.*.seq' => 'nullable|integer|min:1',
            'vehicle_dispatches.*.logistics_company' => 'nullable|string|max:100',
            'vehicle_dispatches.*.arrival_datetime' => 'nullable|date',
            'vehicle_dispatches.*.tonnage' => 'nullable|string|max:20',
            'vehicle_dispatches.*.vehicle_no' => 'nullable|string|max:20',
            'vehicle_dispatches.*.driver_contact' => 'nullable|string|max:50',
            'vehicle_dispatches.*.remarks' => 'nullable|string',

            // 출하 품목
            'items' => 'nullable|array',
            'items.*.seq' => 'nullable|integer|min:1',
            'items.*.item_code' => 'nullable|string|max:50',
            'items.*.item_name' => 'required|string|max:100',
            'items.*.floor_unit' => 'nullable|string|max:50',
            'items.*.specification' => 'nullable|string|max:100',
            'items.*.quantity' => 'nullable|numeric|min:0',
            'items.*.unit' => 'nullable|string|max:20',
            'items.*.lot_no' => 'nullable|string|max:50',
            'items.*.stock_lot_id' => 'nullable|integer|exists:stock_lots,id',
            'items.*.remarks' => 'nullable|string',
        ];
    }
}
