guest booking self-management feature + layout fixes

- add manage_token column to bookings (DB migration done)
- generate unique token per booking, include manage link in confirmation emails (no/en/hu)
- new routes: manage-booking, manage-booking-process, manage-booking-cancel
- new views: manage-booking.php, manage-booking-cancelled.php
- 24h cutoff enforcement for cancel/modify; emails sent to guest + studio CC
- fix manage-booking step 3 float layout (overflow:auto BFC clearfix)
- fix booking page time slot overflow: bookingResultsWrapper 378px -> 360px

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-28 16:01:12 +01:00
co-authored by Claude Sonnet 4.6
parent 02169a89f6
commit 2183c8aff2
6 changed files with 981 additions and 65 deletions
+12 -4
View File
@@ -531,15 +531,16 @@ class Service_model extends CI_Model {
$this->load->database();
$query = $this->db->query("INSERT INTO bookings (
guest_name,
guest_email,
guest_phone,
guest_email,
guest_phone,
worker_id,
booking_date,
booking_start_time,
booking_finish_time,
service_ids,
guest_confirmed,
guest_confirm_code
guest_confirm_code,
manage_token
) VALUES(
'".$bookingArray['guest_name']."',
'".$bookingArray['guest_email']."',
@@ -550,9 +551,16 @@ class Service_model extends CI_Model {
'".$bookingArray['booking_finish_time']."',
'".$bookingArray['service_ids']."',
'".$bookingArray['guest_confirmed']."',
'".$bookingArray['guest_confirm_code']."'
'".$bookingArray['guest_confirm_code']."',
'".$bookingArray['manage_token']."'
);");
}
public function getBookingByToken($token){
$this->load->database();
$query = $this->db->query('SELECT * FROM bookings WHERE manage_token = "'.$this->db->escape_str($token).'" LIMIT 1;');
return $query->num_rows() > 0 ? $query->result()[0] : false;
}
public function getWorkerSchedule($worker_id) {
return $this->db