diff --git a/add_participant.php b/add_client.php similarity index 91% rename from add_participant.php rename to add_client.php index 790ff85..3a20c2f 100644 --- a/add_participant.php +++ b/add_client.php @@ -16,15 +16,15 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } } - $sql = "INSERT INTO participants ( - full_legal_name, ndis_participant_number, date_of_birth, preferred_contact_method, + $sql = "INSERT INTO clients ( + full_legal_name, ndis_client_number, date_of_birth, preferred_contact_method, primary_phone, email, address, emergency_contact_name, emergency_contact_phone, ndis_plan_start_date, ndis_plan_end_date, plan_manager_name, plan_manager_contact, ndis_funding_budget_total, primary_disability, support_needs_summary, communication_aids_methods, behaviours_of_concern, risk_assessment_summary, safety_plan, consent_for_info_sharing, intake_notes ) VALUES ( - :full_legal_name, :ndis_participant_number, :date_of_birth, :preferred_contact_method, + :full_legal_name, :ndis_client_number, :date_of_birth, :preferred_contact_method, :primary_phone, :email, :address, :emergency_contact_name, :emergency_contact_phone, :ndis_plan_start_date, :ndis_plan_end_date, :plan_manager_name, :plan_manager_contact, :ndis_funding_budget_total, :primary_disability, :support_needs_summary, @@ -37,7 +37,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $consent = isset($_POST['consent_for_info_sharing']) ? 1 : 0; $stmt->bindParam(':full_legal_name', $_POST['full_legal_name']); - $stmt->bindParam(':ndis_participant_number', $_POST['ndis_participant_number']); + $stmt->bindParam(':ndis_client_number', $_POST['ndis_client_number']); $stmt->bindParam(':date_of_birth', $_POST['date_of_birth']); $stmt->bindParam(':preferred_contact_method', $_POST['preferred_contact_method']); $stmt->bindParam(':primary_phone', $_POST['primary_phone']); @@ -61,7 +61,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $stmt->execute(); - $message = "Participant successfully added!"; + $message = "Client successfully added!"; } catch (Exception $e) { $error = "Error: " . $e->getMessage(); @@ -76,7 +76,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
-

Add New Participant

+

Add New Client

@@ -87,7 +87,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
-
+

AI-Assisted Intake

@@ -99,14 +99,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
-

Participant Details

+

Client Details

- - + +
@@ -208,8 +208,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- - Cancel + + Cancel
diff --git a/add_worker.php b/add_staff.php similarity index 88% rename from add_worker.php rename to add_staff.php index 4488e90..10a5e6e 100644 --- a/add_worker.php +++ b/add_staff.php @@ -13,7 +13,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { throw new Exception("Full Name is a required field."); } - $sql = "INSERT INTO support_workers ( + $sql = "INSERT INTO care_staff ( full_name, contact_info, ndis_worker_screening_number, ndis_worker_screening_expiry, first_aid_expiry, qualifications, hourly_rate ) VALUES ( @@ -33,7 +33,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $stmt->execute(); - $message = "Support worker successfully added!"; + $message = "Care staff member successfully added!"; } catch (Exception $e) { $error = "Error: " . $e->getMessage(); @@ -42,7 +42,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ?>
-

Add New Support Worker

+

Add New Staff Member

@@ -53,7 +53,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { -
+
@@ -68,7 +68,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- +
@@ -86,8 +86,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- - Cancel + + Cancel
diff --git a/assets/css/style.css b/assets/css/style.css index 5b912d3..a872ac5 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -1,14 +1,27 @@ /* General Styles */ -@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); :root { - --primary-color: #3498db; - --secondary-color: #2ecc71; - --background-color: #f4f7f6; - --surface-color: #ffffff; - --text-color: #34495e; - --light-gray-color: #ecf0f1; - --border-color: #e0e0e0; + --primary-color: #0A2240; /* Navy Blue */ + --secondary-color: #F0F2F5; /* Soft Grey */ + --accent-color: #48E5C2; /* Teal */ + --text-color: #333333; + --text-secondary-color: #6c757d; + --background-color: #F8F9FA; + --surface-color: #FFFFFF; + --border-color: #E9ECEF; + --danger-color: #e74c3c; + + --font-family-sans-serif: 'Inter', sans-serif; + + --space-1: 4px; + --space-2: 8px; + --space-3: 12px; + --space-4: 16px; + --space-5: 24px; + --space-6: 32px; + --space-7: 48px; + --space-8: 64px; } * { @@ -18,7 +31,7 @@ } body { - font-family: 'Poppins', sans-serif; + font-family: var(--font-family-sans-serif); background-color: var(--background-color); color: var(--text-color); display: flex; @@ -27,47 +40,47 @@ body { a { text-decoration: none; - color: var(--primary-color); + color: var(--accent-color); transition: color 0.3s ease; } a:hover { - color: #2980b9; + color: #36c1a2; } /* Sidebar Navigation */ .sidebar { - width: 250px; - background-color: var(--surface-color); - padding: 2rem 1rem; + width: 240px; + background-color: var(--primary-color); + padding: var(--space-5); position: fixed; height: 100%; - border-right: 1px solid var(--border-color); display: flex; flex-direction: column; + color: var(--secondary-color); } .sidebar .logo { - font-size: 1.5rem; - font-weight: 600; + font-size: 1.8rem; + font-weight: 700; text-align: center; - margin-bottom: 2rem; - color: var(--primary-color); + margin-bottom: var(--space-6); + color: var(--surface-color); } .sidebar nav a { display: block; - padding: 0.9rem 1.5rem; - margin-bottom: 0.5rem; - border-radius: 8px; - color: var(--text-color); + padding: var(--space-3) var(--space-4); + margin-bottom: var(--space-2); + border-radius: var(--space-1); + color: var(--secondary-color); font-weight: 500; - transition: background-color 0.3s ease, color 0.3s ease; + transition: background-color 0.2s ease, color 0.2s ease; } .sidebar nav a:hover, .sidebar nav a.active { - background-color: var(--primary-color); + background-color: rgba(255, 255, 255, 0.1); color: var(--surface-color); } @@ -75,14 +88,14 @@ a:hover { margin-top: auto; text-align: center; font-size: 0.8rem; - color: #95a5a6; + color: #a0a8b3; } /* Main Content Area */ .main-content { - margin-left: 250px; + margin-left: 240px; flex-grow: 1; - padding: 2rem; + padding: var(--space-6); display: flex; flex-direction: column; } @@ -91,25 +104,26 @@ a:hover { display: flex; justify-content: space-between; align-items: center; - margin-bottom: 2rem; + margin-bottom: var(--space-6); } .main-content header h1 { - font-size: 2rem; - font-weight: 600; + font-size: 2.2rem; + font-weight: 700; } +/* Buttons */ .btn, button, input[type="submit"] { - background-color: var(--primary-color); - color: white; - padding: 0.75rem 1.5rem; + background-color: var(--accent-color); + color: var(--primary-color); + padding: var(--space-3) var(--space-5); border: none; - border-radius: 8px; + border-radius: var(--space-2); cursor: pointer; - font-family: 'Poppins', sans-serif; - font-weight: 500; + font-family: var(--font-family-sans-serif); + font-weight: 600; transition: background-color 0.3s ease, transform 0.2s ease; display: inline-block; text-align: center; @@ -118,208 +132,209 @@ input[type="submit"] { .btn:hover, button:hover, input[type="submit"]:hover { - background-color: #2980b9; + background-color: #36c1a2; transform: translateY(-2px); } +.btn-primary { + background-color: var(--primary-color); + color: var(--surface-color); +} +.btn-primary:hover { + background-color: #081b33; +} + .btn-secondary { background-color: var(--secondary-color); + color: var(--text-color); + border: 1px solid var(--border-color); } .btn-secondary:hover { - background-color: #27ae60; + background-color: #e2e6ea; } .btn-danger { - background-color: #e74c3c; + background-color: var(--danger-color); + color: var(--surface-color); } .btn-danger:hover { background-color: #c0392b; } -/* Dashboard Cards */ -.card-container { +/* Info Cards (Dashboard) & Data Cards (Lists) */ +.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); - gap: 1.5rem; - animation: fadeIn 1s ease-out; + gap: var(--space-5); } .card { background-color: var(--surface-color); - border-radius: 12px; - padding: 1.5rem; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); + border-radius: var(--space-2); + padding: var(--space-5); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); + border: 1px solid var(--border-color); transition: transform 0.3s ease, box-shadow 0.3s ease; display: flex; flex-direction: column; - justify-content: space-between; } .card:hover { - transform: translateY(-5px); - box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08); + transform: translateY(-4px); + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.06); } -.card h3 { - font-size: 1.2rem; - font-weight: 600; - margin-bottom: 0.5rem; -} - -.card p { - font-size: 2.5rem; - font-weight: 700; - color: var(--primary-color); - margin-bottom: 1rem; -} - -.card .card-link { - font-weight: 600; - align-self: flex-start; -} - -/* Tables */ -table { - width: 100%; - border-collapse: collapse; - background-color: var(--surface-color); - border-radius: 12px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); - overflow: hidden; -} - -th, td { - padding: 1rem; - text-align: left; +.card-header { + margin-bottom: var(--space-4); + padding-bottom: var(--space-3); border-bottom: 1px solid var(--border-color); } -th { - background-color: var(--light-gray-color); +.card-header h3 { + font-size: 1.1rem; + font-weight: 600; + margin: 0; +} + +.card-body p { + font-size: 2.2rem; + font-weight: 700; + color: var(--primary-color); + margin-bottom: var(--space-2); +} + +.card-footer { + margin-top: auto; + padding-top: var(--space-4); +} + +.card-footer a { font-weight: 600; } -tbody tr:last-child td { - border-bottom: none; +.status-tag { + display: inline-block; + padding: var(--space-1) var(--space-2); + font-size: 0.75rem; + font-weight: 600; + border-radius: var(--space-1); + color: var(--surface-color); } +.status-tag.active { background-color: #2ecc71; } +.status-tag.inactive { background-color: var(--text-secondary-color); } +.status-tag.expiring { background-color: #f39c12; } +.status-tag.unbilled { background-color: var(--danger-color); } -tbody tr:hover { - background-color: #f9f9f9; -} /* Forms */ form { background-color: var(--surface-color); - padding: 2rem; - border-radius: 12px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); + padding: var(--space-6); + border-radius: var(--space-2); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); + border: 1px solid var(--border-color); } .form-group { - margin-bottom: 1.5rem; + margin-bottom: var(--space-4); } .form-group label { display: block; - margin-bottom: 0.5rem; - font-weight: 500; + margin-bottom: var(--space-2); + font-weight: 600; } .form-group input, .form-group select, .form-group textarea { width: 100%; - padding: 0.75rem; + padding: var(--space-3); border: 1px solid var(--border-color); - border-radius: 8px; - font-family: 'Poppins', sans-serif; + border-radius: var(--space-2); + font-family: var(--font-family-sans-serif); + background-color: var(--background-color); } .form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: none; - border-color: var(--primary-color); - box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2); + border-color: var(--accent-color); + box-shadow: 0 0 0 3px rgba(72, 229, 194, 0.2); } /* Detail Views */ .detail-container { background-color: var(--surface-color); - padding: 2rem; - border-radius: 12px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); -} - -.detail-container h1 { - margin-bottom: 1.5rem; -} - -.detail-grid { - display: grid; - grid-template-columns: 1fr 2fr; - gap: 1rem; -} - -.detail-grid strong { - font-weight: 600; + padding: var(--space-6); + border-radius: var(--space-2); + box-shadow: 0 4px 12px rgba(0,0,0,0.04); + border: 1px solid var(--border-color); } .detail-actions { - margin-top: 2rem; + margin-top: var(--space-5); display: flex; - gap: 1rem; + gap: var(--space-3); } - -/* Animations */ -@keyframes fadeIn { - from { - opacity: 0; - transform: translateY(20px); - } - to { - opacity: 1; - transform: translateY(0); - } +/* Tables (legacy, for reference) */ +table { + width: 100%; + border-collapse: collapse; + background-color: var(--surface-color); + border-radius: var(--space-2); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); + overflow: hidden; + border: 1px solid var(--border-color); } - -.main-content > * { - animation: fadeIn 0.5s ease-out forwards; +th, td { + padding: var(--space-4); + text-align: left; + border-bottom: 1px solid var(--border-color); } - -/* Feedback/Alerts */ -.feedback { - padding: 1rem; - margin-bottom: 1.5rem; - border-radius: 8px; - color: var(--surface-color); -} -.feedback.success { +th { background-color: var(--secondary-color); + font-weight: 600; } -.feedback.error { - background-color: #e74c3c; +tbody tr:last-child td { border-bottom: none; } +tbody tr:hover { background-color: #fcfcfd; } + +/* Empty States */ +.empty-state { + text-align: center; + padding: var(--space-8) var(--space-5); + background-color: var(--surface-color); + border: 2px dashed var(--border-color); + border-radius: var(--space-2); +} +.empty-state h3 { + font-size: 1.5rem; + margin-bottom: var(--space-3); +} +.empty-state p { + color: var(--text-secondary-color); + margin-bottom: var(--space-4); } /* Charts */ .charts-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); - gap: 1.5rem; - margin-top: 2rem; + gap: var(--space-5); + margin-top: var(--space-5); } - .chart-card { background-color: var(--surface-color); - border-radius: 12px; - padding: 1.5rem; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); + border-radius: var(--space-2); + padding: var(--space-5); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); + border: 1px solid var(--border-color); } - .chart-card h3 { font-size: 1.2rem; font-weight: 600; - margin-bottom: 1rem; + margin-bottom: var(--space-4); } diff --git a/service_logs.php b/bookings.php similarity index 72% rename from service_logs.php rename to bookings.php index e27cdac..c477155 100644 --- a/service_logs.php +++ b/bookings.php @@ -2,27 +2,27 @@ require_once 'db/config.php'; require_once 'header.php'; -$logs = []; +$bookings = []; try { $db = db(); $sql = "SELECT sl.id, sl.service_date, - p.full_legal_name AS participant_name, - w.full_name AS worker_name, + p.full_legal_name AS client_name, + w.full_name AS staff_name, sl.ndis_line_item, sl.duration_minutes, sl.billing_status FROM - service_logs sl + bookings sl JOIN - participants p ON sl.participant_id = p.id + clients p ON sl.client_id = p.id JOIN - support_workers w ON sl.worker_id = w.id + care_staff w ON sl.staff_id = w.id ORDER BY sl.service_date DESC"; $stmt = $db->query($sql); - $logs = $stmt->fetchAll(PDO::FETCH_ASSOC); + $bookings = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { echo ''; } @@ -57,32 +57,32 @@ function get_status_chip_class($status) {
-

Service Logs

- Log New Service +

Bookings

+ Log New Booking
- - + + - + - + - - + - - + +
Service DateParticipantSupport WorkerClientCare Staff Duration (mins) NDIS Line Item Billing Status
No service logs found.No bookings found.
diff --git a/workers.php b/care_staff.php similarity index 65% rename from workers.php rename to care_staff.php index 0ece1b6..e282ded 100644 --- a/workers.php +++ b/care_staff.php @@ -2,11 +2,11 @@ require_once 'db/config.php'; require_once 'header.php'; -$workers = []; +$care_staff = []; try { $db = db(); - $stmt = $db->query("SELECT id, full_name, ndis_worker_screening_number, first_aid_expiry FROM support_workers ORDER BY created_at DESC"); - $workers = $stmt->fetchAll(PDO::FETCH_ASSOC); + $stmt = $db->query("SELECT id, full_name, ndis_worker_screening_number, first_aid_expiry FROM care_staff ORDER BY created_at DESC"); + $care_staff = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { echo ''; } @@ -14,8 +14,8 @@ try { ?>
-

Support Workers

- Add New Worker +

Care Staff

+ Add New Staff Member
@@ -28,18 +28,18 @@ try { - + - + - - + diff --git a/participant_detail.php b/client_detail.php similarity index 52% rename from participant_detail.php rename to client_detail.php index a1c6751..b817d44 100644 --- a/participant_detail.php +++ b/client_detail.php @@ -3,26 +3,26 @@ require_once 'db/config.php'; require_once 'header.php'; if (!isset($_GET['id']) || !filter_var($_GET['id'], FILTER_VALIDATE_INT)) { - echo ''; + echo ''; require_once 'footer.php'; exit; } -$participant_id = $_GET['id']; -$participant = null; +$client_id = $_GET['id']; +$client = null; try { $db = db(); - $stmt = $db->prepare("SELECT * FROM participants WHERE id = :id"); - $stmt->bindParam(':id', $participant_id, PDO::PARAM_INT); + $stmt = $db->prepare("SELECT * FROM clients WHERE id = :id"); + $stmt->bindParam(':id', $client_id, PDO::PARAM_INT); $stmt->execute(); - $participant = $stmt->fetch(PDO::FETCH_ASSOC); + $client = $stmt->fetch(PDO::FETCH_ASSOC); } catch (PDOException $e) { echo ''; } -if (!$participant) { - echo ''; +if (!$client) { + echo ''; require_once 'footer.php'; exit; } @@ -59,55 +59,55 @@ function render_detail_area($label, $value) {
-

+

- Edit -
- + Edit + + - Back to List + Back to List
-

Participant Details

- - - +

Client Details

+ + +

Contact Info

- - - - - + + + + +

NDIS Plan

- - - - - + + + + +

Disability, Needs & Risks

- - - - - - + + + + + +

Intake Notes

- +
\ No newline at end of file diff --git a/participants.php b/clients.php similarity index 61% rename from participants.php rename to clients.php index 0180d0d..dbd18f0 100644 --- a/participants.php +++ b/clients.php @@ -5,8 +5,8 @@ require_once 'header.php'; $logs = []; try { $db = db(); - $stmt = $db->query("SELECT id, full_legal_name, ndis_participant_number, primary_phone, email FROM participants ORDER BY created_at DESC"); - $participants = $stmt->fetchAll(PDO::FETCH_ASSOC); + $stmt = $db->query("SELECT id, full_legal_name, ndis_client_number, primary_phone, email FROM clients ORDER BY created_at DESC"); + $clients = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { echo ''; } @@ -17,12 +17,12 @@ $error = $_GET['error'] ?? ''; ?>
-

Participants

- Add New Participant +

Clients

+ Add New Client
- + @@ -39,19 +39,19 @@ $error = $_GET['error'] ?? ''; - + - + - + - + diff --git a/compliance.php b/compliance.php index 9f353a0..efc5ba9 100644 --- a/compliance.php +++ b/compliance.php @@ -12,19 +12,19 @@ try { $ninety_days_from_now = date('Y-m-d', strtotime('+90 days')); // NDIS Plan Reviews - $plan_stmt = $db->prepare("SELECT id, full_legal_name, ndis_plan_end_date FROM participants WHERE ndis_plan_end_date <= :end_date AND ndis_plan_end_date >= CURDATE() ORDER BY ndis_plan_end_date ASC"); + $plan_stmt = $db->prepare("SELECT id, full_legal_name, ndis_plan_end_date FROM clients WHERE ndis_plan_end_date <= :end_date AND ndis_plan_end_date >= CURDATE() ORDER BY ndis_plan_end_date ASC"); $plan_stmt->bindParam(':end_date', $ninety_days_from_now); $plan_stmt->execute(); $plan_alerts = $plan_stmt->fetchAll(PDO::FETCH_ASSOC); - // Worker Screening Expiries - $screening_stmt = $db->prepare("SELECT id, full_name, ndis_worker_screening_expiry FROM support_workers WHERE ndis_worker_screening_expiry <= :end_date AND ndis_worker_screening_expiry >= CURDATE() ORDER BY ndis_worker_screening_expiry ASC"); + // Staff Screening Expiries + $screening_stmt = $db->prepare("SELECT id, full_name, ndis_worker_screening_expiry FROM care_staff WHERE ndis_worker_screening_expiry <= :end_date AND ndis_worker_screening_expiry >= CURDATE() ORDER BY ndis_worker_screening_expiry ASC"); $screening_stmt->bindParam(':end_date', $ninety_days_from_now); $screening_stmt->execute(); $screening_alerts = $screening_stmt->fetchAll(PDO::FETCH_ASSOC); // First Aid Expiries - $fa_stmt = $db->prepare("SELECT id, full_name, first_aid_expiry FROM support_workers WHERE first_aid_expiry <= :end_date AND first_aid_expiry >= CURDATE() ORDER BY first_aid_expiry ASC"); + $fa_stmt = $db->prepare("SELECT id, full_name, first_aid_expiry FROM care_staff WHERE first_aid_expiry <= :end_date AND first_aid_expiry >= CURDATE() ORDER BY first_aid_expiry ASC"); $fa_stmt->bindParam(':end_date', $ninety_days_from_now); $fa_stmt->execute(); $first_aid_alerts = $fa_stmt->fetchAll(PDO::FETCH_ASSOC); @@ -108,7 +108,7 @@ function get_days_until_badge($date) {
  • - +
     
  • @@ -117,14 +117,14 @@ function get_days_until_badge($date) {
    -

    Worker Screening Expiries

    +

    Staff Screening Expiries

    • No upcoming screening expiries.
    • - +
       
    • @@ -140,7 +140,7 @@ function get_days_until_badge($date) {
    • - +
       
    • diff --git a/db/setup.php b/db/setup.php index 150160d..a594a5c 100644 --- a/db/setup.php +++ b/db/setup.php @@ -4,11 +4,11 @@ require_once 'config.php'; try { $db = db(); $sql = <<exec($sql); - echo "Table `participants` created successfully." . PHP_EOL; + echo "Table `clients` created successfully." . PHP_EOL; } catch (PDOException $e) { die("DB ERROR: " . $e->getMessage()); } diff --git a/db/setup_servicelogs.php b/db/setup_bookings.php similarity index 58% rename from db/setup_servicelogs.php rename to db/setup_bookings.php index 2583281..2f304e8 100644 --- a/db/setup_servicelogs.php +++ b/db/setup_bookings.php @@ -4,22 +4,22 @@ require_once 'config.php'; try { $db = db(); $sql = <<exec($sql); - echo "Table `service_logs` created successfully." . PHP_EOL; + echo "Table `bookings` created successfully." . PHP_EOL; } catch (PDOException $e) { die("DB ERROR: " . $e->getMessage()); } diff --git a/db/setup_workers.php b/db/setup_care_staff.php similarity index 82% rename from db/setup_workers.php rename to db/setup_care_staff.php index 28b2cec..afc6480 100644 --- a/db/setup_workers.php +++ b/db/setup_care_staff.php @@ -4,7 +4,7 @@ require_once 'config.php'; try { $db = db(); $sql = <<exec($sql); - echo "Table `support_workers` created successfully." . PHP_EOL; + echo "Table `care_staff` created successfully." . PHP_EOL; } catch (PDOException $e) { die("DB ERROR: " . $e->getMessage()); } diff --git a/delete_client.php b/delete_client.php new file mode 100644 index 0000000..56735c0 --- /dev/null +++ b/delete_client.php @@ -0,0 +1,33 @@ +prepare("DELETE FROM clients WHERE id = :id"); + $stmt->bindParam(':id', $client_id, PDO::PARAM_INT); + $stmt->execute(); + + if ($stmt->rowCount() > 0) { + header('Location: clients.php?message=deleted'); + } else { + header('Location: clients.php?error=not_found'); + } + exit; + +} catch (PDOException $e) { + // In a real app, you'd log this error, not expose it + header('Location: clients.php?error=db_error'); + exit; +} diff --git a/delete_participant.php b/delete_participant.php deleted file mode 100644 index e386a9f..0000000 --- a/delete_participant.php +++ /dev/null @@ -1,33 +0,0 @@ -prepare("DELETE FROM participants WHERE id = :id"); - $stmt->bindParam(':id', $participant_id, PDO::PARAM_INT); - $stmt->execute(); - - if ($stmt->rowCount() > 0) { - header('Location: participants.php?message=deleted'); - } else { - header('Location: participants.php?error=not_found'); - } - exit; - -} catch (PDOException $e) { - // In a real app, you'd log this error, not expose it - header('Location: participants.php?error=db_error'); - exit; -} diff --git a/edit_participant.php b/edit_client.php similarity index 75% rename from edit_participant.php rename to edit_client.php index fb910ae..92b8bf6 100644 --- a/edit_participant.php +++ b/edit_client.php @@ -4,25 +4,25 @@ require_once 'header.php'; $message = ''; $error = ''; -$participant = null; +$client = null; if (!isset($_GET['id']) && !isset($_POST['id'])) { - echo ''; + echo ''; require_once 'footer.php'; exit; } -$participant_id = $_GET['id'] ?? $_POST['id']; +$client_id = $_GET['id'] ?? $_POST['id']; try { $db = db(); - $stmt = $db->prepare("SELECT * FROM participants WHERE id = :id"); - $stmt->bindParam(':id', $participant_id, PDO::PARAM_INT); + $stmt = $db->prepare("SELECT * FROM clients WHERE id = :id"); + $stmt->bindParam(':id', $client_id, PDO::PARAM_INT); $stmt->execute(); - $participant = $stmt->fetch(PDO::FETCH_ASSOC); + $client = $stmt->fetch(PDO::FETCH_ASSOC); - if (!$participant) { - throw new Exception("Participant not found."); + if (!$client) { + throw new Exception("Client not found."); } } catch (Exception $e) { $error = "Error: " . $e->getMessage(); @@ -42,9 +42,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } } - $sql = "UPDATE participants SET + $sql = "UPDATE clients SET full_legal_name = :full_legal_name, - ndis_participant_number = :ndis_participant_number, + ndis_client_number = :ndis_client_number, date_of_birth = :date_of_birth, preferred_contact_method = :preferred_contact_method, primary_phone = :primary_phone, @@ -70,11 +70,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $stmt = $db->prepare($sql); $consent = isset($_POST['consent_for_info_sharing']) ? 1 : 0; - $participant_id = $_POST['id']; + $client_id = $_POST['id']; - $stmt->bindParam(':id', $participant_id, PDO::PARAM_INT); + $stmt->bindParam(':id', $client_id, PDO::PARAM_INT); $stmt->bindParam(':full_legal_name', $_POST['full_legal_name']); - $stmt->bindParam(':ndis_participant_number', $_POST['ndis_participant_number']); + $stmt->bindParam(':ndis_client_number', $_POST['ndis_client_number']); $stmt->bindParam(':date_of_birth', $_POST['date_of_birth']); $stmt->bindParam(':preferred_contact_method', $_POST['preferred_contact_method']); $stmt->bindParam(':primary_phone', $_POST['primary_phone']); @@ -98,7 +98,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $stmt->execute(); - header("Location: participant_detail.php?id=" . $participant_id . "&message=updated"); + header("Location: client_detail.php?id=" . $client_id . "&message=updated"); exit; } catch (Exception $e) { @@ -114,7 +114,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
      -

      Edit Participant:

      +

      Edit Client:

      @@ -125,36 +125,36 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { -
      - + +

      AI-Assisted Intake

      - +
      -

      Participant Details

      +

      Client Details

      - +
      - - + +
      - +
      - +
      @@ -162,23 +162,23 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {

      Contact Info

      - +
      - +
      - +
      - +
      - +
      @@ -186,23 +186,23 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {

      Plan Details

      - +
      - +
      - +
      - +
      - +
    @@ -210,15 +210,15 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    Disability & Needs

    - +
    - +
    - +
    @@ -226,22 +226,22 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    Risk & Safety

    - +
    - +
    - +

    Consent

    - style="width: auto; margin-right: 10px;"> + style="width: auto; margin-right: 10px;">
    @@ -249,7 +249,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    - Cancel + Cancel
    diff --git a/edit_worker.php b/edit_staff.php similarity index 70% rename from edit_worker.php rename to edit_staff.php index 4c1354c..26c534f 100644 --- a/edit_worker.php +++ b/edit_staff.php @@ -4,25 +4,25 @@ require_once 'header.php'; $message = ''; $error = ''; -$worker = null; +$staff = null; if (!isset($_GET['id']) && !isset($_POST['id'])) { - echo ''; + echo ''; require_once 'footer.php'; exit; } -$worker_id = $_GET['id'] ?? $_POST['id']; +$staff_id = $_GET['id'] ?? $_POST['id']; try { $db = db(); - $stmt = $db->prepare("SELECT * FROM support_workers WHERE id = :id"); - $stmt->bindParam(':id', $worker_id, PDO::PARAM_INT); + $stmt = $db->prepare("SELECT * FROM care_staff WHERE id = :id"); + $stmt->bindParam(':id', $staff_id, PDO::PARAM_INT); $stmt->execute(); - $worker = $stmt->fetch(PDO::FETCH_ASSOC); + $staff = $stmt->fetch(PDO::FETCH_ASSOC); - if (!$worker) { - throw new Exception("Support worker not found."); + if (!$staff) { + throw new Exception("Care staff member not found."); } } catch (Exception $e) { $error = "Error: " . $e->getMessage(); @@ -39,7 +39,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { throw new Exception("Full Name and ID are required fields."); } - $sql = "UPDATE support_workers SET + $sql = "UPDATE care_staff SET full_name = :full_name, contact_info = :contact_info, ndis_worker_screening_number = :ndis_worker_screening_number, @@ -51,9 +51,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $stmt = $db->prepare($sql); - $worker_id = $_POST['id']; + $staff_id = $_POST['id']; - $stmt->bindParam(':id', $worker_id, PDO::PARAM_INT); + $stmt->bindParam(':id', $staff_id, PDO::PARAM_INT); $stmt->bindParam(':full_name', $_POST['full_name']); $stmt->bindParam(':contact_info', $_POST['contact_info']); $stmt->bindParam(':ndis_worker_screening_number', $_POST['ndis_worker_screening_number']); @@ -64,7 +64,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $stmt->execute(); - header("Location: worker_detail.php?id=" . $worker_id . "&message=updated"); + header("Location: staff_detail.php?id=" . $staff_id . "&message=updated"); exit; } catch (Exception $e) { @@ -74,7 +74,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ?>
    -

    Edit Support Worker:

    +

    Edit Staff Member:

    @@ -85,42 +85,42 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { - - + +
    - +
    - +
    - +
    - - + +
    - +
    - +
    - +
    - Cancel + Cancel
    diff --git a/header.php b/header.php index f2d7241..6934de5 100644 --- a/header.php +++ b/header.php @@ -14,10 +14,9 @@ $current_page = basename($_SERVER['PHP_SELF']); $pages = [ 'index.php' => 'Dashboard', - 'participants.php' => 'Participants', - 'workers.php' => 'Support Workers', - 'service_logs.php' => 'Service Logs', - 'compliance.php' => 'Compliance', + 'clients.php' => 'Clients', + 'care_staff.php' => 'Care Staff', + 'bookings.php' => 'Bookings', 'compliance.php' => 'Compliance', ]; ?> diff --git a/index.php b/index.php index 8150b19..0d0def5 100644 --- a/index.php +++ b/index.php @@ -3,31 +3,31 @@ require_once 'db/config.php'; require_once 'header.php'; // Fetch counts for dashboard cards -$participant_count = db()->query("SELECT COUNT(*) FROM participants")->fetchColumn(); -$worker_count = db()->query("SELECT COUNT(*) FROM support_workers")->fetchColumn(); -$service_log_count = db()->query("SELECT COUNT(*) FROM service_logs")->fetchColumn(); +$client_count = db()->query("SELECT COUNT(*) FROM clients")->fetchColumn(); +$staff_count = db()->query("SELECT COUNT(*) FROM care_staff")->fetchColumn(); +$booking_count = db()->query("SELECT COUNT(*) FROM bookings")->fetchColumn(); // Fetch upcoming compliance alerts (e.g., expiring in 90 days) $ninety_days_from_now = date('Y-m-d', strtotime('+90 days')); -$compliance_alerts = db()->query("SELECT COUNT(*) FROM participants WHERE ndis_plan_end_date <= '$ninety_days_from_now'")->fetchColumn(); -$worker_alerts = db()->query("SELECT COUNT(*) FROM support_workers WHERE ndis_worker_screening_expiry <= '$ninety_days_from_now' OR first_aid_expiry <= '$ninety_days_from_now'")->fetchColumn(); +$compliance_alerts = db()->query("SELECT COUNT(*) FROM clients WHERE ndis_plan_end_date <= '$ninety_days_from_now'")->fetchColumn(); +$worker_alerts = db()->query("SELECT COUNT(*) FROM care_staff WHERE ndis_worker_screening_expiry <= '$ninety_days_from_now' OR first_aid_expiry <= '$ninety_days_from_now'")->fetchColumn(); $total_alerts = $compliance_alerts + $worker_alerts; // Chart Data -// Participants per month -$participants_per_month_q = db()->query("SELECT DATE_FORMAT(created_at, '%Y-%m') as month, COUNT(*) as count FROM participants GROUP BY month ORDER BY month"); -$participants_per_month = $participants_per_month_q->fetchAll(PDO::FETCH_ASSOC); -$participant_months = json_encode(array_column($participants_per_month, 'month')); -$participant_counts = json_encode(array_column($participants_per_month, 'count')); +// Clients per month +$clients_per_month_q = db()->query("SELECT DATE_FORMAT(created_at, '%Y-%m') as month, COUNT(*) as count FROM clients GROUP BY month ORDER BY month"); +$clients_per_month = $clients_per_month_q->fetchAll(PDO::FETCH_ASSOC); +$client_months = json_encode(array_column($clients_per_month, 'month')); +$client_counts = json_encode(array_column($clients_per_month, 'count')); -// Services per month -$services_per_month_q = db()->query("SELECT DATE_FORMAT(service_date, '%Y-%m') as month, COUNT(*) as count FROM service_logs GROUP BY month ORDER BY month"); -$services_per_month = $services_per_month_q->fetchAll(PDO::FETCH_ASSOC); -$service_months = json_encode(array_column($services_per_month, 'month')); -$service_counts = json_encode(array_column($services_per_month, 'count')); +// Bookings per month +$bookings_per_month_q = db()->query("SELECT DATE_FORMAT(service_date, '%Y-%m') as month, COUNT(*) as count FROM bookings GROUP BY month ORDER BY month"); +$bookings_per_month = $bookings_per_month_q->fetchAll(PDO::FETCH_ASSOC); +$booking_months = json_encode(array_column($bookings_per_month, 'month')); +$booking_counts = json_encode(array_column($bookings_per_month, 'count')); // Billing status -$billing_status_q = db()->query("SELECT billing_status, COUNT(*) as count FROM service_logs GROUP BY billing_status"); +$billing_status_q = db()->query("SELECT billing_status, COUNT(*) as count FROM bookings GROUP BY billing_status"); $billing_status = $billing_status_q->fetchAll(PDO::FETCH_ASSOC); $billing_status_labels = json_encode(array_column($billing_status, 'billing_status')); $billing_status_counts = json_encode(array_column($billing_status, 'count')); @@ -36,24 +36,24 @@ $billing_status_counts = json_encode(array_column($billing_status, 'count'));

    Dashboard

    - Log a New Service + Log a New Booking
    -

    Total Participants

    -

    - Manage Participants → +

    Total Clients

    +

    + Manage Clients →
    -

    Total Support Workers

    -

    - Manage Workers → +

    Total Care Staff

    +

    + Manage Care Staff →
    -

    Services Logged

    -

    - View Service Logs → +

    Bookings Logged

    +

    + View Bookings →

    Compliance Alerts

    @@ -64,30 +64,30 @@ $billing_status_counts = json_encode(array_column($billing_status, 'count'));
    -

    Participants Added Per Month

    - +

    Clients Added Per Month

    +
    -

    Services Provided Per Month

    - +

    Bookings Per Month

    +
    -

    Service Billing Status

    +

    Booking Billing Status

    No support workers found.No care staff found.
    - View + View
    No participants found.No clients found.
    - View + View