HEX
Server: LiteSpeed
System: Linux server214.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User: bigisxfd (746)
PHP: 8.4.15
Disabled: NONE
Upload Files
File: /home/bigisxfd/public_html/cowork/advance_booking.php
<?php																																										

// Include necessary files
include_once("header.php");
include_once("sidebar.php");
?>

<style>
    /* Style for the modal */
.modal {
    display: none; /* Hide the modal by default */
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.4); /* Semi-transparent background */
    z-index: 1;
}

.modal-content {
    background-color: white;
    padding: 20px;
    border-radius: 5px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 500px;
}

/* Styling for form elements */
.form-group {
    margin-bottom: 15px;
}

label {
    display: block;
    margin-bottom: 5px;
    font-weight: bold;
}

input[type="text"],
input[type="email"],
input[type="number"],
input[type="date"] {
    width: 100%;
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    box-sizing: border-box;
}

button[type="submit"] {
    background-color: #007bff;
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
}

/* Styling for the "Add Member" button */
#addMemberButton {
    background-color: #28a745;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.2s;
}

#addMemberButton:hover {
    background-color: #218838;
}


/* Styling for the dropdown */
#member {
    width: 70%;
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    box-sizing: border-box;
}

/* Styling for the submit button */
input[type="submit"] {
    background-color: #007bff;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.2s;
}

input[type="submit"]:hover {
    background-color: #0056b3;
}

</style>

<section>
    <div class="column">
    <?php
// Check if there's an error parameter in the URL
if (isset($_GET['error'])) {
    $errorMessage = "";

    // Determine the error based on the parameter
    switch ($_GET['error']) {
        case "active_booking":
            $errorMessage = "You already have an active booking. Please wait until your current booking ends.";
            break;
        case "query_preparation":
            $errorMessage = "Error during query preparation. Please try again.";
            break;
        case "query_execution":
            $errorMessage = "Error during query execution. Please try again.";
            break;
        default:
            $errorMessage = "An error occurred. Please try again.";
    }

    // Display the error message
    echo "<p class='error-message'>$errorMessage</p>";
}
?>

<form action="process_advance.php" method="post">
    <div>

<select name="member" id="member" required style="width: 80%;">
    <option value="" disabled selected>Select Existing Member</option> <!-- Placeholder option -->
    <?php
    // Fetch and populate member options
    $members = getExistingMembers(); // Define this function to fetch members
    foreach ($members as $member) {
        echo "<option value='{$member['memberid']}'>{$member['firstname']} {$member['lastname']}</option>";
    }
    ?>
</select>
<!-- Initialize Select2 -->
<script>
    $(document).ready(function() {
        $('#member').select2({
            placeholder: "Select Existing Member",
            allowClear: true
        });
    });
</script>
        <button type="button" id="addMemberButton" style="width: 19%;">Add Member</button>
    </div>
<div>
    <br>
<!-- Include Select2 CSS -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet" />

<!-- Dropdown with inline search -->
<select name="package" id="package" style="width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box;" required>
    <option value="" disabled selected>Select Package</option>
    <?php
    // Fetch and populate package options
    $packages = getExistingPackages(); // Define this function to fetch packages

    // Define the membership categories (category_id => category_name)
    $categories = [
        1 => 'Common',
        2 => 'Dedicated',
        3 => 'Board',
        4 => 'Whole Venue'
        // Add more categories as needed
    ];

    foreach ($packages as $package) {
        $categoryId = $package['category'];
        $categoryName = isset($categories[$categoryId]) ? $categories[$categoryId] : 'Unknown Category';
        echo "<option value='{$package['packageid']}'>{$package['packagename']} / {$package['price']} ({$categoryName})</option>";
    }
    ?>
</select>

<!-- Include jQuery and Select2 JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>

<!-- Initialize Select2 -->
<script>
    $(document).ready(function() {
        $('#package').select2({
            placeholder: "Select Package",
            allowClear: true
        });
    });
</script>
</div>
    <br>
    <!-- New Start Date field for advanced booking -->
    <div>
        <label for="start_date">Start Date:</label>
        <!-- You can also use type="date" if you only need the date (no time). -->
        <input 
            type="datetime-local" 
            name="start_date" 
            id="start_date" 
            required
            style="padding: 10px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; width:100%;">
    </div>
    <div>
        <input type="submit" value="Book">
    </div>
</form>

<div id="addMemberModal" class="modal" style="display: none;">
    <div class="modal-content">
        <h2>Add Member</h2>
        <form id="addMemberForm">
            <div class="form-group">
                  <label for="rfid">Member ID:</label>
                   <input type="text" id="rfid" name="rfid">
            </div>
            <div class="form-group">
                <label for="firstname">First Name:</label>
                <input type="text" id="firstname" name="firstname" required>
            </div>
            <div class="form-group">
                <label for="lastname">Last Name:</label>
                <input type="text" id="lastname" name="lastname" required>
            </div>
            <div class="form-group">
                <label for="email">Email:</label>
                <input type="email" id="email" name="email" >
            </div>
            <div class="form-group">
                <label for="number">Number:</label>
                <input type="text" id="number" name="number" >
            </div>
            <div class="form-group">
                <label for="birthday">Birthday:</label>
                <input type="date" id="birthday" name="birthday" >
            </div>
            <div class="form-group">
                <button type="submit">Add Member</button>
            </div>
        </form>
    </div>
</div>


<script>

    const addMemberButton = document.getElementById('addMemberButton');
    const addMemberModal = document.getElementById('addMemberModal');
    const addMemberForm = document.getElementById('addMemberForm');

    // Show modal when "Add Member" button is clicked
    addMemberButton.addEventListener('click', function() {
        addMemberModal.style.display = 'block';
    });

    // Hide modal when clicking outside of the modal content
    window.addEventListener('click', function(event) {
        if (event.target === addMemberModal) {
            addMemberModal.style.display = 'none';
        }
    });

// Handle form submission
addMemberForm.addEventListener('submit', function(event) {
    event.preventDefault(); // Prevent the default form submission

    // Get form input values including RFID
    const firstname = addMemberForm.querySelector('#firstname').value;
    const lastname = addMemberForm.querySelector('#lastname').value;
    const email = addMemberForm.querySelector('#email').value;
    const number = addMemberForm.querySelector('#number').value;
    const birthday = addMemberForm.querySelector('#birthday').value;
    const rfid = addMemberForm.querySelector('#rfid').value;

    // Perform the form submission using AJAX
    const xhr = new XMLHttpRequest();
    xhr.open('POST', 'add_member_ajax.php'); // Adjust the URL
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            // Handle the response (if needed)

            // Get the ID of the newly added member from the response
            const newMemberId = xhr.responseText;

            // Create a new option element for the newly added member
            const newMemberOption = document.createElement('option');
            newMemberOption.value = newMemberId; // The ID of the newly added member
            newMemberOption.text = `${firstname} ${lastname}`; // Display name
            newMemberOption.selected = true; // Select the new member

            // Add the new option to the dropdown
            memberDropdown.appendChild(newMemberOption);

            // Hide the modal after successful submission
            addMemberModal.style.display = 'none';
        }
    };

    // Send the form data including RFID
    const formData = `firstname=${firstname}&lastname=${lastname}&email=${email}&number=${number}&birthday=${birthday}&rfid=${rfid}`;
    xhr.send(formData);
    });


    const memberDropdown = document.getElementById('member');
    let optionsArray = Array.from(memberDropdown.options);

    memberDropdown.addEventListener('input', function () {
        const searchValue = this.value.toLowerCase();

        optionsArray.forEach(option => {
            const optionText = option.text.toLowerCase();
            option.style.display = optionText.includes(searchValue) ? '' : 'none';
        });
    });
</script>



 </div>      
</section>

</body>
</html>