-- Tạo bảng access_log để lưu nhật ký truy cập
CREATE TABLE IF NOT EXISTS `access_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `status` enum('success','failed') NOT NULL,
  `ip` varchar(45) DEFAULT NULL,
  `user_agent` text,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_username` (`username`),
  KEY `idx_status` (`status`),
  KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tạo bảng change_requests để lưu yêu cầu thay đổi thông tin
CREATE TABLE IF NOT EXISTS `change_requests` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `request_type` enum('user_info','permission','object_info') NOT NULL,
  `description` text NOT NULL,
  `changes` json DEFAULT NULL,
  `status` enum('pending','approved','rejected') NOT NULL DEFAULT 'pending',
  `approved_by` int(11) DEFAULT NULL,
  `approved_at` timestamp NULL DEFAULT NULL,
  `rejected_by` int(11) DEFAULT NULL,
  `rejected_at` timestamp NULL DEFAULT NULL,
  `rejection_reason` text,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_status` (`status`),
  KEY `idx_request_type` (`request_type`),
  KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tạo bảng log nếu chưa có
CREATE TABLE IF NOT EXISTS `log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userid` int(11) DEFAULT NULL,
  `username` varchar(50) DEFAULT NULL,
  `action` varchar(50) DEFAULT NULL,
  `object_type` varchar(50) DEFAULT NULL,
  `object_id` int(11) DEFAULT NULL,
  `detail` text,
  `ip` varchar(45) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_userid` (`userid`),
  KEY `idx_action` (`action`),
  KEY `idx_object_type` (`object_type`),
  KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Thêm dữ liệu mẫu cho access_log
INSERT INTO access_log (username, status, ip, user_agent) VALUES 
('admin', 'success', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'),
('admin', 'success', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'),
('truong_phong', 'success', '192.168.1.100', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');

-- Thêm dữ liệu mẫu cho change_requests
INSERT INTO change_requests (user_id, request_type, description, changes, status) VALUES 
(1, 'user_info', 'Yêu cầu thay đổi thông tin cá nhân', '{"fullname": "Nguyễn Văn A", "email": "nguyenvana@example.com"}', 'pending'),
(2, 'permission', 'Yêu cầu thay đổi quyền truy cập', '{"role": "can_bo", "group_id": 1}', 'pending');

-- Thêm dữ liệu mẫu cho log
INSERT INTO log (userid, username, action, object_type, object_id, detail, ip) VALUES 
(1, 'admin', 'login', 'user', 1, 'Đăng nhập thành công', '127.0.0.1'),
(1, 'admin', 'add', 'doituong', 1, 'Thêm đối tượng mới: Nguyễn Văn A', '127.0.0.1'),
(2, 'truong_phong', 'edit', 'user', 3, 'Sửa tài khoản: can_bo_1', '192.168.1.100'); 