X7ROOT File Manager
Current Path:
/home/hamdjcne/app.hamdalillahitravel.com/app/Views
home
/
hamdjcne
/
app.hamdalillahitravel.com
/
app
/
Views
/
ðŸ“
..
📄
.DS_Store
(10 KB)
ðŸ“
accounts
ðŸ“
activity
ðŸ“
auth
📄
dashboard.php
(48.48 KB)
📄
dashboard_form.php
(4.66 KB)
ðŸ“
designs
ðŸ“
errors
ðŸ“
notification
ðŸ“
order
ðŸ“
service
ðŸ“
setting
ðŸ“
tour
ðŸ“
wallets
📄
welcome_message.php
(17.88 KB)
Editing: dashboard.php
<?php use App\Models\Crud; $this->Crud = new Crud(); ?> <?= $this->extend('designs/backend'); ?> <?= $this->section('title'); ?> <?= $title; ?> <?= $this->endSection(); ?> <?= $this->section('content'); ?> <!--begin::Wrapper--> <div class="app-wrapper d-flex " style="margin-left: 1px; "> <style> .tour-card { min-height: 100%; } .tour-image { width: 100%; height: 180px; object-fit: cover; } .text-truncate { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .tns-item { padding: 0 10px; /* Add horizontal spacing between cards */ box-sizing: border-box; } </style> <!--begin::Wrapper container--> <div class="app-container container-fluid "> <!--begin::Main--> <div class="app-main flex-column flex-row-fluid " id="kt_app_main"> <!--begin::Content wrapper--> <div class="d-flex flex-column flex-column-fluid"> <!--begin::Toolbar--> <div id="kt_app_toolbar" class="app-toolbar "> <!--begin::Toolbar container--> <div class="d-flex flex-stack flex-row-fluid"> <!--begin::Toolbar wrapper--> <div class="d-flex flex-column flex-row-fluid"> <!--begin::Breadcrumb--> <ul class="breadcrumb breadcrumb-separatorless fw-semibold mb-3"> <!--begin::Item--> <li class="breadcrumb-item text-gray-600 fw-bold lh-1"> <a href="<?= site_url(); ?>" class="text-white text-hover-success"> <i class="ki-duotone ki-home text-gray-500 fs-2"></i> </a> </li> <!--end::Item--> <!--begin::Item--> <li class="breadcrumb-item"> <i class="ki-duotone ki-right fs-3 text-gray-500 mx-n1"></i> </li> <!--end::Item--> <!--begin::Item--> <li class="breadcrumb-item text-gray-600 fw-bold lh-1"> Dashboard </li> <!--end::Item--> </ul> <div class="page-title d-flex align-items-center me-3"> <!--begin::Title--> <h1 class="page-heading d-flex text-gray-900 fw-bolder fs-1 flex-column justify-content-center my-0"> Hello, <?=ucwords($name); ?> </h1><br> <!--end::Title--> </div> </div> <!--end::Toolbar wrapper--> <!--begin::Actions--> <div class="d-flex align-items-center gap-3 gap-lg-5"> <input class="form-control form-control-solid w-100 mw-250px element3" placeholder="Pick date range" id="dashboard_date" /> </div> <!--end::Actions--> </div> <!--end::Toolbar container--> </div> <!--end::Toolbar--> <!--begin::Content--> <div class="d-flex flex-column flex-column-fluid"> <!--begin::Service Request Section--> <div class="card mt-5"> <div class="card-header"> <h3 class="card-title fw-bold">Request a Service</h3> </div> <div class="card-body"> <!--begin::Service Type Buttons--> <div class="d-flex flex-wrap gap-3 justify-content-left mb-5"> <div class="d-flex flex-wrap gap-3 justify-content-center mb-5"> <button type="button" class="btn btn-success fw-bold" onclick="showServiceForm('flight')"> <i class="fas fa-plane-departure me-2"></i> Flight </button> <button type="button" class="btn btn-info fw-bold" onclick="showServiceForm('hotel')"> <i class="fas fa-hotel me-2"></i> Hotel </button> <button type="button" class="btn btn-warning fw-bold" onclick="showServiceForm('hajj')"> <i class="fas fa-kaaba me-2"></i> Hajj </button> <button type="button" class="btn btn-success fw-bold" onclick="showServiceForm('tour')"> <i class="fas fa-route me-2"></i> Tour </button> </div> </div> <!--end::Service Type Buttons--> <!--begin::Service Forms--> <div id="serviceFormsContainer"> <!-- Flight Form --> <form id="flightForm" class="service-form" style="display:none;"> <h4 class="mb-3 fw-bold">Flight Booking Request</h4> <div class="row g-3"> <!-- Trip Type --> <div class="col-md-6 col-sm-6 mb-3"> <label class="form-label">Trip Type</label> <select class="form-select js-select2" data-control="select2" name="trip_type" id="trip_type_select"> <option value="One Way">One Way</option> <option value="Round Trip">Round Trip</option> </select> </div> <!-- Travel Class --> <div class="col-md-6 col-sm-6 mb-3"> <label class="form-label">Travel Class</label> <select class="form-select js-select2" data-control="select2" name="travel_class"> <option value="Economy">Economy</option> <option value="Premium Economy">Premium Economy</option> <option value="Business">Business</option> <option value="First Class">First Class</option> </select> </div> <!-- Departure Airport --> <div class="col-md-6 col-sm-12 mb-3 position-relative"> <label class="form-label">Departure Airport (From)</label> <input type="text" class="form-control" id="from_airport" name="from_city" placeholder="Start typing departure airport..." autocomplete="off" required> <div id="from_airport_results" class="list-group position-absolute w-100 z-index-3" style="display:none;"></div> </div> <!-- Destination Airport --> <div class="col-md-6 col-sm-12 mb-3 position-relative"> <label class="form-label">Destination Airport (To)</label> <input type="text" class="form-control" id="to_airport" name="to_city" placeholder="Start typing destination airport..." autocomplete="off" required> <div id="to_airport_results" class="list-group position-absolute w-100 z-index-3" style="display:none;"></div> </div> <!-- Departure Date --> <div class="col-md-6 col-sm-6 mb-3"> <label class="form-label">Departure Date</label> <input type="text" class="form-control departure_date" name="departure_date" id="departure_date" required> </div> <!-- Return Date (conditionally shown) --> <div class="col-md-3 col-sm-6 mb-3" id="return_date_block"> <label class="form-label">Return Date</label> <input type="text" class="form-control return_date" name="return_date" id="return_date"> </div> <!-- Passenger Counts --> <div class="col-md-2 col-sm-6 mb-3"> <label class="form-label">Adults (12+)</label> <input type="number" class="form-control" name="adults" min="1" value="1" required> </div> <div class="col-md-2 col-sm-6 mb-3"> <label class="form-label">Children (2–11)</label> <input type="number" class="form-control" name="children" min="0" value="0"> </div> <div class="col-md-2 col-sm-6 mb-3"> <label class="form-label">Infants (<2)</label> <input type="number" class="form-control" name="infants" min="0" value="0"> </div> </div> <div class="col-12 my-5 text-center"> <button type="button" class="btn btn-success">Submit Flight Request</button> </div> <div class="col-12" id="flight_msg"></div> </form> <!-- Hotel Form --> <form id="hotelForm" class="service-form" style="display: none;"> <h4 class="mb-4 fw-bold">Add Hotel Request</h4> <div class="row g-3"> <!-- Country --> <div class="col-md-6 mb-3"> <label class="form-label fw-semibold">Country</label> <select name="country_id" data-control="select2" id="country_id" class="form-select form-select-solid" required> <option value="">Select Country</option> <?php $countries = $this->Crud->read_order('country', 'name', 'asc'); foreach ($countries as $c) { echo "<option value='{$c->id}'>{$c->name}</option>"; } ?> </select> </div> <!-- City --> <div class="col-md-6 mb-3"> <label class="form-label fw-semibold">City</label> <select name="city_id" data-control="select2" id="city_id" class="form-select form-select-solid" required> <option value="">Select City</option> </select> </div> <!-- Check-in Date --> <div class="col-md-6 mb-3"> <label class="form-label fw-semibold">Check-in Date</label> <input type="text" class="form-control kt_daterangepicker hotel_date" name="check_in" id="check_in" placeholder="Select Check-in Date" required> </div> <!-- Check-out Date --> <div class="col-md-6 mb-3"> <label class="form-label fw-semibold">Check-out Date</label> <input type="text" class="form-control kt_daterangepicker hotel_date" name="check_out" id="check_out" placeholder="Select Check-out Date" required> </div> <!-- Rooms, Guests --> <div class="col-md-3 mb-3"> <label class="form-label fw-semibold">Rooms</label> <input type="number" name="rooms" class="form-control form-control-solid" value="1" min="1" required> </div> <div class="col-md-3 mb-3"> <label class="form-label fw-semibold">Adults</label> <input type="number" name="adults" class="form-control form-control-solid" value="1" min="1" required> </div> <div class="col-md-3 mb-3"> <label class="form-label fw-semibold">Children</label> <input type="number" name="children" class="form-control form-control-solid" value="0" min="0"> </div> <div class="col-md-3 mb-3"> <label class="form-label fw-semibold">Infants</label> <input type="number" name="infants" class="form-control form-control-solid" value="0" min="0"> </div> <!-- Special Requests --> <div class="col-md-12 mt-2"> <label class="form-label fw-semibold">Special Requests</label> <textarea name="special_requests" class="form-control form-control-solid" rows="3"></textarea> </div> </div> <div class="text-center mt-4"> <button type="submit" class="btn btn-success px-5"> <i class="fas fa-paper-plane me-1"></i> Submit </button> </div> </form> <!-- Hajj Form --> <form id="hajjForm" class="service-form" style="display:none;"> <h4 class="mb-4 fw-bold">Hajj/Umrah Application Request</h4> <div class="row g-3"> <!-- Travel Type --> <div class="col-md-6 mb-3"> <label class="form-label fw-semibold">Travel Type</label> <select name="travel_type" class="form-select form-select-solid" required> <option value="">Select</option> <option value="hajj">Hajj</option> <option value="umrah">Umrah</option> </select> </div> <!-- Preferred Package --> <div class="col-md-6 mb-3"> <label class="form-label fw-semibold">Preferred Package</label> <select name="preferred_package" class="form-select form-select-solid" required> <option value="">Select</option> <option value="economy">Economy</option> <option value="standard">Standard</option> <option value="premium">Premium</option> </select> </div> <!-- Departure City --> <div class="col-md-6 mb-3"> <label class="form-label fw-semibold">Departure City</label> <input type="text" class="form-control form-control-solid" name="departure_city" required> </div> <!-- Travel Date --> <div class="mb-3 col-md-6"> <label class="form-label fw-semibold">Travel Date</label> <input type="text" class="form-control kt_daterangepicker" name="travel_date" id="travel_date" placeholder="Select Date" required> </div> <!-- Passport Number --> <div class="mb-3 col-md-6"> <label class="form-label fw-semibold">Passport Number</label> <input type="text" class="form-control form-control-solid" name="passport_number" required> </div> <!-- Nationality --> <div class="mb-3 col-md-6"> <label class="form-label fw-semibold">Nationality</label> <input type="text" class="form-control form-control-solid" name="nationality" required> </div> <!-- Passport Photo Upload --> <div class="mb-3 col-md-12"> <label class="form-label fw-semibold">Passport Photo (JPG/PNG)</label> <input type="file" class="form-control form-control-solid" name="passport_photo" accept=".jpg,.jpeg,.png" required> </div> <!-- Emergency Contact Name --> <div class="mb-3 col-md-6"> <label class="form-label fw-semibold">Emergency Contact Name</label> <input type="text" class="form-control form-control-solid" name="emergency_contact_name" required> </div> <!-- Emergency Phone --> <div class="mb-3 col-md-3"> <label class="form-label fw-semibold">Emergency Phone</label> <input type="text" class="form-control form-control-solid" name="emergency_contact_phone" required> </div> <!-- Emergency Relationship --> <div class="mb-3 col-md-3"> <label class="form-label fw-semibold">Relationship</label> <input type="text" class="form-control form-control-solid" name="emergency_contact_relationship" required> </div> <!-- Medical Conditions --> <div class="mb-3 col-md-6"> <label class="form-label fw-semibold">Medical Conditions</label> <textarea class="form-control form-control-solid" name="medical_conditions" rows="2" placeholder="If any..."></textarea> </div> <!-- Special Assistance --> <div class="mb-3 col-md-6"> <label class="form-label fw-semibold">Special Assistance Needed?</label> <textarea class="form-control form-control-solid" name="special_assistance" rows="2" placeholder="Wheelchair, guide, etc..."></textarea> </div> </div> <div class="text-center mt-4"> <button type="submit" class="btn btn-success px-5"> <i class="fas fa-paper-plane me-1"></i> Submit Request </button> </div> </form> <!-- Tour Booking Section --> <div id="tourForm" class="service-form" style="display:none;"> <h4 class="mb-4 fw-bold">Tour Packages</h4> <!-- Filter Section --> <div class="row mb-4"> <div class="col-md-4 mb-2"> <select id="filter_location" class="form-select form-select-solid"> <option value="">All Locations</option> <!-- Dynamically populate or hard-code locations --> <option value="Morocco">Morocco</option> <option value="Lagos">Lagos</option> </select> </div> <div class="col-md-4 mb-2"> <input type="date" id="filter_date" class="form-control form-control-solid" placeholder="Select Date"> </div> <div class="col-md-4 mb-2"> <button class="btn btn-primary w-100" id="filter_btn">Apply Filters</button> </div> </div> <!-- Tour Slider Section (Corrected) --> <div class="row tns my-4" style="direction: ltr"> <div data-tns="true" data-tns-nav-position="bottom" data-tns-mouse-drag="true" data-tns-controls="false" id="tour_slider_container"> <!-- AJAX content will load here --> </div> </div> <form id="tourFormz"> <div class="row g-3 booking-form" style="display:none;"> <hr class="my-15"> <!-- Tour Booking Request Form --> <h4 class="mb-4 fw-bold">Submit a Tour Booking Request</h4> <input type="hidden" name="tour_id" id="tour_id" value=""> <div class="col-md-6"> <label class="form-label fw-semibold">Date:</label> <input type="text" class="form-control kt_daterangepicker" name="start_date" required> </div> <div class="col-md-3"> <label class="form-label fw-semibold">Adults:</label> <input type="number" class="form-control form-control-solid" name="adults" value="1" min="1" required> </div> <div class="col-md-3"> <label class="form-label fw-semibold">Children:</label> <input type="number" class="form-control form-control-solid" name="children" value="0" min="0"> </div> <div class="col-md-12"> <label class="form-label fw-semibold">Special Requests:</label> <textarea class="form-control form-control-solid" name="special_requests" rows="3"></textarea> </div> <div class="col-md-12 text-center mt-4"> <button type="submit" class="btn btn-success px-5"> <i class="fas fa-paper-plane me-1"></i> Submit Request </button> </div> </div> </form> </div> </div> <!--end::Service Forms--> <div id="serviceRequestResponse" class="mt-4"></div> </div> </div> <!--end::Service Request Section--> <!--begin::Invoice List Section--> <div class="card mt-10"> <div class="card-header"> <h3 class="card-title fw-bold">Invoices</h3> </div> <div class="card-body"> <div class="table-responsive"> <table class="table table-bordered align-middle table-row-bordered text-gray-700 fs-6 gy-5"> <thead> <tr> <th>Icon</th> <th>Invoice #</th> <th>Amount</th> <th>Method</th> <th>Status</th> <th>Due Date</th> <th>Remark</th> <th>Time</th> </tr> </thead> <tbody id="invoiceList"> <!-- Invoices will be loaded here --> </tbody> </table> </div> </div> </div> <!--end::Invoice List Section--> </div> <!--end::Content--> </div> <!--begin::Footer--> <div id="kt_app_footer" class="app-footer my-5 d-flex flex-column flex-md-row align-items-center flex-center flex-md-stack "> <!--begin::Copyright--> <div class="text-gray-900 order-2 order-md-1"> <span class="text-gray-500 fw-semibold me-1"><?= date('Y'); ?>©</span> </div> <!--end::Copyright--> </div> <!--end::Footer--> </div> </div> <!--end::Wrapper container--> </div> <!--end::Wrapper--> <?= $this->endSection(); ?> <?= $this->section('scripts'); ?> <script>var site_url = '<?php echo site_url(); ?>';</script> <script> $(function () { load(); }); $(document).ready(function () { function loadTourSlider(location = '', date = '') { $.ajax({ url: '<?= site_url("dashboard/records/tour") ?>', type: 'POST', data: { location: location, date: date }, beforeSend: function () { $('#tour_slider_container').html('<div class="text-center p-5">Loading tours...</div>'); }, success: function (response) { $('#tour_slider_container').html(response); // 🛑 First, destroy the old slider instance if it exists if (window.tourSlider && typeof window.tourSlider.destroy === 'function') { window.tourSlider.destroy(); } // ✅ Now initialize AFTER content is in the DOM window.tourSlider = tns({ container: '#tour_slider_container', items: 3, slideBy: 1, autoplay: true, autoplayTimeout: 4000, controls: false, nav: false, autoplayButtonOutput: false, // ✅ Hides the "stop" button nav: true, // ✅ enable nav dots navPosition: 'bottom', // ✅ nav appears below the slider loop: true, responsive: { 0: { items: 1 }, 768: { items: 2 }, 992: { items: 3 } } }); }, error: function () { $('#tour_slider_container').html('<div class="text-danger p-5">Failed to load tours.</div>'); }, complete: function () { $.getScript(site_url + '/assets/js/jsmodal.js'); } }); } // Load on page load loadTourSlider(); // Apply filter $('#filter_btn').click(function () { const location = $('#filter_location').val(); const date = $('#filter_date').val(); loadTourSlider(location, date); }); // Handle form submission $('#tourForm').submit(function (e) { e.preventDefault(); const form = $(this); const submitBtn = form.find('button[type="submit"]'); const originalText = submitBtn.html(); submitBtn.prop('disabled', true).html('<i class="spinner-border spinner-border-sm"></i> Submitting...'); $.ajax({ url: '<?= site_url("dashboard/service/tour") ?>', type: 'POST', data: form.serialize(), dataType: 'json', success: function (response) { if (response.status === 'success') { Swal.fire('Success!', response.message, 'success'); form[0].reset(); } else { Swal.fire('Error', response.message, 'error'); } submitBtn.prop('disabled', false).html(originalText); }, error: function () { Swal.fire('Error', 'Something went wrong. Try again.', 'error'); submitBtn.prop('disabled', false).html(originalText); } }); }); }); $('#country_id').on('change', function () { var countryId = $(this).val(); $('#city_id').html('<option value="">Loading cities...</option>'); $.ajax({ url: '<?= site_url("dashboard/records/load_cities") ?>', method: 'POST', data: { country_id: countryId }, success: function (response) { $('#city_id').html(response); }, error: function () { $('#city_id').html('<option value="">Error loading cities</option>'); } }); }); $('#hajjForm').on('submit', function (e) { e.preventDefault(); const form = $(this)[0]; const formData = new FormData(form); const $btn = $(this).find('button[type="submit"]'); const originalText = $btn.html(); $btn.prop("disabled", true).html('<i class="spinner-border spinner-border-sm"></i> Submitting...'); $.ajax({ url: "<?= site_url('dashboard/service/hajj') ?>", type: "POST", data: formData, contentType: false, processData: false, success: function (response) { if (response.status === 'success') { Swal.fire({ icon: 'success', title: 'Success', text: response.message, timer: 3000, showConfirmButton: false }); $('#hajjForm')[0].reset(); } else { Swal.fire({ icon: 'error', title: 'Error', text: response.message }); } $btn.prop("disabled", false).html(originalText); }, error: function () { Swal.fire({ icon: 'error', title: 'Oops!', text: 'Something went wrong. Please try again.' }); $btn.prop("disabled", false).html(originalText); } }); }); $(document).ready(function () { function toggleReturnField() { var tripType = $('#trip_type_select').val(); if (tripType === 'One Way') { // Hide Return Date and make Departure Date full width $('#return_date_block').hide(500); $('#return_date').val(''); $('#departure_date').closest('.col-md-6, .col-md-3').removeClass('col-md-3').addClass('col-md-6'); } else { // Show Return Date and shrink Departure Date $('#return_date_block').show(500); $('#departure_date').closest('.col-md-6, .col-md-3').removeClass('col-md-6').addClass('col-md-3'); } } // Run on page load toggleReturnField(); // Bind change event $('#trip_type_select').on('change', function () { toggleReturnField(); }); // Search for Departure Airport (From) $("#from_airport").on("input", function () { var query = $(this).val(); if (query.length >= 2) { $.ajax({ url: "<?= site_url('dashboard/records/airport'); ?>", method: "POST", data: { query: query, source: 'from' }, success: function (response) { $("#from_airport_results").html(response).show(); } }); } else { $("#from_airport_results").hide(); } }); // Search for Destination Airport (To) $("#to_airport").on("input", function () { var query = $(this).val(); if (query.length >= 2) { $.ajax({ url: "<?= site_url('dashboard/records/airport'); ?>", method: "POST", data: { query: query, source: 'to' }, success: function (response) { $("#to_airport_results").html(response).show(); } }); } else { $("#to_airport_results").hide(); } }); // When user clicks on a "from" airport item $(document).on('click', '.from-airport-item', function () { var selected = $(this).text(); $("#from_airport").val(selected); $("#from_airport_results").hide(); }); // When user clicks on a "to" airport item $(document).on('click', '.to-airport-item', function () { var selected = $(this).text(); $("#to_airport").val(selected); $("#to_airport_results").hide(); }); // Initialize Departure Date picker $(".departure_date").daterangepicker({ singleDatePicker: true, showDropdowns: true, minDate: moment(), // No past dates locale: { format: "YYYY-MM-DD" } }); // Initialize Return Date picker $(".return_date").daterangepicker({ singleDatePicker: true, showDropdowns: true, minDate: moment(), // Will be dynamically updated locale: { format: "YYYY-MM-DD" } }); // When Departure Date is selected, update Return Date minimum $(document).on('change', '.departure_date', function() { var departureDate = $(this).val(); $(".return_date").data('daterangepicker').minDate = moment(departureDate); // Optional: clear return date if now invalid var currentReturnDate = $(".return_date").val(); if (moment(currentReturnDate).isBefore(departureDate)) { $(".return_date").val(''); } }); // Initialize check-in $('#check_in').daterangepicker({ singleDatePicker: true, showDropdowns: true, autoUpdateInput: true, minDate: moment().format('YYYY-MM-DD'), locale: { format: 'YYYY-MM-DD' } }); // Initialize check-out $('#check_out').daterangepicker({ singleDatePicker: true, showDropdowns: true, autoUpdateInput: true, minDate: moment().format('YYYY-MM-DD'), locale: { format: 'YYYY-MM-DD' } }); // Initialize check-out $('.kt_daterangepicker').daterangepicker({ singleDatePicker: true, showDropdowns: true, autoUpdateInput: true, minDate: moment().format('YYYY-MM-DD'), locale: { format: 'YYYY-MM-DD' } }); // Initialize check-out $('#travel_date').daterangepicker({ singleDatePicker: true, showDropdowns: true, autoUpdateInput: true, minDate: moment().format('YYYY-MM-DD'), locale: { format: 'YYYY-MM-DD' } }); $(document).on('click', '.show-booking-form', function () { var tourId = $(this).data('tour-id'); $('#tour_id').val(tourId); $('.booking-form').show(500); console.log('Tour ID:', tourId); // ✅ Pause the slider if (window.tourSlider) { window.tourSlider.pause(); } }); // On check-in change, update check-out's minDate $('#check_in').on('apply.daterangepicker', function (ev, picker) { let selectedCheckIn = picker.startDate.format('YYYY-MM-DD'); $('#check_out').data('daterangepicker').minDate = picker.startDate.clone().add(1, 'days'); if ($('#check_out').val() && moment($('#check_out').val()).isSameOrBefore(selectedCheckIn)) { $('#check_out').val(''); } }); // Submit Flight Form on button click $("#flightForm button[type='button']").click(function(e) { e.preventDefault(); var $btn = $(this); var originalText = $btn.html(); // Store original button text var formData = $("#flightForm").serialize(); // Serialize form data // Show spinner inside button $btn.prop("disabled", true).html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Submitting...'); $.ajax({ url: "<?= site_url('dashboard/service/flight'); ?>", type: "POST", data: formData, dataType: "json", success: function(response) { if (response.status === 'success') { Swal.fire({ icon: 'success', title: 'Success!', text: response.message, timer: 3000, showConfirmButton: false }); $("#flightForm")[0].reset(); // Clear the form $("#flight_msg").html(''); // Optional: Clear message container if used } else { Swal.fire({ icon: 'error', title: 'Error', text: response.message, confirmButtonColor: '#d33' }); } $btn.prop("disabled", false).html(originalText); }, error: function(xhr, status, error) { Swal.fire({ icon: 'error', title: 'Oops...', text: 'An error occurred. Please try again.', confirmButtonColor: '#d33' }); $btn.prop("disabled", false).html(originalText); } }); }); }); $('#hotelForm').on('submit', function (e) { e.preventDefault(); const form = $(this); const submitBtn = form.find('button[type="submit"]'); const originalText = submitBtn.html(); submitBtn.prop('disabled', true).html('<span class="spinner-border spinner-border-sm"></span> Submitting...'); $.ajax({ url: '<?= site_url("dashboard/service/hotel") ?>', type: 'POST', data: form.serialize(), dataType: 'json', success: function (response) { if (response.status === 'success') { Swal.fire('Success!', response.message, 'success'); form[0].reset(); $('#city_id').html('<option value="">Select City</option>'); } else { Swal.fire('Error', response.message, 'error'); } }, error: function () { Swal.fire('Error', 'Something went wrong. Try again.', 'error'); }, complete: function () { submitBtn.prop('disabled', false).html(originalText); } }); }); function load() { $('#invoiceList').html('<div class="col-sm-12 fs-2 text-center" data-kt-indicator="on"> <span class="indicator-progress"><span class="spinner-border spinner-border-sm align-middle ms-2"></span></span></div>'); $.ajax({ url: site_url + 'dashboard/index/invoice_load', type: 'post', data: { }, success: function (data) { var dt = JSON.parse(data); $('#invoiceList').html(dt.item); } }); } function formatToYYYYMMDD(dateString) { const date = new Date(dateString); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); // Add 1 to the month (0-indexed) const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } function showServiceForm(serviceType) { // First, fade out all forms $('.service-form').fadeOut(200, function () { // After all are hidden, fade in the selected one if (serviceType === 'flight') { $('#flightForm').fadeIn(300); } else if (serviceType === 'hotel') { $('#hotelForm').fadeIn(300); } else if (serviceType === 'hajj') { $('#hajjForm').fadeIn(300); } else if (serviceType === 'tour') { $('#tourForm').fadeIn(300); } }); } $(document).ready(function () { // Handle form submission via AJAX $('#tourFormz').on('submit', function (e) { e.preventDefault(); // Prevent normal form submission Swal.fire({ title: 'Submit Booking?', text: 'Do you want to send your booking request now?', icon: 'question', showCancelButton: true, confirmButtonText: 'Yes, submit', cancelButtonText: 'Cancel' }).then((result) => { if (result.isConfirmed) { $.ajax({ type: 'POST', url: '<?= site_url("dashboard/service/tour") ?>', data: $(this).serialize(), dataType: 'json', success: function (response) { if (response.status === 'success') { Swal.fire({ icon: 'success', title: 'Booking Submitted!', text: response.message || 'We will contact you shortly.', timer: 3000 }); $('#tourFormz')[0].reset(); $('.booking-form').slideUp(); } else { Swal.fire({ icon: 'error', title: 'Error', text: response.message || 'Something went wrong. Please try again.', }); } }, error: function () { Swal.fire({ icon: 'error', title: 'Network Error', text: 'Unable to reach server. Please try again later.', }); } }); } }); }); }); </script> <?= $this->endSection(); ?>
Upload File
Create Folder