<?php
// egiorderlist의 자료를 output의 slatlist로 json형태로 저장한 코드입니다.

require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect(); // DB 연결 함수 호출

// 타임 리미트 설정
set_time_limit(0);

// 출력 버퍼링 비활성화
ob_implicit_flush(true);

// 디버깅을 위한 에러 출력 설정
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

print 'slat 제이슨 만들기 <br>';

try {
    // output 테이블에서 num 컬럼 가져오기
    // $output_sql = "SELECT num FROM chandj.output ";
	// 특정한개만 데이터 넣기
    $output_sql = "SELECT num FROM chandj.output where num=20789";
    $output_stmt = $pdo->prepare($output_sql);
    $output_stmt->execute();
    $output_results = $output_stmt->fetchAll(PDO::FETCH_ASSOC);

    $total_rows = count($output_results);
    $current_row = 0;

    foreach ($output_results as $output_row) {
        $output_num = $output_row['num'];
        // egimake 테이블에서 outputnum이 같은 데이터를 가져오기
        $make_sql = "SELECT `upnum`, `outputnum`, `num`, `text1`, `text2`, `text3`, `text4`, `hinge`, 
                     `ordercompany`, `callname`, `cutwidth`, `cutheight`, `number`, `printside`, 
                     `direction`, `exititem`, `intervalnum`, `intervalnumsecond`, `memo`, `draw`, 
                     `drawbottom1`, `drawbottom2`, `drawbottom3`, `exitinterval`, `cover`, `done_check` 
                     FROM chandj.egimake WHERE outputnum = :outputnum ORDER BY num ASC";
        $make_stmt = $pdo->prepare($make_sql);
        $make_stmt->bindParam(':outputnum', $output_num, PDO::PARAM_INT);
        $make_stmt->execute();
        $make_results = $make_stmt->fetchAll(PDO::FETCH_ASSOC);

        $slatlist_data = [];

        if ($make_stmt->rowCount() > 0) {
            // 각 egimake 테이블의 행을 배열로 추가
            foreach ($make_results as $make_row) {
                $slatlist_data[] = [
                    'upnum' => $make_row['upnum'],
                    'outputnum' => $make_row['outputnum'],
                    'num' => $make_row['num'],
                    'text1' => $make_row['text1'],
                    'text2' => $make_row['text2'],
                    'text3' => $make_row['text3'],
                    'text4' => $make_row['text4'],
                    'hinge' => $make_row['hinge'],
                    'ordercompany' => $make_row['ordercompany'],
                    'callname' => $make_row['callname'],
                    'cutwidth' => $make_row['cutwidth'],
                    'cutheight' => $make_row['cutheight'],
                    'number' => $make_row['number'],
                    'printside' => $make_row['printside'],
                    'direction' => $make_row['direction'],
                    'exititem' => $make_row['exititem'],
                    'intervalnum' => $make_row['intervalnum'],
                    'intervalnumsecond' => $make_row['intervalnumsecond'],
                    'memo' => $make_row['memo'],
                    'draw' => $make_row['draw'],
                    'drawbottom1' => $make_row['drawbottom1'],
                    'drawbottom2' => $make_row['drawbottom2'],
                    'drawbottom3' => $make_row['drawbottom3'],
                    'exitinterval' => $make_row['exitinterval'],
                    'cover' => $make_row['cover'],
                    'done_check' => $make_row['done_check']
                ];
            }
        }

        // JSON으로 인코딩
        $slatlist_json = json_encode($slatlist_data, JSON_UNESCAPED_UNICODE);

        // output 테이블의 slatlist 업데이트
        $update_sql = "UPDATE chandj.output SET slatlist = :slatlist WHERE num = :num";
        $update_stmt = $pdo->prepare($update_sql);
        $update_stmt->bindParam(':slatlist', $slatlist_json, PDO::PARAM_STR);
        $update_stmt->bindParam(':num', $output_num, PDO::PARAM_INT);
        if (!$update_stmt->execute()) {
            echo "Error updating record for num $output_num: " . implode(", ", $update_stmt->errorInfo()) . "<br>";
        }

        // 진행 상황 출력
        $current_row++;
        echo "Processed rows: $current_row<br>";
        if ($current_row % 100 == 0) {
            echo "Processed $current_row of $total_rows rows<br>";
        }
    }

    echo "Finished processing all records.";
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
?>
</body>
</html>
