<?php
// 견적서 산출내역 저장루틴 
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
header("Content-Type: application/json");

$mode = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : '';
$num = isset($_REQUEST['num']) ? $_REQUEST['num'] : '';
// parent_num이 num입니다.
$tablename = 'output_extra';

// JSON 데이터를 POST로 받아 처리
$detailJson = isset($_POST['detailJson']) ? $_POST['detailJson'] : '';

include '_request.php';

require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();

try {
    // 트랜잭션 시작 
    $pdo->beginTransaction();
	
    // detailJson이 있는지 확인
    $sql = "SELECT COUNT(*) AS cnt FROM $DB.$tablename WHERE parent_num=?";
    $stmh = $pdo->prepare($sql);
    $stmh->bindValue(1, $num, PDO::PARAM_STR);
    $stmh->execute();
    $row = $stmh->fetch(PDO::FETCH_ASSOC);

    if ($row['cnt'] > 0) {
        // detailJson이 이미 존재하므로 업데이트 처리
        // 자료수정
        $update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " " . $update_log . "&#10";				
		$sql = "UPDATE $DB.$tablename SET detailJson=?, update_log=?, estimateTotal=?, EstimateFirstSum=?, EstimateUpdatetSum=?, EstimateDiffer=?, estimateSurang=?, EstimateDiscountRate=?, EstimateDiscount=?, EstimateFinalSum=?, ET_total=?, ET_unapproved=? WHERE parent_num=? LIMIT 1";
		$stmh = $pdo->prepare($sql);
		$stmh->bindValue(1, $detailJson, PDO::PARAM_STR); // JSON 데이터를 text로 저장
		$stmh->bindValue(2, $update_log, PDO::PARAM_STR);
		$stmh->bindValue(3, intval(str_replace(',', '', $estimateTotal)), PDO::PARAM_INT); // int 형태로 저장
		$stmh->bindValue(4, intval(str_replace(',', '', $EstimateFirstSum)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(5, intval(str_replace(',', '', $EstimateUpdatetSum)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(6, intval(str_replace(',', '', $EstimateDiffer)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(7, intval(str_replace(',', '', $estimateSurang)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(8,  $EstimateDiscountRate, PDO::PARAM_STR); // 추가된 필드
		$stmh->bindValue(9, intval(str_replace(',', '', $EstimateDiscount)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(10, intval(str_replace(',', '', $EstimateFinalSum)), PDO::PARAM_INT); // 추가된 필드		
		$stmh->bindValue(11, intval(str_replace(',', '', $ET_total)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(12, intval(str_replace(',', '', $ET_unapproved)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(13, $num, PDO::PARAM_STR);
		$stmh->execute();
    } else {
        // detailJson이 없으므로 새로운 데이터로 삽입
        $update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " ";        
		$sql = "INSERT INTO $DB.$tablename (parent_num, detailJson, update_log, estimateTotal, EstimateFirstSum, EstimateUpdatetSum, EstimateDiffer, estimateSurang, EstimateDiscountRate, EstimateDiscount, EstimateFinalSum, ET_total, ET_unapproved) 		
				VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
		$stmh = $pdo->prepare($sql);
		$stmh->bindValue(1, $num, PDO::PARAM_STR);
		$stmh->bindValue(2, $detailJson, PDO::PARAM_STR); // JSON 데이터를 text로 저장
		$stmh->bindValue(3, $update_log, PDO::PARAM_STR);
		$stmh->bindValue(4, intval(str_replace(',', '', $estimateTotal)), PDO::PARAM_INT); // int 형태로 저장
		$stmh->bindValue(5, intval(str_replace(',', '', $EstimateFirstSum)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(6, intval(str_replace(',', '', $EstimateUpdatetSum)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(7, intval(str_replace(',', '', $EstimateDiffer)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(8, intval(str_replace(',', '', $estimateSurang)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(9,  $EstimateDiscountRate, PDO::PARAM_STR); // 추가된 필드
		$stmh->bindValue(10, intval(str_replace(',', '', $EstimateDiscount)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(11, intval(str_replace(',', '', $EstimateFinalSum)), PDO::PARAM_INT); // 추가된 필드		
		$stmh->bindValue(12, intval(str_replace(',', '', $ET_total)), PDO::PARAM_INT); // 추가된 필드
		$stmh->bindValue(13, intval(str_replace(',', '', $ET_unapproved)), PDO::PARAM_INT); // 추가된 필드
		$stmh->execute();
    }

    // 트랜잭션 커밋
    $pdo->commit();

    // 응답 데이터 생성
    $data = [
        'num' => $num,
        'mode' => ($row['cnt'] > 0) ? 'modify' : 'insert',
		'estimateTotal' => $estimateTotal,
		'EstimateFirstSum' => $EstimateFirstSum,
		'EstimateUpdatetSum' => $EstimateUpdatetSum,
		'EstimateDiffer' => $EstimateDiffer,
		'estimateSurang' => $estimateSurang,
		'EstimateDiscountRate' => $EstimateDiscountRate,
		'EstimateDiscount' => $EstimateDiscount,
		'EstimateFinalSum' => $EstimateFinalSum,		
		'ET_total' => $ET_total,
		'ET_unapproved' => $ET_unapproved,
        'status' => 'success'
    ];

    echo json_encode($data, JSON_UNESCAPED_UNICODE);
} catch (PDOException $Exception) {
    // 예외 처리
    error_log("오류: " . $Exception->getMessage());
    $pdo->rollBack(); // 트랜잭션 롤백
    http_response_code(500);
    echo json_encode(['error' => $Exception->getMessage()]);
} catch (Exception $e) {
    error_log("오류: " . $e->getMessage());
    $pdo->rollBack(); // 트랜잭션 롤백
    http_response_code(500);
    echo json_encode(['error' => $e->getMessage()]);
}

?>
