Applying Database Fixes..."; try { // 1. Add columns if missing try { $db->exec("ALTER TABLE appointments ADD COLUMN start_time DATETIME NULL"); echo "Added start_time column.
"; } catch (PDOException $e) { echo "start_time check: " . $e->getMessage() . "
"; } try { $db->exec("ALTER TABLE appointments ADD COLUMN end_time DATETIME NULL"); echo "Added end_time column.
"; } catch (PDOException $e) { echo "end_time check: " . $e->getMessage() . "
"; } // 2. Migrate data // Check if appointment_date exists before trying to use it try { $stmt = $db->query("SHOW COLUMNS FROM appointments LIKE 'appointment_date'"); if ($stmt->fetch()) { $db->exec("UPDATE appointments SET start_time = appointment_date WHERE start_time IS NULL"); echo "Migrated data from appointment_date to start_time.
"; } else { echo "Column 'appointment_date' does not exist, skipping data migration.
"; } } catch (PDOException $e) { echo "Data migration check failed: " . $e->getMessage() . "
"; } // Populate end_time based on start_time try { $db->exec("UPDATE appointments SET end_time = DATE_ADD(start_time, INTERVAL 30 MINUTE) WHERE end_time IS NULL AND start_time IS NOT NULL"); echo "Populated end_time based on start_time.
"; } catch (PDOException $e) { echo "Could not populate end_time: " . $e->getMessage() . "
"; } // 3. Set NOT NULL constraint try { // Only if start_time has values (or table is empty) $db->exec("ALTER TABLE appointments MODIFY COLUMN start_time DATETIME NOT NULL"); echo "Set start_time to NOT NULL.
"; } catch (PDOException $e) { echo "Could not set start_time to NOT NULL (maybe some rows are NULL?): " . $e->getMessage() . "
"; } try { $db->exec("ALTER TABLE appointments MODIFY COLUMN end_time DATETIME NOT NULL"); echo "Set end_time to NOT NULL.
"; } catch (PDOException $e) { echo "Could not set end_time to NOT NULL: " . $e->getMessage() . "
"; } // 4. Ensure other columns exist (like nurse_id, visit_type, etc. from previous migrations) try { $db->exec("ALTER TABLE appointments ADD COLUMN nurse_id INT NULL"); } catch (Exception $e) {} try { $db->exec("ALTER TABLE appointments ADD COLUMN visit_type ENUM('Clinic', 'Home') DEFAULT 'Clinic'"); } catch (Exception $e) {} try { $db->exec("ALTER TABLE appointments ADD COLUMN address TEXT NULL"); } catch (Exception $e) {} echo "

Fix completed successfully.

"; echo "

Go to Dashboard

"; } catch (PDOException $e) { echo "

Fatal Error during fix:

" . $e->getMessage(); }