Fixed some issues, improved ui.

Added duty tracking

image.png

SQL Changes

-- Duty time tracking table
CREATE TABLE IF NOT EXISTS `luxu_admin_duty_sessions` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `staff_id` int(10) unsigned NOT NULL,
  `start_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `end_time` datetime DEFAULT NULL,
  `duration_seconds` int(10) unsigned DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_staff_id` (`staff_id`),
  KEY `idx_start_time` (`start_time`),
  KEY `idx_end_time` (`end_time`),
  CONSTRAINT `fk_duty_sessions_staff` FOREIGN KEY (`staff_id`) 
    REFERENCES `luxu_admin_group_members` (`id`) 
    ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Daily aggregated duty time
CREATE TABLE IF NOT EXISTS `luxu_admin_duty_daily_stats` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `staff_id` int(10) unsigned NOT NULL,
  `date` date NOT NULL,
  `total_seconds` int(10) unsigned NOT NULL DEFAULT 0,
  `session_count` int(10) unsigned NOT NULL DEFAULT 0,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_staff_date` (`staff_id`, `date`),
  KEY `idx_date` (`date`),
  CONSTRAINT `fk_duty_daily_stats_staff` FOREIGN KEY (`staff_id`) 
    REFERENCES `luxu_admin_group_members` (`id`) 
    ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Add duty_start_time to the group_members table
ALTER TABLE `luxu_admin_group_members` 
ADD COLUMN IF NOT EXISTS `current_duty_start` datetime DEFAULT NULL AFTER `gender`,
ADD COLUMN IF NOT EXISTS `total_duty_seconds` int(10) unsigned NOT NULL DEFAULT 0 AFTER `current_duty_start`; 

🗣️ New Locales

  "no_staff_data_available": "No staff data available",
  "not_on_duty": "Not on Duty",
  "on_duty": "On Duty",
  "on_duty_for": "On duty for",
  "online_staff": "Online Staff",
  "refresh": "Refresh",
  "sessions_today": "Sessions Today",
  "staff_duty_overview": "Staff Duty Overview",
  "this_month": "This Month",
  "this_week": "This Week",
  "top_performers": "Top Performers",
  "total_duty_time": "Total Duty Time"

📂 Files Changed