Fixed some issues, improved ui.
Added duty tracking
-- 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`;
"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"