<?php
require_once 'includes/config.php';
require_once 'includes/auth.php';
require_once 'includes/functions.php';

$message = "";
$messageType = "";

if ($_SERVER["REQUEST_METHOD"] === "POST") {
    requireValidCsrf();

    // ============================
    // รับค่าจากฟอร์ม
    // ============================

    $student_id      = trim($_POST['student_id'] ?? '');
    $prefix          = trim($_POST['prefix'] ?? '');
    $first_name      = trim($_POST['first_name'] ?? '');
    $last_name       = trim($_POST['last_name'] ?? '');
    $gender          = trim($_POST['gender'] ?? '');
    $faculty         = trim($_POST['faculty'] ?? '');
    $major           = trim($_POST['major'] ?? '');
    $graduation_year = trim($_POST['graduation_year'] ?? '');
    $phone           = trim($_POST['phone'] ?? '');
    $email           = trim($_POST['email'] ?? '');
    $address         = trim($_POST['address'] ?? '');
    $workplace       = trim($_POST['workplace'] ?? '');
    $position        = trim($_POST['position'] ?? '');
    $password        = $_POST['password'] ?? '';

    $photo = "";

    // ============================
    // ตรวจสอบข้อมูล
    // ============================

    if (
        empty($student_id) ||
        empty($prefix) ||
        empty($first_name) ||
        empty($last_name) ||
        empty($gender) ||
        empty($password)
    ) {

        $message = "กรุณากรอกข้อมูลที่จำเป็นให้ครบ";
        $messageType = "danger";

    } elseif (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {

        $message = "รูปแบบอีเมลไม่ถูกต้อง";
        $messageType = "warning";

    } elseif (!empty($phone) && !preg_match('/^[0-9]{9,10}$/', $phone)) {

        $message = "กรุณากรอกเบอร์โทรศัพท์ให้ถูกต้อง";
        $messageType = "warning";

    } elseif (strlen($password) < 8) {

        $message = "รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร";
        $messageType = "warning";

    } elseif (
        !empty($graduation_year) &&
        !preg_match('/^[0-9]{4}$/', $graduation_year)
    ) {

        $message = "ปีที่สำเร็จการศึกษาต้องเป็นตัวเลข 4 หลัก";
        $messageType = "warning";

    }

    // ============================
    // ตรวจรหัสนักศึกษาซ้ำ
    // ============================

    if ($message === "") {

        $check = $conn->prepare(
            "SELECT id FROM members WHERE student_id = ?"
        );

        $check->bind_param("s", $student_id);
        $check->execute();
        $check->store_result();

        if ($check->num_rows > 0) {

            $message = "รหัสนักศึกษานี้มีอยู่ในระบบแล้ว";
            $messageType = "warning";

        }

        $check->close();

    }

    // ============================
    // ตรวจอีเมลซ้ำ
    // ============================

    if ($message === "" && !empty($email)) {

        $emailCheck = $conn->prepare(
            "SELECT id FROM members WHERE email = ?"
        );

        $emailCheck->bind_param("s", $email);
        $emailCheck->execute();
        $emailCheck->store_result();

        if ($emailCheck->num_rows > 0) {

            $message = "Email นี้ถูกใช้งานแล้ว";
            $messageType = "warning";

        }

        $emailCheck->close();

    }

    // ============================
    // อัปโหลดรูปโปรไฟล์
    // ============================

    if ($message === "" && isset($_FILES['photo'])) {
        $upload = saveUploadedImage(
            $_FILES['photo'],
            'uploads/profiles/'
        );

        if (!$upload['ok']) {
            $message = $upload['error'];
            $messageType = 'warning';
        } else {
            $photo = $upload['filename'];
        }
    }

    // ============================
    // บันทึกข้อมูลสมาชิก
    // ============================

    if ($message === "") {

        $passwordHash = password_hash(
            $password,
            PASSWORD_DEFAULT
        );

        $role = "member";

        $sql = "
            INSERT INTO members
            (
                student_id,
                prefix,
                first_name,
                last_name,
                gender,
                faculty,
                major,
                graduation_year,
                phone,
                email,
                address,
                workplace,
                position,
                password,
                role,
                photo
            )
            VALUES
            (
                ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
            )
        ";

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

        if (!$stmt) {

            $message = "ไม่สามารถเตรียมคำสั่งบันทึกข้อมูลได้";
            $messageType = "danger";

        } else {

            $stmt->bind_param(
                "ssssssssssssssss",
                $student_id,
                $prefix,
                $first_name,
                $last_name,
                $gender,
                $faculty,
                $major,
                $graduation_year,
                $phone,
                $email,
                $address,
                $workplace,
                $position,
                $passwordHash,
                $role,
                $photo
            );

            if ($stmt->execute()) {

                $message = "สมัครสมาชิกเรียบร้อยแล้ว";
                $messageType = "success";

                $_POST = [];

            } else {

                error_log('Member registration failed: ' . $stmt->error);
                $message = "เกิดข้อผิดพลาดในการสมัครสมาชิก กรุณาลองใหม่อีกครั้ง";
                $messageType = "danger";

            }

            $stmt->close();

        }

    }

}
?>
<!DOCTYPE html>
<html lang="th">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>สมัครสมาชิกศิษย์เก่า</title>

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet">

    <link rel="stylesheet" href="<?= BASE_URL ?>/css/style.css">

</head>

<body>

<?php 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($message!=""): ?>

<div class="alert alert-<?= $messageType; ?>">

<?= $message; ?>

</div>

<?php endif; ?>

<?php if($messageType=="success"): ?>

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

<a href="login.php" class="btn btn-success">

เข้าสู่ระบบ

</a>

</div>

<?php endif; ?>

<form method="post" enctype="multipart/form-data">
    <input type="hidden" name="csrf_token" value="<?= htmlspecialchars(csrfToken()) ?>">

<div class="card shadow">

<div class="card-body">

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

<div
class="rounded-circle bg-secondary text-white
d-inline-flex justify-content-center align-items-center shadow"
style="width:170px;height:170px;font-size:60px;">

👤

</div>

</div>

<div class="mb-4">

<label class="form-label fw-bold">

📷 รูปโปรไฟล์

</label>

<input
type="file"
name="photo"
class="form-control"
accept=".jpg,.jpeg,.png,image/jpeg,image/png">

<small class="text-muted">

รองรับไฟล์ JPG, JPEG และ PNG
(ไม่เกิน 2 MB)

</small>

</div>

<div class="row">

<div class="col-md-4 mb-3">

<label class="form-label">

รหัสนักศึกษา *

</label>

<input
type="text"
name="student_id"
class="form-control"
maxlength="20"
required
autocomplete="off"
placeholder="กรอกรหัสนักศึกษา"
value="<?= htmlspecialchars($_POST['student_id'] ?? '') ?>">

</div>

<div class="col-md-2 mb-3">

<label class="form-label">

คำนำหน้า *

</label>

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

<option value="">เลือก</option>

<option value="นาย" <?= (($_POST['prefix'] ?? '')=="นาย")?"selected":""; ?>>นาย</option>

<option value="นาง" <?= (($_POST['prefix'] ?? '')=="นาง")?"selected":""; ?>>นาง</option>

<option value="นางสาว" <?= (($_POST['prefix'] ?? '')=="นางสาว")?"selected":""; ?>>นางสาว</option>

<option value="พระ" <?= (($_POST['prefix'] ?? '')=="พระ")?"selected":""; ?>>พระ</option>

<option value="สามเณร" <?= (($_POST['prefix'] ?? '')=="สามเณร")?"selected":""; ?>>สามเณร</option>

</select>

</div>

<div class="col-md-3 mb-3">

<label class="form-label">

ชื่อ *

</label>

<input
type="text"
name="first_name"
class="form-control"
required
value="<?= htmlspecialchars($_POST['first_name'] ?? '') ?>">

</div>

<div class="col-md-3 mb-3">

<label class="form-label">

นามสกุล *

</label>

<input
type="text"
name="last_name"
class="form-control"
required
value="<?= htmlspecialchars($_POST['last_name'] ?? '') ?>">

</div>

</div>

<div class="row">

<div class="col-md-3 mb-3">

<label class="form-label">

เพศ *

</label>

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

<option value="">เลือกเพศ</option>

<option value="ชาย" <?= (($_POST['gender'] ?? '')=="ชาย")?"selected":""; ?>>ชาย</option>

<option value="หญิง" <?= (($_POST['gender'] ?? '')=="หญิง")?"selected":""; ?>>หญิง</option>

<option value="อื่น ๆ" <?= (($_POST['gender'] ?? '')=="อื่น ๆ")?"selected":""; ?>>อื่น ๆ</option>

</select>

</div>

<div class="col-md-5 mb-3">

<label class="form-label">

คณะ

</label>

<input
type="text"
name="faculty"
class="form-control"
value="คณะสังคมศาสตร์"
readonly>

</div>

<div class="col-md-4 mb-3">

<label class="form-label">

สาขาวิชา

</label>

<select
name="major"
class="form-select">

<option value="">เลือกสาขา</option>

<option value="รัฐศาสตร์" <?= (($_POST['major'] ?? '')=="รัฐศาสตร์")?"selected":""; ?>>รัฐศาสตร์</option>

<option value="การจัดการเชิงพุทธ" <?= (($_POST['major'] ?? '')=="การจัดการเชิงพุทธ")?"selected":""; ?>>การจัดการเชิงพุทธ</option>

</select>

</div>

</div>
<div class="row">

    <div class="col-md-4 mb-3">

        <label class="form-label">

            ปีที่สำเร็จการศึกษา

        </label>

        <input
            type="number"
            name="graduation_year"
            class="form-control"
            min="2500"
            max="2700"
            value="<?= htmlspecialchars($_POST['graduation_year'] ?? '') ?>">

    </div>

    <div class="col-md-4 mb-3">

        <label class="form-label">

            เบอร์โทรศัพท์

        </label>

        <input
            type="text"
            name="phone"
            class="form-control"
            maxlength="20"
            pattern="[0-9+ -]*"
            value="<?= htmlspecialchars($_POST['phone'] ?? '') ?>">

    </div>

    <div class="col-md-4 mb-3">

        <label class="form-label">

            Email

        </label>

        <input
            type="email"
            name="email"
            class="form-control"
            maxlength="100"
            autocomplete="email"
            value="<?= htmlspecialchars($_POST['email'] ?? '') ?>">

    </div>

</div>

<div class="mb-3">

    <label class="form-label">

        ที่อยู่

    </label>

    <textarea
        name="address"
        rows="4"
        class="form-control"><?= htmlspecialchars($_POST['address'] ?? '') ?></textarea>

</div>

<div class="row">

    <div class="col-md-6 mb-3">

        <label class="form-label fw-bold">

📷 รูปโปรไฟล์

<label class="form-label fw-bold">
    รหัสผ่าน
</label>

        <input
            type="password"
            name="password"
            class="form-control"
            minlength="8"
            maxlength="50"
            required
            placeholder="อย่างน้อย 8 ตัวอักษร">

    </div>

</div>

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

    <button
        type="submit"
        class="btn btn-primary btn-lg">

        <i class="fa fa-user-plus"></i>

        สมัครสมาชิก

    </button>

    <a
        href="index.php"
        class="btn btn-secondary btn-lg">

        ยกเลิก

    </a>

</div>

</div>

</div>

</form>

</div>

</section>

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

</body>

</html>
