<?php
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

require_once 'includes/config.php';

$errors = [];
$successMessage = '';

// สร้าง CSRF Token
if (empty($_SESSION['contact_csrf_token'])) {
    $_SESSION['contact_csrf_token'] = bin2hex(random_bytes(32));
}

// แสดงข้อมูลเดิม หากกรอกแบบฟอร์มไม่ครบ
function oldValue(string $name): string
{
    return htmlspecialchars(
        $_POST[$name] ?? '',
        ENT_QUOTES,
        'UTF-8'
    );
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    $csrfToken = $_POST['csrf_token'] ?? '';

    if (
        empty($csrfToken) ||
        !hash_equals(
            $_SESSION['contact_csrf_token'],
            $csrfToken
        )
    ) {
        $errors[] =
            'ไม่สามารถตรวจสอบความปลอดภัยของแบบฟอร์มได้ กรุณาลองใหม่อีกครั้ง';
    }

    $fullName = trim($_POST['full_name'] ?? '');
    $studentId = trim($_POST['student_id'] ?? '');
    $contactMethod = trim($_POST['contact_method'] ?? '');
    $contactDetail = trim($_POST['contact_detail'] ?? '');
    $subject = trim($_POST['subject'] ?? '');
    $message = trim($_POST['message'] ?? '');

    $allowedContactMethods = [
        'line',
        'email',
        'phone',
        'other'
    ];

    if ($fullName === '') {
        $errors[] = 'กรุณากรอกชื่อ–นามสกุล';
    }

    if (
        $contactMethod === '' ||
        !in_array(
            $contactMethod,
            $allowedContactMethods,
            true
        )
    ) {
        $errors[] =
            'กรุณาเลือกช่องทางที่สะดวกให้ผู้ดูแลติดต่อกลับ';
    }

    if ($contactDetail === '') {
        $errors[] = 'กรุณากรอกข้อมูลสำหรับติดต่อกลับ';
    }

    if ($subject === '') {
        $errors[] = 'กรุณาเลือกหัวข้อที่ต้องการติดต่อ';
    }

    if ($message === '') {
        $errors[] = 'กรุณากรอกรายละเอียด';
    }

    if (empty($errors)) {

        /*
         * ค้นหา member_id
         */
        $memberId = null;

        /*
         * กรณีสมาชิกเข้าสู่ระบบอยู่
         */
        if (
            isset($_SESSION['member_id']) &&
            (int) $_SESSION['member_id'] > 0
        ) {
            $memberId = (int) $_SESSION['member_id'];
        }

        /*
         * กรณียังไม่ได้เข้าสู่ระบบ
         * ค้นหาจากรหัสนักศึกษา
         */
        if (
            $memberId === null &&
            $studentId !== ''
        ) {
            $memberSql = "
                SELECT id
                FROM members
                WHERE TRIM(student_id) = TRIM(?)
                LIMIT 1
            ";

            $memberStmt = $conn->prepare($memberSql);

            if ($memberStmt) {

                $memberStmt->bind_param(
                    's',
                    $studentId
                );

                $memberStmt->execute();

                $memberResult =
                    $memberStmt->get_result();

                $memberData =
                    $memberResult->fetch_assoc();

                if ($memberData) {
                    $memberId =
                        (int) $memberData['id'];
                }

                $memberStmt->close();
            }
        }

        $studentIdForDatabase =
            $studentId !== ''
                ? $studentId
                : null;

        /*
         * บันทึกคำขอพร้อม member_id
         */
        $sql = "
            INSERT INTO contact_messages
            (
                member_id,
                full_name,
                student_id,
                contact_method,
                contact_detail,
                subject,
                message
            )
            VALUES (?, ?, ?, ?, ?, ?, ?)
        ";

        $stmt = $conn->prepare($sql);

        if ($stmt) {

            $stmt->bind_param(
                'issssss',
                $memberId,
                $fullName,
                $studentIdForDatabase,
                $contactMethod,
                $contactDetail,
                $subject,
                $message
            );

            if ($stmt->execute()) {

                $successMessage =
                    'ส่งข้อความถึงผู้ดูแลระบบเรียบร้อยแล้ว ผู้ดูแลจะตรวจสอบและติดต่อกลับผ่านช่องทางที่ท่านระบุ';

                // ล้างข้อมูลหลังบันทึกสำเร็จ
                $_POST = [];

                // สร้าง Token ใหม่
                $_SESSION['contact_csrf_token'] =
                    bin2hex(random_bytes(32));

            } else {

                $errors[] =
                    'ไม่สามารถส่งข้อความได้ กรุณาลองใหม่อีกครั้ง';
            }

            $stmt->close();

        } else {

            $errors[] =
                'ระบบไม่สามารถเตรียมการบันทึกข้อความได้';
        }
    }
}

include 'includes/header.php';
?>

<section class="form-section">

    <div class="container">

        <div class="text-center mb-5">

            <h2 class="display-5 fw-bold">
                💬 ติดต่อผู้ดูแลระบบ
            </h2>

            <p class="text-muted">
                ระบบสารสนเทศทำเนียบสมาชิก<br>
                ชมรมศิษย์ มจร วัดสุวรรณ
            </p>

        </div>

        <?php if ($successMessage !== ''): ?>

            <div class="alert alert-success shadow-sm">

                <strong>ส่งข้อความสำเร็จ</strong><br>

                <?= htmlspecialchars(
                    $successMessage,
                    ENT_QUOTES,
                    'UTF-8'
                ); ?>

            </div>

        <?php endif; ?>

        <?php if (!empty($errors)): ?>

            <div class="alert alert-danger shadow-sm">

                <strong>กรุณาตรวจสอบข้อมูล</strong>

                <ul class="mb-0 mt-2">

                    <?php foreach ($errors as $error): ?>

                        <li>
                            <?= htmlspecialchars(
                                $error,
                                ENT_QUOTES,
                                'UTF-8'
                            ); ?>
                        </li>

                    <?php endforeach; ?>

                </ul>

            </div>

        <?php endif; ?>

        <div class="row">

            <div class="col-lg-5 mb-4">

                <div class="card shadow h-100">

                    <div class="card-body">

                        <h4 class="card-title mb-4">
                            ช่องทางขอความช่วยเหลือ
                        </h4>

                        <p>
                            <strong>🔐 ลืมรหัสสมาชิกหรือรหัสผ่าน</strong><br>
                            กรุณาส่งข้อความผ่านแบบฟอร์มนี้
                            ผู้ดูแลจะตรวจสอบข้อมูลและติดต่อกลับ
                        </p>

                        <p>
                            <strong>💬 ช่องทางหลัก</strong><br>
                            แบบฟอร์มติดต่อผู้ดูแลภายในเว็บไซต์
                        </p>

                        <p>
                            <strong>📱 LINE</strong><br>
                            สามารถระบุ LINE ID
                            หรือชื่อบัญชี LINE
                            ที่สะดวกให้ผู้ดูแลติดต่อกลับ
                        </p>

                        <p>
                            <strong>📞 โทรศัพท์</strong><br>
                            ใช้เฉพาะเมื่อสมาชิกเลือกช่องทางนี้
                            หรือมีความจำเป็นเท่านั้น
                        </p>

                        <div class="alert alert-light border mt-4 mb-0">

                            <strong>คำแนะนำเพื่อความปลอดภัย</strong><br>

                            กรุณาอย่าส่งรหัสผ่านเดิม
                            หรือข้อมูลสำคัญอื่นที่ไม่จำเป็น
                            ผ่านแบบฟอร์มนี้

                        </div>

                    </div>

                </div>

            </div>

            <div class="col-lg-7">

                <div class="card shadow">

                    <div class="card-body">

                        <h4 class="card-title mb-4">
                            ส่งข้อความถึงผู้ดูแล
                        </h4>

                        <form method="post" action="contact.php">

                            <input
                                type="hidden"
                                name="csrf_token"
                                value="<?= htmlspecialchars(
                                    $_SESSION['contact_csrf_token'],
                                    ENT_QUOTES,
                                    'UTF-8'
                                ); ?>">

                            <div class="mb-3">

                                <label class="form-label fw-bold">
                                    ชื่อ–นามสกุล
                                    <span class="text-danger">*</span>
                                </label>

                                <input
                                    type="text"
                                    name="full_name"
                                    class="form-control"
                                    value="<?= oldValue('full_name'); ?>"
                                    placeholder="กรอกชื่อ–นามสกุล"
                                    maxlength="150"
                                    required>

                            </div>

                            <div class="mb-3">

                                <label class="form-label fw-bold">
                                    รหัสนักศึกษา
                                </label>

                                <input
                                    type="text"
                                    name="student_id"
                                    class="form-control"
                                    value="<?= oldValue('student_id'); ?>"
                                    placeholder="กรอกถ้าจำได้"
                                    maxlength="50">

                                <small class="text-muted">
                                    หากจำไม่ได้ สามารถเว้นว่างได้
                                </small>

                            </div>

                            <div class="mb-3">

                                <label class="form-label fw-bold">
                                    ช่องทางที่สะดวกให้ติดต่อกลับ
                                    <span class="text-danger">*</span>
                                </label>

                                <select
                                    name="contact_method"
                                    class="form-select"
                                    required>

                                    <option value="">
                                        กรุณาเลือกช่องทาง
                                    </option>

                                    <option
                                        value="line"
                                        <?= oldValue('contact_method') === 'line'
                                            ? 'selected'
                                            : ''; ?>>

                                        LINE

                                    </option>

                                    <option
                                        value="email"
                                        <?= oldValue('contact_method') === 'email'
                                            ? 'selected'
                                            : ''; ?>>

                                        Email

                                    </option>

                                    <option
                                        value="other"
                                        <?= oldValue('contact_method') === 'other'
                                            ? 'selected'
                                            : ''; ?>>

                                        ช่องทางอื่น

                                    </option>

                                    <option
                                        value="phone"
                                        <?= oldValue('contact_method') === 'phone'
                                            ? 'selected'
                                            : ''; ?>>

                                        โทรศัพท์
                                        (ใช้เมื่อจำเป็น)

                                    </option>

                                </select>

                            </div>

                            <div class="mb-3">

                                <label class="form-label fw-bold">
                                    ข้อมูลสำหรับติดต่อกลับ
                                    <span class="text-danger">*</span>
                                </label>

                                <input
                                    type="text"
                                    name="contact_detail"
                                    class="form-control"
                                    value="<?= oldValue('contact_detail'); ?>"
                                    placeholder="เช่น LINE ID หรือ Email"
                                    maxlength="255"
                                    required>

                                <small class="text-muted">
                                    ข้อมูลนี้จะใช้สำหรับให้ผู้ดูแลติดต่อกลับเท่านั้น
                                </small>

                            </div>

                            <div class="mb-3">

                                <label class="form-label fw-bold">
                                    หัวข้อ
                                    <span class="text-danger">*</span>
                                </label>

                                <select
                                    name="subject"
                                    class="form-select"
                                    required>

                                    <option value="">
                                        กรุณาเลือกหัวข้อ
                                    </option>

                                    <option
                                        value="ลืมรหัสสมาชิกหรือรหัสผ่าน"
                                        <?= oldValue('subject')
                                            === 'ลืมรหัสสมาชิกหรือรหัสผ่าน'
                                            ? 'selected'
                                            : ''; ?>>

                                        ลืมรหัสสมาชิกหรือรหัสผ่าน

                                    </option>

                                    <option
                                        value="ปัญหาการเข้าสู่ระบบ"
                                        <?= oldValue('subject')
                                            === 'ปัญหาการเข้าสู่ระบบ'
                                            ? 'selected'
                                            : ''; ?>>

                                        ปัญหาการเข้าสู่ระบบ

                                    </option>

                                    <option
                                        value="ขอแก้ไขข้อมูลสมาชิก"
                                        <?= oldValue('subject')
                                            === 'ขอแก้ไขข้อมูลสมาชิก'
                                            ? 'selected'
                                            : ''; ?>>

                                        ขอแก้ไขข้อมูลสมาชิก

                                    </option>

                                    <option
                                        value="สอบถามการใช้งานระบบ"
                                        <?= oldValue('subject')
                                            === 'สอบถามการใช้งานระบบ'
                                            ? 'selected'
                                            : ''; ?>>

                                        สอบถามการใช้งานระบบ

                                    </option>

                                    <option
                                        value="ข้อเสนอแนะหรือเรื่องอื่น ๆ"
                                        <?= oldValue('subject')
                                            === 'ข้อเสนอแนะหรือเรื่องอื่น ๆ'
                                            ? 'selected'
                                            : ''; ?>>

                                        ข้อเสนอแนะหรือเรื่องอื่น ๆ

                                    </option>

                                </select>

                            </div>

                            <div class="mb-3">

                                <label class="form-label fw-bold">
                                    รายละเอียด
                                    <span class="text-danger">*</span>
                                </label>

                                <textarea
                                    name="message"
                                    class="form-control"
                                    rows="5"
                                    placeholder="อธิบายปัญหาหรือสิ่งที่ต้องการให้ผู้ดูแลช่วยเหลือ"
                                    required><?= oldValue('message'); ?></textarea>

                            </div>

                            <div class="text-center mt-4">

                                <button
                                    type="submit"
                                    class="btn btn-primary px-4">

                                    <i class="fa-solid fa-paper-plane"></i>
                                    ส่งข้อความถึงผู้ดูแล

                                </button>

                            </div>

                        </form>

                    </div>

                </div>

            </div>

        </div>

    </div>

</section>

<?php
include 'includes/footer.php';
?>