<?php

namespace App\Modules\Integration\Controllers;

use App\Http\Controllers\Controller;
use App\Modules\Inventory\Contracts\InventoryServiceInterface;
use Illuminate\Http\JsonResponse;

class InventorySyncController extends Controller
{
    protected $inventoryService;

    public function __construct(InventoryServiceInterface $inventoryService)
    {
        $this->inventoryService = $inventoryService;
    }

    /**
     * 提供外部 POS 查詢指定倉庫的商品庫存餘額
     *
     * @param string $warehouseCode
     * @return JsonResponse
     */
    public function show(string $warehouseCode): JsonResponse
    {
        // 透過 Service 調用跨模組庫存查詢功能
        $inventoryData = $this->inventoryService->getPosInventoryByWarehouseCode($warehouseCode);

        // 若回傳 null，表示尋無此倉庫代碼
        if (is_null($inventoryData)) {
            return response()->json([
                'status' => 'error',
                'message' => "Warehouse with code '{$warehouseCode}' not found.",
            ], 404);
        }

        // 以 JSON 格式回傳組合好的商品庫存列表
        return response()->json([
            'status' => 'success',
            'warehouse_code' => $warehouseCode,
            'data' => $inventoryData->map(function ($item) {
                return [
                    'external_pos_id' => $item->external_pos_id,
                    'product_code' => $item->product_code,
                    'product_name' => $item->product_name,
                    'quantity' => (float) $item->total_quantity,
                ];
            })
        ], 200);
    }
}
