-- موارد بشرية: المسميات الوظيفية + موظفين (إنشاء من صفر عند عدم وجود الجداول)
-- نفّذ بعد نسخة احتياطية. إن وُجد جدول employees بالشكل القديم استخدم: migrate_employees_hr_v2.sql

CREATE TABLE IF NOT EXISTS `job_titles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name_ar` varchar(100) NOT NULL,
  `sort_order` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_job_titles_name_ar` (`name_ar`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `job_titles` (`name_ar`, `sort_order`) VALUES
('مشرف عمل', 1),
('فني', 2),
('مدير المشرفين', 3),
('المدير المالي', 4),
('مدير الموارد البشرية', 5)
ON DUPLICATE KEY UPDATE `sort_order` = VALUES(`sort_order`);

CREATE TABLE IF NOT EXISTS `employees` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `employee_code` varchar(32) DEFAULT NULL,
  `full_name` varchar(150) NOT NULL,
  `english_name` varchar(150) DEFAULT NULL,
  `phone` varchar(32) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `hire_date` date DEFAULT NULL,
  `work_end_date` date DEFAULT NULL,
  `main_department_id` int(11) DEFAULT NULL COMMENT 'المكتب — إدارة رئيسية',
  `sub_department_id` int(11) DEFAULT NULL COMMENT 'النشاط — فرعي تحت الرئيسي',
  `job_title_id` int(11) DEFAULT NULL,
  `salary` decimal(14,2) DEFAULT NULL,
  `employee_address` text COMMENT 'عنوان الموظف',
  `work_location` varchar(200) DEFAULT NULL COMMENT 'مكان العمل',
  `nationality` varchar(80) DEFAULT NULL,
  `gender` varchar(20) DEFAULT NULL,
  `dhaman` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'مشمول بالضمان',
  `photo_path` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_employee_code` (`employee_code`),
  KEY `idx_emp_main_dept` (`main_department_id`),
  KEY `idx_emp_sub_dept` (`sub_department_id`),
  KEY `idx_emp_job` (`job_title_id`),
  CONSTRAINT `fk_emp_main_dept` FOREIGN KEY (`main_department_id`) REFERENCES `departments` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT `fk_emp_sub_dept` FOREIGN KEY (`sub_department_id`) REFERENCES `departments` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT `fk_emp_job_title` FOREIGN KEY (`job_title_id`) REFERENCES `job_titles` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `modules` (`module_name`, `display_name`) VALUES
('employees_management_page.dart', 'إدارة الموظفين'),
('add_employee_page.dart', 'إضافة موظف')
ON DUPLICATE KEY UPDATE `display_name` = VALUES(`display_name`);
