Path : /var/www/html/work123/
File Upload :
Current File : /var/www/html/work123/process.php

<?php
require_once 'config.php';
require_once 'security.php';
require_once 'functions.php';

// รับค่า Action จากทั้ง GET และ POST [cite: 2025-07-09]
$action = isset($_GET['action']) ? $_GET['action'] : (isset($_POST['action']) ? $_POST['action'] : '');

if ($action == 'login') {
    $user = mysqli_real_escape_string($conn, $_POST['username']);
    $pass = $_POST['password'];
    
    $sql = "SELECT * FROM users WHERE username = '$user'";
    $res = mysqli_query($conn, $sql);
    $row = mysqli_fetch_assoc($res);
    
    // ตรวจสอบรหัสผ่านโดยใช้ฟังก์ชันถอดรหัส [cite: 2025-07-09]
    if ($row && decrypt_password($row['password']) == $pass) {
        $_SESSION['u_id'] = $row['u_id'];
        $_SESSION['fullname'] = $row['fullname'];
        $_SESSION['type'] = $row['type'];
        
        if ($row['type'] == 'admin') {
            header("Location: admin_dashboard.php");
        } else {
            header("Location: user_dashboard.php");
        }
    } else {
        header("Location: index.php?error=1");
    }
    exit();
}

if ($action == 'save_work') {
    $att_id = (int)$_POST['att_id'];
    // รับค่าสถานที่ปฏิบัติงาน
    $work_location = isset($_POST['work_location']) ? mysqli_real_escape_string($conn, $_POST['work_location']) : '';
    
    if ($work_location == 'office') {
        // หากเลือกสำนักงาน ให้บันทึกข้อความตายตัว
        $detail = "ปฏิบัติงานในสำนักงาน";
    } else {
        // หากเลือกบ้าน ให้รับค่าจาก Textarea
        $detail = mysqli_real_escape_string($conn, $_POST['work_detail']);
    }
    
    // ตรวจสอบความถูกต้องของข้อมูลก่อนบันทึก
    if (!empty($work_location) && !empty($att_id)) {
        $sql = "UPDATE attendance SET 
                work_location = '$work_location', 
                work_detail = '$detail' 
                WHERE att_id = '$att_id'";
                
        if (mysqli_query($conn, $sql)) {
            header("Location: user_dashboard.php?save=success");
        } else {
            // กรณี Error ให้แสดงข้อความเพื่อตรวจสอบ
            die("Error updating record: " . mysqli_error($conn));
        }
    } else {
        header("Location: user_dashboard.php?error=missing_data");
    }
    exit();
}

// --- การลงเวลาปฏิบัติงาน (User) [cite: 2025-07-09] ---
if ($action == 'checkin') {
    $u_id = $_SESSION['u_id'];
    $date = date('Y-m-d');
    $time = date('H:i:s');
    
    // ตรวจสอบว่าวันนี้ลงเวลาไปหรือยังเพื่อป้องกันข้อมูลซ้ำ
    $check = mysqli_query($conn, "SELECT * FROM attendance WHERE u_id = '$u_id' AND att_date = '$date'");
    if (mysqli_num_rows($check) == 0) {
        mysqli_query($conn, "INSERT INTO attendance (u_id, att_date, time_in) VALUES ('$u_id', '$date', '$time')");
    }
    header("Location: user_dashboard.php");
    exit();
}

if ($action == 'save_work') {
    $att_id = (int)$_POST['att_id'];
    $detail = mysqli_real_escape_string($conn, $_POST['work_detail']);
    
    mysqli_query($conn, "UPDATE attendance SET work_detail = '$detail' WHERE att_id = '$att_id'");
    header("Location: user_dashboard.php");
    exit();
}

if ($action == 'checkout') {
    $att_id = (int)$_POST['att_id'];
    $time_out = $_POST['time_out'];
    
    mysqli_query($conn, "UPDATE attendance SET time_out = '$time_out' WHERE att_id = '$att_id'");
    header("Location: user_dashboard.php");
    exit();
}

// --- จัดการบุคลากร (Admin) [cite: 2025-07-09] ---
if ($action == 'add_user') {
    $username = mysqli_real_escape_string($conn, $_POST['username']);
    $password = encrypt_password($_POST['password']);
    $fullname = mysqli_real_escape_string($conn, $_POST['fullname']);
    $position = mysqli_real_escape_string($conn, $_POST['position']);
    $g_id = (int)$_POST['g_id'];
    $p_id = (int)$_POST['p_id']; // ประเภทบุคลากร
    $type = $_POST['type'];
    
    $sig_name = "";
    if ($_FILES['signature']['name']) {
        $ext = pathinfo($_FILES['signature']['name'], PATHINFO_EXTENSION);
        $sig_name = "sig_" . time() . "." . $ext;
        move_uploaded_file($_FILES['signature']['tmp_name'], "uploads/" . $sig_name);
    }
    
    $sql = "INSERT INTO users (username, password, fullname, position, g_id, p_id, type, signature) 
            VALUES ('$username', '$password', '$fullname', '$position', '$g_id', '$p_id', '$type', '$sig_name')";
    mysqli_query($conn, $sql);
    header("Location: admin_users.php");
    exit();
}

if ($action == 'edit_user') {
    $u_id = (int)$_POST['u_id'];
    $fullname = mysqli_real_escape_string($conn, $_POST['fullname']);
    $position = mysqli_real_escape_string($conn, $_POST['position']);
    $g_id = (int)$_POST['g_id'];
    $p_id = (int)$_POST['p_id'];
    $type = $_POST['type'];
    
    mysqli_query($conn, "UPDATE users SET fullname='$fullname', position='$position', g_id='$g_id', p_id='$p_id', type='$type' WHERE u_id='$u_id'");

    if (!empty($_POST['password'])) {
        $password = encrypt_password($_POST['password']);
        mysqli_query($conn, "UPDATE users SET password='$password' WHERE u_id='$u_id'");
    }

    if ($_FILES['signature']['name']) {
        $old = mysqli_fetch_assoc(mysqli_query($conn, "SELECT signature FROM users WHERE u_id='$u_id'"));
        if ($old['signature'] && file_exists("uploads/".$old['signature'])) unlink("uploads/".$old['signature']);

        $ext = pathinfo($_FILES['signature']['name'], PATHINFO_EXTENSION);
        $sig_name = "sig_" . time() . "." . $ext;
        move_uploaded_file($_FILES['signature']['tmp_name'], "uploads/" . $sig_name);
        mysqli_query($conn, "UPDATE users SET signature='$sig_name' WHERE u_id='$u_id'");
    }
    header("Location: admin_users.php");
    exit();
}

if ($action == 'del_user') {
    $u_id = secure_id($_GET['id']);
    $res = mysqli_query($conn, "SELECT signature FROM users WHERE u_id = '$u_id'");
    $row = mysqli_fetch_assoc($res);
    if ($row['signature'] && file_exists("uploads/".$row['signature'])) unlink("uploads/".$row['signature']);
    
    mysqli_query($conn, "DELETE FROM users WHERE u_id = '$u_id'");
    header("Location: admin_users.php");
    exit();
}

// --- จัดการกลุ่มงาน [cite: 2025-07-09] ---
if ($action == 'add_group') {
    $g_name = mysqli_real_escape_string($conn, $_POST['g_name']);
    mysqli_query($conn, "INSERT INTO `groups` (g_name) VALUES ('$g_name')");
    header("Location: admin_groups.php");
    exit();
}

if ($action == 'del_group') {
    $g_id = secure_id($_GET['id']);
    mysqli_query($conn, "DELETE FROM `groups` WHERE g_id = '$g_id'");
    header("Location: admin_groups.php");
    exit();
}

// --- จัดการประเภทบุคลากร [cite: 2025-07-09] ---
if ($action == 'add_type') {
    $p_name = mysqli_real_escape_string($conn, $_POST['p_name']);
    mysqli_query($conn, "INSERT INTO personnel_types (p_name) VALUES ('$p_name')");
    header("Location: admin_types.php");
    exit();
}

if ($action == 'edit_type') {
    $p_id = (int)$_POST['p_id'];
    $p_name = mysqli_real_escape_string($conn, $_POST['p_name']);
    mysqli_query($conn, "UPDATE personnel_types SET p_name='$p_name' WHERE p_id='$p_id'");
    header("Location: admin_types.php");
    exit();
}

if ($action == 'del_type') {
    $id = secure_id($_GET['id']);
    mysqli_query($conn, "DELETE FROM personnel_types WHERE p_id='$id'");
    header("Location: admin_types.php");
    exit();
}

if ($action == 'logout') {
    session_destroy();
    header("Location: index.php");
    exit();
}

?>