<?php
// strongswan_qa_submit.php - 앱 전용 1:1문의 API (카테고리 조회 + 문의 제출)
header('Content-Type: application/json; charset=utf-8');

include_once('./_common.php');

function qa_json_out($arr) {
    echo json_encode($arr, JSON_UNESCAPED_UNICODE);
    exit;
}

$action = isset($_POST['action']) ? trim($_POST['action']) : 'submit';

// ── 카테고리 목록 조회 ──────────────────────────────────────────
if ($action === 'get_categories') {
    $qaconfig = get_qa_config();
    $categories = [];
    if (trim($qaconfig['qa_category'])) {
        $raw = explode('|', $qaconfig['qa_category']);
        foreach ($raw as $v) {
            $v = trim($v);
            if ($v !== '') $categories[] = $v;
        }
    }
    qa_json_out(['result' => 'success', 'categories' => $categories]);
}

// ── 회원 기본 정보 조회 (이메일·휴대폰 자동완성용) ────────────────
if ($action === 'get_user_info') {
    $mb_id       = isset($_POST['mb_id'])       ? trim($_POST['mb_id'])       : '';
    $mb_password = isset($_POST['mb_password']) ? trim($_POST['mb_password']) : '';
    if (!$mb_id || !$mb_password)
        qa_json_out(['result' => 'error', 'message' => '로그인이 필요합니다.']);
    $safe_id = sql_escape_string($mb_id);
    $row = sql_fetch("SELECT mb_email, mb_hp FROM {$g5['member_table']} WHERE mb_id = '$safe_id' LIMIT 1");
    if (!$row)
        qa_json_out(['result' => 'success', 'mb_email' => '', 'mb_hp' => '']);
    qa_json_out([
        'result'   => 'success',
        'mb_email' => (string)$row['mb_email'],
        'mb_hp'    => (string)$row['mb_hp'],
    ]);
}

// ── 문의 제출 ─────────────────────────────────────────────────
$is_guest          = isset($_POST['is_guest']) && $_POST['is_guest'] === '1';
$qa_name_raw       = isset($_POST['qa_name'])            ? trim($_POST['qa_name'])            : '';
$mb_id             = isset($_POST['mb_id'])               ? trim($_POST['mb_id'])               : '';
$mb_password       = isset($_POST['mb_password'])         ? trim($_POST['mb_password'])         : '';
$qa_guest_device_id = isset($_POST['qa_guest_device_id']) ? trim($_POST['qa_guest_device_id']) : '';
$qa_category       = isset($_POST['qa_category'])         ? trim($_POST['qa_category'])         : '';
$qa_email          = isset($_POST['qa_email'])            ? trim($_POST['qa_email'])            : '';
$qa_subject        = isset($_POST['qa_subject'])          ? trim($_POST['qa_subject'])          : '';
$qa_content        = isset($_POST['qa_content'])          ? trim($_POST['qa_content'])          : '';
$qa_hp             = isset($_POST['qa_hp'])               ? trim($_POST['qa_hp'])               : '';
$qa_email_recv     = isset($_POST['qa_email_recv'])       ? intval($_POST['qa_email_recv'])     : 0;

if (!$qa_category) qa_json_out(['result' => 'error', 'message' => '분류를 선택해 주세요.']);
if (!$qa_subject)  qa_json_out(['result' => 'error', 'message' => '제목을 입력해 주세요.']);
if (!$qa_content)  qa_json_out(['result' => 'error', 'message' => '내용을 입력해 주세요.']);

if ($is_guest) {
    // ── 비회원(앱 게스트) 문의 ─────────────────────────────────────
    if (!$qa_name_raw) qa_json_out(['result' => 'error', 'message' => '이름을 입력해 주세요.']);
    // qa_guest_device_id가 있으면 mb_id 컬럼에 저장해 추적에 활용
    $mb_id        = $qa_guest_device_id ?: '';
    $row          = ['mb_name' => $qa_name_raw, 'mb_email' => $qa_email];
    $display_name = '[앱 비회원] ' . $qa_name_raw;
} else {
    // ── 회원 문의 ──────────────────────────────────────────────────
    if (!$mb_id || !$mb_password)
        qa_json_out(['result' => 'error', 'message' => '로그인이 필요합니다.']);
    $safe_mb_id_chk = sql_escape_string($mb_id);
    $row = sql_fetch("SELECT * FROM {$g5['member_table']} WHERE mb_id = '$safe_mb_id_chk' LIMIT 1");
    if (!$row || !$row['mb_id'])
        qa_json_out(['result' => 'error', 'message' => '존재하지 않는 회원입니다.']);
    if (!login_password_check($row, $mb_password, $row['mb_password']))
        qa_json_out(['result' => 'error', 'message' => '비밀번호가 일치하지 않습니다.']);
    $display_name = $row['mb_name'];
}

// 카테고리 검증
$qaconfig = get_qa_config();
if (trim($qaconfig['qa_category'])) {
    $cats = explode('|', $qaconfig['qa_category']);
    if (!in_array($qa_category, $cats))
        qa_json_out(['result' => 'error', 'message' => '올바르지 않은 분류입니다.']);
}

// 이메일 보완 (회원인 경우 DB 이메일 fallback)
if (!$qa_email && !empty($row['mb_email'])) $qa_email = $row['mb_email'];
// 휴대폰 정제
if ($qa_hp) $qa_hp = preg_replace('/[^0-9\-]/', '', strip_tags($qa_hp));

$now        = date('Y-m-d H:i:s');
$safe_mb_id = sql_escape_string($mb_id);
$safe_nm    = sql_escape_string($display_name);
$safe_em    = sql_escape_string($qa_email);
$safe_hp    = sql_escape_string($qa_hp);
$safe_cat   = sql_escape_string($qa_category);
$safe_sub   = sql_escape_string(substr($qa_subject, 0, 255));
$safe_con   = sql_escape_string(substr($qa_content, 0, 65536));
$safe_ip    = sql_escape_string($_SERVER['REMOTE_ADDR']);

$sql = "INSERT INTO {$g5['qa_content_table']}
    (qa_num, qa_parent, qa_related,
     mb_id, qa_name, qa_email, qa_hp,
     qa_type, qa_category, qa_email_recv, qa_sms_recv, qa_html,
     qa_subject, qa_content, qa_status,
     qa_file1, qa_source1, qa_file2, qa_source2,
     qa_ip, qa_datetime)
VALUES
    (0, 0, 0,
     '$safe_mb_id', '$safe_nm', '$safe_em', '$safe_hp',
     0, '$safe_cat', $qa_email_recv, 0, 0,
     '$safe_sub', '$safe_con', 0,
     '', '', '', '',
     '$safe_ip', '$now')";

$ok = sql_query($sql, false);
if (!$ok) qa_json_out(['result' => 'error', 'message' => '문의 등록에 실패했습니다.']);

$qa_id = sql_insert_id();
sql_query("UPDATE {$g5['qa_content_table']} SET qa_num = -$qa_id WHERE qa_id = $qa_id", false);

qa_json_out(['result' => 'success', 'message' => '문의가 접수되었습니다.', 'qa_id' => (int)$qa_id]);
