<?php
// fetch_price.php

require_once($_SERVER['DOCUMENT_ROOT'] . '/session.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/lib/mydb.php');

// 에러 표시/로그 설정
error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors',     '1');
ini_set('error_log',      $_SERVER['DOCUMENT_ROOT'].'/php_errors.log');

// JSON 응답 헤더
header('Content-Type: application/json; charset=utf-8');

/**
 * 에러 응답을 보내고 종료합니다.
 */
function respondError(string $msg, int $code = 400): void {
    http_response_code($code);
    echo json_encode([
        'success' => false,
        'error'   => $msg
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// 파라미터 확인
$tablename = $_REQUEST['tablename'] ?? '';
$codes     = $_REQUEST['codes']     ?? '';
if (!$tablename || !$codes) {
    respondError('테이블명 또는 자재 코드가 누락되었습니다.', 400);
}

// JSON → 배열
$wantedNames = json_decode($codes, true);
if (!is_array($wantedNames) || empty($wantedNames)) {
    respondError('자재 코드를 파싱할 수 없습니다.', 400);
}

try {
    $pdo = db_connect();

    // itemList 라는 JSON 컬럼을 담고 있는 테이블을 가정
    $sql = "SELECT itemList 
              FROM chandj.{$tablename} 
             WHERE is_deleted IS NULL OR is_deleted = 0";
    $st = $pdo->prepare($sql);
    $st->execute();

    $found = [];
    while ($row = $st->fetch(PDO::FETCH_ASSOC)) {
        $items = json_decode($row['itemList'], true);
        if (!is_array($items)) {
            continue;
        }
        foreach ($items as $item) {
            // item_name 필드가 우리가 찾는 목록에 있으면 그대로 수집
            if (isset($item['item_name']) 
                && in_array($item['item_name'], $wantedNames, true)
            ) {
                // 사양(spec)과 길이(length)도 함께 전달
                $found[] = [
                    'item_name' => $item['item_name'],
                    'spec'      => $item['spec']      ?? '',
                    'length'    => $item['length']    ?? '',
                    'price'     => $item['price']     ?? 0,
                ];
            }
        }
    }

    if (empty($found)) {
        respondError('해당 자재를 찾을 수 없습니다.', 404);
    }

    // 성공 응답
    echo json_encode([
        'success' => true,
        'data'    => $found
    ], JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);

} catch (PDOException $e) {
    error_log('Database Error: ' . $e->getMessage());
    respondError('데이터베이스 오류가 발생했습니다.', 500);

} catch (Exception $e) {
    error_log('General Error: ' . $e->getMessage());
    respondError('서버 오류가 발생했습니다.', 500);
}
