Installation
Mis à jour le 03/06/2026
Installation - mx_mdt
1. SQL
Lancez le sql.sql dans votre base de donnée :
sqlSET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT ; SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS ; SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION ; SET NAMES utf8mb4 ; CREATE TABLE `mdt_absences` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `requester_discord_id` varchar(64) DEFAULT NULL, `requester_name` varchar(120) NOT NULL, `requester_grade` varchar(120) DEFAULT NULL, `requester_avatar` text DEFAULT NULL, `absence_type` varchar(32) NOT NULL DEFAULT 'OTHER', `priority` varchar(16) NOT NULL DEFAULT 'NORMAL', `status` varchar(16) NOT NULL DEFAULT 'pending', `reason` varchar(255) NOT NULL, `notes` mediumtext DEFAULT NULL, `start_at` datetime NOT NULL, `end_at` datetime NOT NULL, `return_at` datetime DEFAULT NULL, `cover_agent` varchar(120) DEFAULT NULL, `contact` varchar(255) DEFAULT NULL, `decided_by_discord_id` varchar(64) DEFAULT NULL, `decided_by_name` varchar(120) DEFAULT NULL, `decision_note` mediumtext DEFAULT NULL, `decided_at` datetime DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_agents` ( `id` int(11) NOT NULL, `discord_id` varchar(50) NOT NULL, `username` varchar(100) DEFAULT NULL, `department_id` int(11) NOT NULL, `grade_role_id` varchar(50) DEFAULT NULL, `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `arrival_date` date DEFAULT NULL, `rank` varchar(100) DEFAULT NULL, `function_label` varchar(100) DEFAULT NULL, `badge_number` varchar(50) DEFAULT NULL, `full_name` varchar(150) DEFAULT NULL, `post` varchar(150) DEFAULT NULL, `service_strip` int(1) DEFAULT 0, `last_strip_date` date DEFAULT NULL, `activity_status` varchar(100) DEFAULT NULL, `first_division` varchar(100) DEFAULT NULL, `second_division` varchar(100) DEFAULT NULL, `last_promotion` date DEFAULT NULL, `first_speciality` varchar(100) DEFAULT NULL, `second_speciality` varchar(100) DEFAULT NULL, `sanctions` text DEFAULT NULL, `awards` text DEFAULT NULL, `off_duty_firearm` tinyint(1) DEFAULT 0, `google_mail` varchar(150) DEFAULT NULL, `patrol_detachment_id` int(11) DEFAULT NULL, `matricule` varchar(50) DEFAULT NULL, `custom_avatar` varchar(255) DEFAULT NULL, `discord_avatar` varchar(255) DEFAULT NULL, `discord_left_at` timestamp NULL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_arrest_reports` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `content` longtext DEFAULT NULL, `miranda_read` varchar(10) DEFAULT 'yes', `cooperative` varchar(10) DEFAULT 'yes', `lawyer` varchar(255) DEFAULT '', `prosecutor` varchar(255) DEFAULT '', `judge` varchar(255) DEFAULT '', `responsible_id` int(11) DEFAULT NULL, `responsible_name` varchar(255) DEFAULT '', `status` varchar(50) DEFAULT 'pending', `linked_ois_report_id` int(11) DEFAULT NULL, `total_fine` int(11) DEFAULT 0, `total_points` int(11) DEFAULT 0, `suspects` longtext DEFAULT NULL, `agents` longtext DEFAULT NULL, `charges` longtext DEFAULT NULL, `evidence` longtext DEFAULT NULL, `comments` longtext DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_bips` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `title` varchar(255) NOT NULL, `channel_id` varchar(512) NOT NULL, `color_theme` varchar(32) DEFAULT 'danger', `code_label` varchar(120) DEFAULT 'CODE 4 déclaré par', `priority` varchar(32) DEFAULT 'urgent', `location` varchar(255) NOT NULL, `radio_frequency` varchar(64) DEFAULT NULL, `incident_commander` varchar(255) DEFAULT NULL, `units_requested` varchar(255) DEFAULT NULL, `status` varchar(32) DEFAULT 'active', `closed_at_text` varchar(32) DEFAULT NULL, `situation` text DEFAULT NULL, `engaged_agents_text` text DEFAULT NULL, `extra_mentions` text DEFAULT NULL, `target_scope_json` longtext DEFAULT NULL, `target_summary` text DEFAULT NULL, `sender_name` varchar(255) DEFAULT NULL, `sender_department` varchar(255) DEFAULT NULL, `discord_message_id` varchar(64) DEFAULT NULL, `thread_id` varchar(64) DEFAULT NULL, `discord_jump_url` text DEFAULT NULL, `bot_status` varchar(32) DEFAULT 'pending', `sent_at` datetime DEFAULT NULL, `closed_at` datetime DEFAULT NULL, `closed_by` varchar(255) DEFAULT NULL, `created_at` datetime NOT NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_bracelets` ( `id` int(11) NOT NULL, `department_id` int(11) DEFAULT NULL, `bracelet_number` varchar(32) NOT NULL, `citizen_id` int(11) NOT NULL, `citizen_name` varchar(255) DEFAULT NULL, `status` varchar(32) NOT NULL DEFAULT 'ACTIVE', `bracelet_type` varchar(64) NOT NULL DEFAULT 'GPS', `risk_level` varchar(32) NOT NULL DEFAULT 'STANDARD', `assigned_at` bigint(20) NOT NULL, `expires_at` bigint(20) DEFAULT NULL, `removed_at` bigint(20) DEFAULT NULL, `zone_label` varchar(255) DEFAULT NULL, `zone_details` text DEFAULT NULL, `last_known_location` varchar(255) DEFAULT NULL, `reason` text DEFAULT NULL, `conditions_text` text DEFAULT NULL, `notes` text DEFAULT NULL, `assigned_by` varchar(255) DEFAULT NULL, `removed_by` varchar(255) DEFAULT NULL, `removal_reason` text DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_chat_categories` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `name` varchar(80) NOT NULL, `position` int(11) NOT NULL DEFAULT 0, `created_at` timestamp NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_chat_channels` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `category_id` int(11) NOT NULL, `name` varchar(80) NOT NULL, `topic` varchar(255) DEFAULT NULL, `is_private` tinyint(1) NOT NULL DEFAULT 1, `position` int(11) NOT NULL DEFAULT 0, `created_at` timestamp NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_chat_channel_acl` ( `id` int(11) NOT NULL, `channel_id` int(11) NOT NULL, `allow_grade_role_id` varchar(32) DEFAULT NULL, `allow_agent_discord_id` varchar(32) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_chat_mentions` ( `id` bigint(20) NOT NULL, `department_id` int(11) NOT NULL, `channel_id` int(11) NOT NULL, `message_id` bigint(20) NOT NULL, `mentioned_discord_id` varchar(32) NOT NULL, `created_at` timestamp NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_chat_messages` ( `id` bigint(20) NOT NULL, `department_id` int(11) NOT NULL, `channel_id` int(11) NOT NULL, `author_discord_id` varchar(32) NOT NULL, `author_name` varchar(80) NOT NULL, `author_avatar` varchar(255) DEFAULT NULL, `content` text NOT NULL, `created_at` timestamp NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_chat_reads` ( `department_id` int(11) NOT NULL, `channel_id` int(11) NOT NULL, `reader_discord_id` varchar(32) NOT NULL, `last_read_message_id` bigint(20) NOT NULL DEFAULT 0, `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_citizens` ( `id` int(11) NOT NULL, `identifier` varchar(64) DEFAULT NULL, `firstname` varchar(50) DEFAULT NULL, `lastname` varchar(50) DEFAULT NULL, `birthdate` date DEFAULT NULL, `gender` varchar(20) DEFAULT NULL, `email` varchar(100) DEFAULT NULL, `phone` varchar(30) DEFAULT NULL, `address` varchar(100) DEFAULT NULL, `address_type` varchar(100) DEFAULT NULL, `city` varchar(50) DEFAULT NULL, `state` varchar(50) DEFAULT NULL, `zip` varchar(20) DEFAULT NULL, `country` varchar(50) DEFAULT NULL, `profession` varchar(50) DEFAULT NULL, `nationality` varchar(50) DEFAULT NULL, `photo_url` text DEFAULT NULL, `driver_license` tinyint(1) DEFAULT 0, `motorcycle_license` tinyint(1) DEFAULT 0, `truck_license` tinyint(1) DEFAULT 0, `boat_license` tinyint(1) DEFAULT 0, `pilot_license` tinyint(1) DEFAULT 0, `created_at` timestamp NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_citizen_owners` ( `citizen_id` int(11) NOT NULL, `owner_identifier` varchar(120) NOT NULL, `owner_name` varchar(120) NOT NULL DEFAULT '', `created_at` bigint(20) NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_complaints` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `complaint_number` varchar(32) DEFAULT NULL, `status` varchar(32) NOT NULL DEFAULT 'ENREGISTREE', `priority` varchar(16) NOT NULL DEFAULT 'NORMALE', `type` varchar(64) NOT NULL DEFAULT 'PLAINTE', `filing_method` varchar(32) DEFAULT 'EN_PERSONNE', `jurisdiction` varchar(64) DEFAULT NULL, `complainant_citizen_id` int(11) DEFAULT NULL, `complainant_name` varchar(128) DEFAULT NULL, `complainant_phone` varchar(32) DEFAULT NULL, `complainant_email` varchar(128) DEFAULT NULL, `complainant_address` varchar(255) DEFAULT NULL, `complainant_is_anonymous` tinyint(1) NOT NULL DEFAULT 0, `represented_by` varchar(128) DEFAULT NULL, `accused_kind` varchar(16) NOT NULL DEFAULT 'UNKNOWN', `accused_citizen_id` int(11) DEFAULT NULL, `accused_name` varchar(128) DEFAULT NULL, `accused_company` varchar(128) DEFAULT NULL, `accused_address` varchar(255) DEFAULT NULL, `accused_contact` varchar(128) DEFAULT NULL, `incident_datetime` datetime DEFAULT NULL, `reported_datetime` datetime DEFAULT NULL, `location_label` varchar(255) DEFAULT NULL, `location_details` text DEFAULT NULL, `summary` varchar(255) DEFAULT NULL, `narrative` longtext DEFAULT NULL, `alleged_offences` text DEFAULT NULL, `damages` text DEFAULT NULL, `injuries` text DEFAULT NULL, `requested_action` text DEFAULT NULL, `confidentiality_level` varchar(16) NOT NULL DEFAULT 'STANDARD', `witnesses_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`witnesses_json`)), `officers_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`officers_json`)), `evidence_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`evidence_json`)), `attachments_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`attachments_json`)), `timeline_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`timeline_json`)), `tags_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`tags_json`)), `assigned_agent_name` varchar(128) DEFAULT NULL, `internal_notes` longtext DEFAULT NULL, `closed_at` datetime DEFAULT NULL, `closure_reason` text DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL, `client_request_id` varchar(64) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_departments` ( `id` int(11) NOT NULL, `category` varchar(50) NOT NULL, `label` varchar(100) NOT NULL, `logo` text DEFAULT NULL, `discord_role_id` varchar(50) NOT NULL, `discord_webhook_url` varchar(512) DEFAULT NULL, `bip_webhook_url` varchar(512) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_props` ( `id` int(11) NOT NULL AUTO_INCREMENT, `label` varchar(100) NOT NULL DEFAULT 'MDT', `model` varchar(100) NOT NULL, `x` float NOT NULL, `y` float NOT NULL, `z` float NOT NULL, `rx` float NOT NULL DEFAULT 0, `ry` float NOT NULL DEFAULT 0, `rz` float NOT NULL DEFAULT 0, `department_id` int(11) DEFAULT NULL, `created_by` varchar(100) DEFAULT NULL, `placed_by_identifier` varchar(100) DEFAULT NULL, `created_at` bigint(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_dispatch_agents` ( `identifier` varchar(64) NOT NULL, `department_id` int(11) NOT NULL, `agent_name` varchar(128) NOT NULL, `status` varchar(32) NOT NULL DEFAULT 'on_duty', `unit_callsign` varchar(32) DEFAULT NULL, `discord_id` varchar(64) DEFAULT NULL, `updated_at` bigint(20) NOT NULL, UNIQUE KEY `uq_dispatch_agent` (`identifier`, `department_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_dispatch_calls` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `title` varchar(128) NOT NULL, `subtitle` varchar(255) DEFAULT NULL, `location_label` varchar(255) DEFAULT NULL, `code` varchar(32) DEFAULT NULL, `priority` int(11) NOT NULL DEFAULT 2, `x` double DEFAULT NULL, `y` double DEFAULT NULL, `z` double DEFAULT NULL, `status` varchar(32) NOT NULL DEFAULT 'PENDING', `assigned_callsign` varchar(32) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `created_by` varchar(64) DEFAULT NULL, `web_notify` tinyint(1) NOT NULL DEFAULT 0, `web_assign_callsign` varchar(32) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_dispatch_units` ( `callsign` varchar(32) NOT NULL, `department_id` int(11) NOT NULL, `status` varchar(64) NOT NULL DEFAULT 'En patrouille', `vehicles` varchar(255) DEFAULT NULL, `sector` varchar(100) DEFAULT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_dispatch_unit_members` ( `callsign` varchar(32) NOT NULL, `department_id` int(11) NOT NULL, `identifier` varchar(64) NOT NULL, `agent_name` varchar(128) NOT NULL, `added_at` bigint(20) NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_dispatch_board` ( `department_id` int(11) NOT NULL, `dispatcher` varchar(128) NOT NULL DEFAULT '-', `co_dispatcher` varchar(128) NOT NULL DEFAULT '-', `supervisor` varchar(128) NOT NULL DEFAULT 'Non attribué', `watch_commander` varchar(128) NOT NULL DEFAULT '-', `radio` varchar(255) NOT NULL DEFAULT '', `alert` varchar(128) NOT NULL DEFAULT '', PRIMARY KEY (`department_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_document_categories` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `name` varchar(120) NOT NULL, `icon` varchar(16) DEFAULT '?', `color` varchar(16) DEFAULT '#5b8cff', `permissions_json` longtext DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_document_links` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `category_id` int(11) DEFAULT NULL, `title` varchar(160) NOT NULL, `url` text NOT NULL, `description` text DEFAULT NULL, `tags_json` longtext DEFAULT NULL, `icon` varchar(16) DEFAULT '?', `color` varchar(16) DEFAULT '#5b8cff', `access_level` varchar(32) DEFAULT 'department', `permissions_json` longtext DEFAULT NULL, `is_pinned` tinyint(1) DEFAULT 0, `open_in_new_tab` tinyint(1) DEFAULT 1, `created_by` varchar(120) DEFAULT NULL, `updated_by` varchar(120) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_doc_comments` ( `id` int(11) NOT NULL, `doc_id` int(11) NOT NULL, `author` varchar(80) NOT NULL, `body` text NOT NULL, `anchor` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `resolved` tinyint(1) DEFAULT 0, `resolved_by` varchar(80) DEFAULT NULL, `resolved_at` timestamp NULL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_doc_versions` ( `id` int(11) NOT NULL, `doc_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `content` longtext NOT NULL, `saved_by` varchar(80) NOT NULL, `saved_at` timestamp NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_doj_ccw` ( `id` int(11) NOT NULL, `citizen_id` int(11) NOT NULL, `ccw_number` varchar(32) NOT NULL, `status` varchar(24) NOT NULL DEFAULT 'ACTIVE', `weapon_type` varchar(120) DEFAULT NULL, `issued_at` date DEFAULT NULL, `expires_at` date DEFAULT NULL, `issued_by` varchar(120) DEFAULT NULL, `jurisdiction` varchar(120) DEFAULT NULL, `restrictions` text DEFAULT NULL, `reason` text DEFAULT NULL, `notes` longtext DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_doj_criminal_records` ( `id` int(11) NOT NULL, `citizen_id` int(11) NOT NULL, `record_number` varchar(80) NOT NULL, `title` varchar(255) NOT NULL, `category` varchar(120) DEFAULT NULL, `severity` varchar(60) DEFAULT 'MISDEMEANOR', `status` varchar(60) DEFAULT 'ACTIVE', `charges_json` longtext DEFAULT NULL, `sentence_text` longtext DEFAULT NULL, `notes` longtext DEFAULT NULL, `created_by` varchar(120) DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT current_timestamp(), `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; CREATE TABLE `mdt_doj_judgements` ( `id` int(11) NOT NULL, `case_number` varchar(64) NOT NULL, `citizen_id` int(11) DEFAULT NULL, `citizen_name` varchar(255) NOT NULL, `judge_name` varchar(255) NOT NULL, `decree_number` varchar(128) NOT NULL, `court_name` varchar(255) NOT NULL, `case_title` text DEFAULT NULL, `procedure_opening` longtext DEFAULT NULL, `legal_interpretation` longtext DEFAULT NULL, `decree_context` longtext DEFAULT NULL, `decree_motivation` longtext DEFAULT NULL, `decree_will` longtext DEFAULT NULL, `decree_consequences` longtext DEFAULT NULL, `court_judgement` longtext DEFAULT NULL, `final_ruling` longtext DEFAULT NULL, `city` varchar(255) DEFAULT 'LOS SANTOS, SAN ANDREAS', `judgement_date` varchar(32) DEFAULT NULL, `signature_label` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_doj_warrants` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `citizen_id` int(11) NOT NULL, `citizen_name` varchar(255) NOT NULL, `warrant_number` varchar(80) NOT NULL, `case_number` varchar(80) DEFAULT NULL, `status` varchar(50) NOT NULL DEFAULT 'ACTIVE', `warrant_type` varchar(80) NOT NULL DEFAULT 'ARREST', `court_name` varchar(255) DEFAULT 'United States District Court', `court_district` varchar(255) DEFAULT 'Central District of San Andreas', `issued_at` datetime DEFAULT NULL, `expires_at` datetime DEFAULT NULL, `judge_name` varchar(255) DEFAULT NULL, `prosecutor_name` varchar(255) DEFAULT NULL, `signed_city` varchar(120) DEFAULT 'Los Santos', `signed_state` varchar(120) DEFAULT 'San Andreas', `priority` varchar(50) NOT NULL DEFAULT 'NORMAL', `bail_amount` int(11) NOT NULL DEFAULT 0, `danger_level` varchar(50) NOT NULL DEFAULT 'STANDARD', `reason` text DEFAULT NULL, `charges_text` longtext DEFAULT NULL, `narrative` longtext DEFAULT NULL, `internal_notes` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_drive_activity` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `item_id` int(11) DEFAULT NULL, `action` varchar(50) NOT NULL, `message` varchar(255) NOT NULL, `actor` varchar(80) NOT NULL, `created_at` timestamp NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_drive_items` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `parent_id` int(11) DEFAULT NULL, `type` enum('folder','doc') NOT NULL, `name` varchar(255) NOT NULL, `content` longtext DEFAULT NULL, `created_by` varchar(80) NOT NULL, `updated_by` varchar(80) DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `trashed` tinyint(1) DEFAULT 0, `trashed_at` timestamp NULL DEFAULT NULL, `trashed_by` varchar(80) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_drive_permissions` ( `id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `scope` enum('private','department','roles','users') NOT NULL DEFAULT 'department', `role_ids` text DEFAULT NULL, `user_ids` text DEFAULT NULL, `can_view` tinyint(1) DEFAULT 1, `can_edit` tinyint(1) DEFAULT 1, `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_drive_starred` ( `id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `player_identifier` varchar(120) NOT NULL, `created_at` timestamp NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_events` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `agent_identifier` varchar(120) NOT NULL, `created_by` varchar(120) DEFAULT NULL, `title` varchar(120) NOT NULL, `description` text DEFAULT NULL, `location` varchar(160) DEFAULT NULL, `category` varchar(50) DEFAULT 'service', `color` varchar(20) DEFAULT 'blue', `status` varchar(30) DEFAULT 'planned', `all_day` tinyint(1) NOT NULL DEFAULT 0, `starts_at` bigint(20) NOT NULL, `ends_at` bigint(20) NOT NULL, `remind_before` int(11) NOT NULL DEFAULT 0, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_fines` ( `id` int(11) NOT NULL, `fine_number` varchar(32) NOT NULL, `citizen_id` int(11) NOT NULL, `citizen_name` varchar(120) DEFAULT NULL, `issued_at` varchar(32) DEFAULT NULL, `due_at` varchar(16) DEFAULT NULL, `category` varchar(40) NOT NULL DEFAULT 'autre', `status` varchar(24) NOT NULL DEFAULT 'unpaid', `title` varchar(255) NOT NULL, `location` varchar(255) DEFAULT NULL, `legal_reference` varchar(120) DEFAULT NULL, `total_amount` int(11) NOT NULL DEFAULT 0, `paid_amount` int(11) NOT NULL DEFAULT 0, `balance_amount` int(11) NOT NULL DEFAULT 0, `cad_ref` varchar(120) DEFAULT NULL, `bodycam_ref` varchar(120) DEFAULT NULL, `source_department_id` int(11) DEFAULT NULL, `source_department_label` varchar(120) DEFAULT NULL, `notes` text DEFAULT NULL, `internal_note` text DEFAULT NULL, `officer_name` varchar(120) DEFAULT NULL, `officer_grade` varchar(120) DEFAULT NULL, `items_json` longtext DEFAULT NULL, `tags_json` longtext DEFAULT NULL, `cancelled_at` bigint(20) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_forms` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `title` varchar(255) NOT NULL, `description` text DEFAULT NULL, `form_type` enum('FORM','EXAM') NOT NULL DEFAULT 'FORM', `status` enum('DRAFT','PUBLISHED','ARCHIVED') NOT NULL DEFAULT 'PUBLISHED', `time_limit_minutes` int(11) NOT NULL DEFAULT 0, `allowed_discord_ids` longtext DEFAULT NULL, `settings_json` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `updated_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_form_questions` ( `id` int(11) NOT NULL, `form_id` int(11) NOT NULL, `label` text NOT NULL, `description` text DEFAULT NULL, `question_type` enum('short_text','long_text','single_choice','multiple_choice','dropdown','date') NOT NULL, `is_required` tinyint(1) NOT NULL DEFAULT 0, `options_json` longtext DEFAULT NULL, `correct_answers_json` longtext DEFAULT NULL, `points` decimal(10,2) NOT NULL DEFAULT 0.00, `position` int(11) NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_form_submissions` ( `id` int(11) NOT NULL, `form_id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `player_name` varchar(255) DEFAULT NULL, `player_identifier` varchar(255) DEFAULT NULL, `discord_id` varchar(64) DEFAULT NULL, `started_at` bigint(20) DEFAULT NULL, `submitted_at` bigint(20) DEFAULT NULL, `status` enum('IN_PROGRESS','SUBMITTED','AUTO_SUBMITTED','GRADED') NOT NULL DEFAULT 'SUBMITTED', `answers_json` longtext DEFAULT NULL, `score` decimal(10,2) NOT NULL DEFAULT 0.00, `max_score` decimal(10,2) NOT NULL DEFAULT 0.00, `correction_json` longtext DEFAULT NULL, `grader_name` varchar(255) DEFAULT NULL, `graded_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_fto_cases` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `case_number` varchar(50) DEFAULT NULL, `trainee_agent_id` int(11) DEFAULT NULL, `trainee_name` varchar(255) DEFAULT NULL, `trainee_badge` varchar(120) DEFAULT NULL, `trainee_rank` varchar(120) DEFAULT NULL, `trainee_avatar` text DEFAULT NULL, `primary_fto_agent_id` int(11) DEFAULT NULL, `primary_fto_name` varchar(255) DEFAULT NULL, `secondary_fto_agent_id` int(11) DEFAULT NULL, `secondary_fto_name` varchar(255) DEFAULT NULL, `status` varchar(60) DEFAULT 'ACTIVE', `phase` varchar(60) DEFAULT 'PHASE_1', `priority` varchar(60) DEFAULT 'NORMAL', `academy_class` varchar(120) DEFAULT NULL, `start_date` datetime DEFAULT NULL, `target_end_date` datetime DEFAULT NULL, `hours_completed` decimal(10,2) DEFAULT 0.00, `shifts_completed` int(11) DEFAULT 0, `score_overall` decimal(10,2) DEFAULT 0.00, `strengths` mediumtext DEFAULT NULL, `improvement_goals` mediumtext DEFAULT NULL, `remedial_plan` mediumtext DEFAULT NULL, `command_notes` mediumtext DEFAULT NULL, `recommendation` mediumtext DEFAULT NULL, `internal_flags_json` longtext DEFAULT NULL, `custom_fields_json` longtext DEFAULT NULL, `skills_snapshot_json` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `updated_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_fto_case_events` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `case_id` int(11) NOT NULL, `event_type` varchar(80) DEFAULT NULL, `title` varchar(255) DEFAULT NULL, `description` mediumtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_fto_evaluations` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `case_id` int(11) NOT NULL, `evaluation_number` varchar(50) DEFAULT NULL, `phase` varchar(60) DEFAULT NULL, `status` varchar(60) DEFAULT 'SATISFACTORY', `shift_type` varchar(120) DEFAULT NULL, `patrol_area` varchar(255) DEFAULT NULL, `shift_date` datetime DEFAULT NULL, `start_time` varchar(20) DEFAULT NULL, `end_time` varchar(20) DEFAULT NULL, `fto_agent_id` int(11) DEFAULT NULL, `fto_name` varchar(255) DEFAULT NULL, `partner_names_json` longtext DEFAULT NULL, `calls_handled` int(11) DEFAULT 0, `arrests_count` int(11) DEFAULT 0, `citations_count` int(11) DEFAULT 0, `reports_count` int(11) DEFAULT 0, `score_total` decimal(10,2) DEFAULT 0.00, `skills_scores_json` longtext DEFAULT NULL, `observations_positive` mediumtext DEFAULT NULL, `observations_negative` mediumtext DEFAULT NULL, `narrative` mediumtext DEFAULT NULL, `safety_issues` mediumtext DEFAULT NULL, `recommendation` mediumtext DEFAULT NULL, `attachments_json` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_gangs` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `name` varchar(120) NOT NULL, `aliases` varchar(255) DEFAULT NULL, `type` varchar(50) DEFAULT 'other', `status` varchar(30) DEFAULT 'active', `threat_level` varchar(30) DEFAULT 'medium', `colors` varchar(120) DEFAULT NULL, `photo_url` text DEFAULT NULL, `territory` varchar(255) DEFAULT NULL, `secondary_areas` varchar(255) DEFAULT NULL, `crimes` text DEFAULT NULL, `known_vehicles` text DEFAULT NULL, `known_weapons` text DEFAULT NULL, `leader_name` varchar(120) DEFAULT NULL, `last_activity_at` datetime DEFAULT NULL, `summary` text DEFAULT NULL, `modus_operandi` text DEFAULT NULL, `relations_notes` text DEFAULT NULL, `internal_notes` text DEFAULT NULL, `tags` varchar(255) DEFAULT NULL, `members_json` longtext DEFAULT NULL, `nationality` varchar(120) DEFAULT NULL, `estimated_strength` int(11) DEFAULT 0, `finances_notes` text DEFAULT NULL, `communication_methods` text DEFAULT NULL, `signs_graffiti` text DEFAULT NULL, `intel_source` varchar(255) DEFAULT NULL, `intel_reliability` varchar(30) DEFAULT 'UNVERIFIED', `active_cases` varchar(255) DEFAULT NULL, `color` varchar(7) DEFAULT '#ef4444', `territory_json` longtext DEFAULT NULL, `created_by` varchar(120) DEFAULT NULL, `updated_by` varchar(120) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_grades` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `label` varchar(100) NOT NULL, `level` int(11) NOT NULL, `discord_role_id` varchar(50) NOT NULL, `permissions` longtext DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_incident_reports` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `report_number` varchar(50) DEFAULT NULL, `template_id` int(11) DEFAULT NULL, `template_label` varchar(255) DEFAULT NULL, `status` varchar(50) DEFAULT 'draft', `priority` varchar(50) DEFAULT 'normal', `incident_type` varchar(100) DEFAULT NULL, `incident_datetime` datetime DEFAULT NULL, `location` varchar(255) DEFAULT NULL, `zone` varchar(255) DEFAULT NULL, `reporting_officer` varchar(255) DEFAULT NULL, `assisting_officers_json` longtext DEFAULT NULL, `involved_citizens_json` longtext DEFAULT NULL, `witnesses_json` longtext DEFAULT NULL, `vehicles_json` longtext DEFAULT NULL, `evidence_json` longtext DEFAULT NULL, `summary` text DEFAULT NULL, `narrative` longtext DEFAULT NULL, `actions_taken` longtext DEFAULT NULL, `charges_recommended` text DEFAULT NULL, `internal_notes` longtext DEFAULT NULL, `rendered_html` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `updated_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_investigations` ( `id` int(11) NOT NULL, `case_number` varchar(32) NOT NULL, `primary_department_id` int(11) NOT NULL, `title` varchar(255) NOT NULL, `investigation_type` varchar(50) NOT NULL DEFAULT 'OTHER', `priority` varchar(20) NOT NULL DEFAULT 'MEDIUM', `status` varchar(30) NOT NULL DEFAULT 'OPEN', `classification` varchar(30) NOT NULL DEFAULT 'STANDARD', `opened_at` bigint(20) DEFAULT NULL, `last_activity_at` bigint(20) DEFAULT NULL, `summary` text DEFAULT NULL, `lead_investigator` varchar(255) DEFAULT NULL, `task_force` varchar(255) DEFAULT NULL, `targets` longtext DEFAULT NULL, `victims` longtext DEFAULT NULL, `locations` longtext DEFAULT NULL, `offences` longtext DEFAULT NULL, `facts` longtext DEFAULT NULL, `leads` longtext DEFAULT NULL, `evidence` longtext DEFAULT NULL, `evidence_photos` text DEFAULT NULL, `timeline` longtext DEFAULT NULL, `warrants_ref` text DEFAULT NULL, `related_cases` text DEFAULT NULL, `internal_notes` longtext DEFAULT NULL, `closure_summary` longtext DEFAULT NULL, `threat_level` varchar(20) NOT NULL DEFAULT 'MEDIUM', `modus_operandi` longtext DEFAULT NULL, `gang_org` varchar(255) DEFAULT NULL, `operations` longtext DEFAULT NULL, `informants` longtext DEFAULT NULL, `court_docs` varchar(255) DEFAULT NULL, `asset_seizures` text DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `updated_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_investigation_departments` ( `id` int(11) NOT NULL, `investigation_id` int(11) NOT NULL, `department_id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_mailboxes` ( `id` bigint(20) UNSIGNED NOT NULL, `department_id` int(11) NOT NULL, `owner_identifier` varchar(120) NOT NULL, `owner_discord_id` varchar(64) DEFAULT NULL, `agent_id` int(11) DEFAULT NULL, `local_part` varchar(120) NOT NULL, `domain_part` varchar(120) NOT NULL, `address` varchar(255) NOT NULL, `display_name` varchar(120) NOT NULL, `signature` text DEFAULT NULL, `color` varchar(24) NOT NULL DEFAULT '#5b8cff', `is_primary` tinyint(1) NOT NULL DEFAULT 0, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_mailbox_members` ( `id` bigint(20) UNSIGNED NOT NULL, `mailbox_id` bigint(20) UNSIGNED NOT NULL, `identifier` varchar(120) NOT NULL, `role` enum('owner','editor','viewer') NOT NULL DEFAULT 'owner', `created_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_mail_messages` ( `id` bigint(20) UNSIGNED NOT NULL, `department_id` int(11) NOT NULL, `thread_key` varchar(120) NOT NULL, `sender_mailbox_id` bigint(20) UNSIGNED DEFAULT NULL, `reply_to_message_id` bigint(20) UNSIGNED DEFAULT NULL, `from_address` varchar(255) NOT NULL, `from_name` varchar(120) NOT NULL, `subject` varchar(255) NOT NULL, `body_html` longtext DEFAULT NULL, `body_text` longtext DEFAULT NULL, `attachments_json` longtext DEFAULT NULL, `is_draft` tinyint(1) NOT NULL DEFAULT 0, `sent_at` bigint(20) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_mail_message_boxes` ( `id` bigint(20) UNSIGNED NOT NULL, `mailbox_id` bigint(20) UNSIGNED NOT NULL, `message_id` bigint(20) UNSIGNED NOT NULL, `box_type` enum('inbox','sent','drafts','trash','archive') NOT NULL, `is_read` tinyint(1) NOT NULL DEFAULT 0, `is_starred` tinyint(1) NOT NULL DEFAULT 0, `deleted_at` bigint(20) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_mail_message_recipients` ( `id` bigint(20) UNSIGNED NOT NULL, `message_id` bigint(20) UNSIGNED NOT NULL, `mailbox_id` bigint(20) UNSIGNED DEFAULT NULL, `recipient_type` enum('to','cc','bcc') NOT NULL, `address` varchar(255) NOT NULL, `display_name` varchar(120) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_medical_admissions` ( `id` int(11) NOT NULL, `admission_number` varchar(32) DEFAULT NULL, `citizen_id` int(11) DEFAULT NULL, `patient_name` varchar(120) NOT NULL, `patient_phone` varchar(64) DEFAULT NULL, `emergency_contact` varchar(255) DEFAULT NULL, `started_at` bigint(20) DEFAULT NULL, `discharged_at` bigint(20) DEFAULT NULL, `status` varchar(32) NOT NULL DEFAULT 'admitted', `priority` tinyint(4) NOT NULL DEFAULT 2, `ward` varchar(32) NOT NULL DEFAULT 'ER', `arrival_mode` varchar(32) NOT NULL DEFAULT 'EMS', `room` varchar(64) DEFAULT NULL, `bed` varchar(64) DEFAULT NULL, `chief_complaint` varchar(255) DEFAULT NULL, `doctor_name` varchar(120) DEFAULT NULL, `nurse_name` varchar(120) DEFAULT NULL, `temperature` varchar(32) DEFAULT NULL, `blood_pressure` varchar(32) DEFAULT NULL, `pulse` varchar(32) DEFAULT NULL, `spo2` varchar(32) DEFAULT NULL, `allergies` text DEFAULT NULL, `diagnosis` longtext DEFAULT NULL, `treatment` longtext DEFAULT NULL, `discharge_notes` longtext DEFAULT NULL, `notes` longtext DEFAULT NULL, `created_by` varchar(120) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; CREATE TABLE `mdt_medical_patients` ( `id` int(11) NOT NULL, `citizen_id` int(11) NOT NULL, `blood_type` varchar(10) DEFAULT NULL, `height_cm` int(11) DEFAULT NULL, `weight_kg` int(11) DEFAULT NULL, `allergies` text DEFAULT NULL, `current_medications` text DEFAULT NULL, `medical_history` text DEFAULT NULL, `known_conditions` text DEFAULT NULL, `risk_level` varchar(50) DEFAULT NULL, `profile_status` varchar(50) DEFAULT NULL, `emergency_contact_name` varchar(100) DEFAULT NULL, `emergency_contact_phone` varchar(50) DEFAULT NULL, `emergency_contact_relation` varchar(50) DEFAULT NULL, `insurance_provider` varchar(100) DEFAULT NULL, `primary_physician` varchar(100) DEFAULT NULL, `admission_status` varchar(50) DEFAULT NULL, `last_visit_at` datetime DEFAULT NULL, `notes` text DEFAULT NULL, `created_by` varchar(100) DEFAULT NULL, `updated_by` varchar(100) DEFAULT NULL, `created_at` datetime DEFAULT NULL, `updated_at` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_medical_reports` ( `id` int(11) NOT NULL, `report_number` varchar(40) DEFAULT NULL, `patient_id` int(11) NOT NULL, `citizen_id` int(11) DEFAULT NULL, `occured_at` datetime DEFAULT NULL, `report_type` varchar(40) DEFAULT 'CONSULTATION', `priority` varchar(20) DEFAULT 'NORMAL', `status` varchar(20) DEFAULT 'OPEN', `outcome` varchar(30) DEFAULT 'TREATED', `location` varchar(255) DEFAULT NULL, `physician_name` varchar(120) DEFAULT NULL, `physician_badge` varchar(60) DEFAULT NULL, `admission_ref` varchar(80) DEFAULT NULL, `diagnosis` varchar(255) DEFAULT NULL, `severity` varchar(20) DEFAULT 'MINOR', `recovery_time` varchar(100) DEFAULT NULL, `blood_pressure` varchar(40) DEFAULT NULL, `heart_rate` varchar(40) DEFAULT NULL, `temperature` varchar(40) DEFAULT NULL, `oxygen_saturation` varchar(40) DEFAULT NULL, `pain_level` varchar(20) DEFAULT NULL, `hospitalized` tinyint(1) DEFAULT 0, `treatment` longtext DEFAULT NULL, `followup_notes` longtext DEFAULT NULL, `internal_notes` longtext DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_ois_reports` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `report_number` varchar(32) DEFAULT NULL, `status` varchar(24) DEFAULT 'draft', `occurred_at` datetime DEFAULT NULL, `location` varchar(255) DEFAULT NULL, `officer_name` varchar(120) DEFAULT NULL, `officer_badge` varchar(60) DEFAULT NULL, `officer_rank` varchar(100) DEFAULT NULL, `unit_callsign` varchar(60) DEFAULT NULL, `weapon_type` varchar(60) DEFAULT NULL, `shots_fired` int(11) DEFAULT 0, `subject_name` varchar(120) DEFAULT NULL, `present_officers` text DEFAULT NULL, `initial_reason` text DEFAULT NULL, `summary` text DEFAULT NULL, `narrative` longtext DEFAULT NULL, `evidence` text DEFAULT NULL, `injuries` text DEFAULT NULL, `aftermath` text DEFAULT NULL, `internal_notes` text DEFAULT NULL, `created_by` varchar(120) DEFAULT NULL, `creator_discord_id` varchar(50) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_operation_reports` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `report_number` varchar(40) NOT NULL, `template_id` int(11) DEFAULT NULL, `template_label` varchar(255) DEFAULT NULL, `title` varchar(255) NOT NULL, `operation_type` varchar(120) DEFAULT NULL, `status` varchar(60) DEFAULT 'draft', `priority` varchar(60) DEFAULT 'normal', `operation_date` varchar(40) DEFAULT NULL, `location` varchar(255) DEFAULT NULL, `commander_name` varchar(255) DEFAULT NULL, `supervisor_name` varchar(255) DEFAULT NULL, `department_label` varchar(120) DEFAULT NULL, `units_involved_json` longtext DEFAULT NULL, `personnel_json` longtext DEFAULT NULL, `objectives_json` longtext DEFAULT NULL, `timeline_json` longtext DEFAULT NULL, `assets_json` longtext DEFAULT NULL, `outcome_json` longtext DEFAULT NULL, `summary` longtext DEFAULT NULL, `execution_details` longtext DEFAULT NULL, `intel_notes` longtext DEFAULT NULL, `use_of_force` longtext DEFAULT NULL, `evidence_notes` longtext DEFAULT NULL, `recommendations` longtext DEFAULT NULL, `internal_notes` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `created_by_avatar` longtext DEFAULT NULL, `updated_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_photos` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `title` varchar(255) NOT NULL DEFAULT '', `description` text DEFAULT NULL, `file_name` varchar(255) NOT NULL, `mime_type` varchar(100) NOT NULL, `file_size` int(11) NOT NULL DEFAULT 0, `image_url` text NOT NULL, `thumb_url` text DEFAULT NULL, `fivemanage_id` varchar(255) DEFAULT NULL, `fivemanage_path` varchar(500) DEFAULT NULL, `uploaded_by` varchar(255) NOT NULL DEFAULT '', `created_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_recruitment_academy` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `title` varchar(255) NOT NULL, `description` text DEFAULT NULL, `start_date` varchar(50) DEFAULT NULL, `end_date` varchar(50) DEFAULT NULL, `location_label` varchar(255) DEFAULT NULL, `instructor_name` varchar(255) DEFAULT NULL, `capacity` int(11) NOT NULL DEFAULT 0, `status` varchar(50) NOT NULL DEFAULT 'draft', `modules` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_recruitment_candidates` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `form_id` int(11) DEFAULT NULL, `academy_session_id` int(11) DEFAULT NULL, `citizen_id` int(11) DEFAULT NULL, `discord_id` varchar(64) DEFAULT NULL, `full_name` varchar(255) NOT NULL, `date_of_birth` varchar(50) DEFAULT NULL, `phone` varchar(100) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `city` varchar(120) DEFAULT NULL, `motivation` text DEFAULT NULL, `experience_text` text DEFAULT NULL, `strengths` text DEFAULT NULL, `weaknesses` text DEFAULT NULL, `notes_internal` text DEFAULT NULL, `source_label` varchar(120) DEFAULT 'MDT', `status` varchar(50) NOT NULL DEFAULT 'new', `recruiter_name` varchar(255) DEFAULT NULL, `academy_status` varchar(50) NOT NULL DEFAULT 'not_scheduled', `final_decision` varchar(50) NOT NULL DEFAULT 'pending', `final_comment` text DEFAULT NULL, `answers` longtext DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_recruitment_candidate_exams` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `candidate_id` int(11) NOT NULL, `academy_id` int(11) DEFAULT NULL, `form_id` int(11) DEFAULT NULL, `exam_title` varchar(255) NOT NULL, `exam_type` varchar(50) NOT NULL DEFAULT 'academy_exam', `assigned_by` varchar(255) DEFAULT NULL, `assigned_at` bigint(20) NOT NULL, `status` varchar(50) NOT NULL DEFAULT 'assigned', `score` decimal(10,2) NOT NULL DEFAULT 0.00, `max_score` decimal(10,2) NOT NULL DEFAULT 100.00, `grader_name` varchar(255) DEFAULT NULL, `grader_comment` text DEFAULT NULL, `answers` longtext DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_recruitment_forms` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `title` varchar(255) NOT NULL, `description` text DEFAULT NULL, `form_type` varchar(50) NOT NULL DEFAULT 'application', `is_active` tinyint(1) NOT NULL DEFAULT 1, `pass_score` int(11) NOT NULL DEFAULT 70, `duration_minutes` int(11) NOT NULL DEFAULT 0, `questions` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_routesheets` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `title` varchar(255) NOT NULL, `state_json` longtext DEFAULT NULL, `background_image` longtext DEFAULT NULL, `revision` int(11) NOT NULL DEFAULT 0, `created_by` varchar(120) DEFAULT NULL, `updated_by` varchar(120) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL, `archived` tinyint(1) NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_routesheet_ops` ( `id` bigint(20) NOT NULL, `board_id` int(11) NOT NULL, `revision` int(11) NOT NULL, `author` varchar(120) DEFAULT NULL, `op_type` varchar(50) NOT NULL, `payload` longtext NOT NULL, `created_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_seizures` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `seizure_number` varchar(32) DEFAULT NULL, `status` varchar(32) NOT NULL DEFAULT 'UNDER_SEAL', `category` varchar(32) NOT NULL DEFAULT 'OTHER', `estimated_value` decimal(14,2) NOT NULL DEFAULT 0.00, `title` varchar(255) NOT NULL, `summary` text DEFAULT NULL, `legal_basis` text DEFAULT NULL, `related_citizen_id` int(11) DEFAULT NULL, `related_citizen_name` varchar(255) DEFAULT NULL, `related_vehicle_plate` varchar(64) DEFAULT NULL, `related_case_number` varchar(64) DEFAULT NULL, `location_label` varchar(255) DEFAULT NULL, `storage_location` varchar(255) DEFAULT NULL, `seized_at` datetime DEFAULT NULL, `officer_name` varchar(255) DEFAULT NULL, `supervisor_name` varchar(255) DEFAULT NULL, `image_data` longtext DEFAULT NULL, `items_json` longtext DEFAULT NULL, `custody_json` longtext DEFAULT NULL, `notes` longtext DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_service_sessions` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `identifier` varchar(64) NOT NULL, `discord_id` varchar(32) DEFAULT NULL, `agent_name` varchar(128) NOT NULL, `started_at` bigint(20) NOT NULL, `ended_at` bigint(20) DEFAULT NULL, `duration_seconds` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_settings` ( `id` int(11) NOT NULL, `department_id` int(11) DEFAULT NULL, `type` varchar(50) DEFAULT NULL, `label` varchar(255) DEFAULT NULL, `value` text DEFAULT NULL, `icon` varchar(255) DEFAULT NULL, `image` varchar(2048) DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_statements` ( `id` int(11) NOT NULL, `statement_number` varchar(50) DEFAULT NULL, `department_id` int(11) NOT NULL, `citizen_id` int(11) DEFAULT NULL, `citizen_name` varchar(255) DEFAULT NULL, `type` varchar(50) DEFAULT 'WITNESS', `location` varchar(255) DEFAULT NULL, `officer_name` varchar(255) DEFAULT NULL, `officer_badge` varchar(100) DEFAULT NULL, `case_ref` varchar(100) DEFAULT NULL, `summary` text DEFAULT NULL, `content` longtext DEFAULT NULL, `rights_read` tinyint(1) DEFAULT 0, `signature` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_stp_cases` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `case_number` varchar(50) DEFAULT NULL, `trainee_agent_id` int(11) DEFAULT NULL, `trainee_name` varchar(255) DEFAULT NULL, `trainee_badge` varchar(120) DEFAULT NULL, `trainee_rank` varchar(120) DEFAULT NULL, `trainee_avatar` text DEFAULT NULL, `primary_fto_agent_id` int(11) DEFAULT NULL, `primary_fto_name` varchar(255) DEFAULT NULL, `secondary_fto_agent_id` int(11) DEFAULT NULL, `secondary_fto_name` varchar(255) DEFAULT NULL, `status` varchar(60) DEFAULT 'ACTIVE', `phase` varchar(60) DEFAULT 'PHASE_1', `priority` varchar(60) DEFAULT 'NORMAL', `academy_class` varchar(120) DEFAULT NULL, `start_date` datetime DEFAULT NULL, `target_end_date` datetime DEFAULT NULL, `hours_completed` decimal(10,2) DEFAULT 0.00, `shifts_completed` int(11) DEFAULT 0, `score_overall` decimal(10,2) DEFAULT 0.00, `strengths` mediumtext DEFAULT NULL, `improvement_goals` mediumtext DEFAULT NULL, `remedial_plan` mediumtext DEFAULT NULL, `command_notes` mediumtext DEFAULT NULL, `recommendation` mediumtext DEFAULT NULL, `internal_flags_json` longtext DEFAULT NULL, `custom_fields_json` longtext DEFAULT NULL, `skills_snapshot_json` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `updated_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL, `updated_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_stp_case_events` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `case_id` int(11) NOT NULL, `event_type` varchar(80) DEFAULT NULL, `title` varchar(255) DEFAULT NULL, `description` mediumtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_stp_evaluations` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `case_id` int(11) NOT NULL, `evaluation_number` varchar(50) DEFAULT NULL, `phase` varchar(60) DEFAULT NULL, `status` varchar(60) DEFAULT 'SATISFACTORY', `shift_type` varchar(120) DEFAULT NULL, `patrol_area` varchar(255) DEFAULT NULL, `shift_date` datetime DEFAULT NULL, `start_time` varchar(20) DEFAULT NULL, `end_time` varchar(20) DEFAULT NULL, `fto_agent_id` int(11) DEFAULT NULL, `fto_name` varchar(255) DEFAULT NULL, `partner_names_json` longtext DEFAULT NULL, `calls_handled` int(11) DEFAULT 0, `arrests_count` int(11) DEFAULT 0, `citations_count` int(11) DEFAULT 0, `reports_count` int(11) DEFAULT 0, `score_total` decimal(10,2) DEFAULT 0.00, `skills_scores_json` longtext DEFAULT NULL, `observations_positive` mediumtext DEFAULT NULL, `observations_negative` mediumtext DEFAULT NULL, `narrative` mediumtext DEFAULT NULL, `safety_issues` mediumtext DEFAULT NULL, `recommendation` mediumtext DEFAULT NULL, `attachments_json` longtext DEFAULT NULL, `created_by` varchar(255) DEFAULT NULL, `created_at` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_summons` ( `id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `target_type` varchar(20) NOT NULL, `target_id` int(11) NOT NULL, `target_name` varchar(120) DEFAULT '', `dept_label` varchar(60) DEFAULT '', `dept_logo` text DEFAULT NULL, `issuer_type` varchar(20) DEFAULT 'department', `issuer_label` varchar(80) DEFAULT '', `issuer_logo` text DEFAULT NULL, `template_id` int(11) DEFAULT 0, `template_label` varchar(80) DEFAULT '', `date` varchar(20) DEFAULT '', `time` varchar(20) DEFAULT '', `location` varchar(160) DEFAULT '', `reason` text DEFAULT NULL, `content` longtext DEFAULT NULL, `created_by` varchar(80) DEFAULT '', `created_at` bigint(20) DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_traffic_tickets` ( `id` int(11) NOT NULL, `department_id` int(11) DEFAULT NULL, `ticket_number` varchar(32) NOT NULL, `citizen_id` int(11) NOT NULL, `citizen_name` varchar(128) DEFAULT NULL, `issued_at` datetime DEFAULT NULL, `location` varchar(128) NOT NULL, `type` varchar(32) NOT NULL, `code` varchar(32) DEFAULT NULL, `plate` varchar(16) DEFAULT NULL, `vehicle_desc` varchar(128) DEFAULT NULL, `fine_amount` int(11) NOT NULL DEFAULT 0, `points` int(11) NOT NULL DEFAULT 0, `status` varchar(16) NOT NULL DEFAULT 'unpaid', `court_date` date DEFAULT NULL, `notes` text DEFAULT NULL, `bodycam_ref` varchar(64) DEFAULT NULL, `cad_ref` varchar(64) DEFAULT NULL, `speed` int(11) DEFAULT NULL, `speed_limit` int(11) DEFAULT NULL, `speed_method` varchar(16) DEFAULT NULL, `officer_name` varchar(64) DEFAULT NULL, `officer_grade` varchar(64) DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT current_timestamp(), `updated_at` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_vehicles` ( `id` int(11) NOT NULL, `citizen_id` int(11) DEFAULT NULL, `plate` varchar(16) NOT NULL, `model` varchar(64) DEFAULT NULL, `color` varchar(32) DEFAULT NULL, `class` varchar(32) DEFAULT NULL, `vin` varchar(32) DEFAULT NULL, `insurance` varchar(16) DEFAULT 'UNKNOWN', `registration` varchar(16) DEFAULT 'UNKNOWN', `status` varchar(16) DEFAULT 'ACTIVE', `flagged` tinyint(1) DEFAULT 0, `notes` text DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_vehicle_events` ( `id` int(11) NOT NULL, `vehicle_id` int(11) NOT NULL, `type` varchar(24) NOT NULL, `title` varchar(64) DEFAULT NULL, `details` text DEFAULT NULL, `author` varchar(64) DEFAULT NULL, `created_at` bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ALTER TABLE `mdt_absences` ADD PRIMARY KEY (`id`), ADD KEY `idx_absences_department` (`department_id`), ADD KEY `idx_absences_status` (`status`), ADD KEY `idx_absences_dates` (`start_at`,`end_at`); ALTER TABLE `mdt_agents` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `discord_id` (`discord_id`,`department_id`), ADD KEY `idx_mdt_agents_department_discord` (`department_id`,`discord_id`); ALTER TABLE `mdt_arrest_reports` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_arrest_reports_department` (`department_id`), ADD KEY `idx_mdt_arrest_reports_responsible` (`responsible_id`); ALTER TABLE `mdt_bips` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_bips_department_id` (`department_id`), ADD KEY `idx_mdt_bips_status` (`status`); ALTER TABLE `mdt_bracelets` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_bracelet_number` (`bracelet_number`), ADD KEY `idx_bracelet_citizen_id` (`citizen_id`), ADD KEY `idx_bracelet_status` (`status`), ADD KEY `idx_bracelet_department_id` (`department_id`); ALTER TABLE `mdt_chat_categories` ADD PRIMARY KEY (`id`), ADD KEY `department_id` (`department_id`); ALTER TABLE `mdt_chat_channels` ADD PRIMARY KEY (`id`), ADD KEY `department_id` (`department_id`), ADD KEY `category_id` (`category_id`); ALTER TABLE `mdt_chat_channel_acl` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_grade` (`channel_id`,`allow_grade_role_id`), ADD UNIQUE KEY `uniq_agent` (`channel_id`,`allow_agent_discord_id`), ADD KEY `channel_id` (`channel_id`); ALTER TABLE `mdt_chat_mentions` ADD PRIMARY KEY (`id`), ADD KEY `mentioned_discord_id` (`mentioned_discord_id`), ADD KEY `message_id` (`message_id`); ALTER TABLE `mdt_chat_messages` ADD PRIMARY KEY (`id`), ADD KEY `department_id` (`department_id`), ADD KEY `channel_id` (`channel_id`), ADD KEY `author_discord_id` (`author_discord_id`); ALTER TABLE `mdt_chat_reads` ADD PRIMARY KEY (`department_id`,`channel_id`,`reader_discord_id`); ALTER TABLE `mdt_citizens` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uq_mdt_citizens_identifier` (`identifier`); ALTER TABLE `mdt_citizen_owners` ADD PRIMARY KEY (`citizen_id`), ADD KEY `idx_mdt_citizen_owner_identifier` (`owner_identifier`); ALTER TABLE `mdt_complaints` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_client_request` (`client_request_id`), ADD KEY `idx_mdt_complaints_department` (`department_id`), ADD KEY `idx_mdt_complaints_status` (`status`), ADD KEY `idx_mdt_complaints_complainant` (`complainant_citizen_id`), ADD KEY `idx_mdt_complaints_accused` (`accused_citizen_id`); ALTER TABLE `mdt_departments` ADD PRIMARY KEY (`id`); ALTER TABLE `mdt_dispatch_agents` ADD PRIMARY KEY (`identifier`), ADD KEY `department_id` (`department_id`), ADD KEY `status` (`status`), ADD KEY `unit_callsign` (`unit_callsign`), ADD KEY `idx_mdt_dispatch_agents_discord_id` (`discord_id`); ALTER TABLE `mdt_dispatch_calls` ADD PRIMARY KEY (`id`), ADD KEY `department_id` (`department_id`), ADD KEY `status` (`status`), ADD KEY `assigned_callsign` (`assigned_callsign`), ADD KEY `created_at` (`created_at`); ALTER TABLE `mdt_dispatch_units` ADD PRIMARY KEY (`callsign`), ADD KEY `department_id` (`department_id`); ALTER TABLE `mdt_dispatch_unit_members` ADD PRIMARY KEY (`callsign`,`identifier`), ADD KEY `identifier` (`identifier`); ALTER TABLE `mdt_document_categories` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_document_categories_department` (`department_id`); ALTER TABLE `mdt_document_links` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_document_links_department` (`department_id`), ADD KEY `idx_mdt_document_links_category` (`category_id`); ALTER TABLE `mdt_doc_comments` ADD PRIMARY KEY (`id`), ADD KEY `idx_comments_doc` (`doc_id`,`resolved`); ALTER TABLE `mdt_doc_versions` ADD PRIMARY KEY (`id`), ADD KEY `idx_versions_doc` (`doc_id`); ALTER TABLE `mdt_doj_ccw` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uk_mdt_doj_ccw_number` (`ccw_number`), ADD KEY `idx_mdt_doj_ccw_citizen` (`citizen_id`); ALTER TABLE `mdt_doj_criminal_records` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_doj_criminal_records_citizen_id` (`citizen_id`), ADD KEY `idx_mdt_doj_criminal_records_record_number` (`record_number`); ALTER TABLE `mdt_doj_judgements` ADD PRIMARY KEY (`id`); ALTER TABLE `mdt_doj_warrants` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_warrant_number` (`warrant_number`), ADD KEY `idx_department` (`department_id`), ADD KEY `idx_citizen` (`citizen_id`), ADD KEY `idx_status` (`status`); ALTER TABLE `mdt_drive_activity` ADD PRIMARY KEY (`id`), ADD KEY `idx_activity_dept` (`department_id`,`created_at`); ALTER TABLE `mdt_drive_items` ADD PRIMARY KEY (`id`), ADD KEY `idx_drive_dept_parent` (`department_id`,`parent_id`), ADD KEY `idx_drive_dept_trashed` (`department_id`,`trashed`), ADD KEY `idx_drive_dept_type` (`department_id`,`type`); ALTER TABLE `mdt_drive_permissions` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_perm_item` (`item_id`); ALTER TABLE `mdt_drive_starred` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_star` (`item_id`,`player_identifier`); ALTER TABLE `mdt_events` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_events_agent` (`agent_identifier`), ADD KEY `idx_mdt_events_department` (`department_id`), ADD KEY `idx_mdt_events_range` (`starts_at`,`ends_at`); ALTER TABLE `mdt_fines` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_mdt_fines_number` (`fine_number`), ADD KEY `idx_mdt_fines_citizen` (`citizen_id`), ADD KEY `idx_mdt_fines_status` (`status`), ADD KEY `idx_mdt_fines_created` (`created_at`); ALTER TABLE `mdt_forms` ADD PRIMARY KEY (`id`); ALTER TABLE `mdt_form_questions` ADD PRIMARY KEY (`id`), ADD KEY `idx_form_questions_form_id` (`form_id`); ALTER TABLE `mdt_form_submissions` ADD PRIMARY KEY (`id`), ADD KEY `idx_form_submissions_form_id` (`form_id`), ADD KEY `idx_form_submissions_discord_id` (`discord_id`); ALTER TABLE `mdt_fto_cases` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_fto_cases_department` (`department_id`), ADD KEY `idx_mdt_fto_cases_trainee` (`trainee_agent_id`); ALTER TABLE `mdt_fto_case_events` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_fto_case_events_case` (`case_id`), ADD KEY `idx_mdt_fto_case_events_department` (`department_id`); ALTER TABLE `mdt_fto_evaluations` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_fto_evaluations_case` (`case_id`), ADD KEY `idx_mdt_fto_evaluations_department` (`department_id`); ALTER TABLE `mdt_gangs` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_gangs_department` (`department_id`), ADD KEY `idx_mdt_gangs_status` (`status`), ADD KEY `idx_mdt_gangs_threat` (`threat_level`); ALTER TABLE `mdt_grades` ADD PRIMARY KEY (`id`), ADD KEY `department_id` (`department_id`); ALTER TABLE `mdt_incident_reports` ADD PRIMARY KEY (`id`); ALTER TABLE `mdt_investigations` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_case_number` (`case_number`), ADD KEY `idx_primary_department` (`primary_department_id`), ADD KEY `idx_status` (`status`), ADD KEY `idx_priority` (`priority`); ALTER TABLE `mdt_investigation_departments` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_investigation_department` (`investigation_id`,`department_id`), ADD KEY `idx_department_id` (`department_id`); ALTER TABLE `mdt_mailboxes` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_mailbox_address` (`address`), ADD KEY `idx_mailboxes_department` (`department_id`), ADD KEY `idx_mailboxes_owner` (`owner_identifier`,`department_id`); ALTER TABLE `mdt_mailbox_members` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_mailbox_member` (`mailbox_id`,`identifier`), ADD KEY `idx_mailbox_members_identifier` (`identifier`); ALTER TABLE `mdt_mail_messages` ADD PRIMARY KEY (`id`), ADD KEY `idx_mail_messages_department` (`department_id`), ADD KEY `idx_mail_messages_thread` (`thread_key`), ADD KEY `idx_mail_messages_sender` (`sender_mailbox_id`); ALTER TABLE `mdt_mail_message_boxes` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_mail_copy` (`mailbox_id`,`message_id`,`box_type`), ADD KEY `idx_mail_boxes_mailbox` (`mailbox_id`,`box_type`), ADD KEY `idx_mail_boxes_message` (`message_id`); ALTER TABLE `mdt_mail_message_recipients` ADD PRIMARY KEY (`id`), ADD KEY `idx_mail_recipients_message` (`message_id`), ADD KEY `idx_mail_recipients_mailbox` (`mailbox_id`); ALTER TABLE `mdt_medical_admissions` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_admission_number` (`admission_number`), ADD KEY `idx_citizen_id` (`citizen_id`), ADD KEY `idx_status` (`status`), ADD KEY `idx_priority` (`priority`), ADD KEY `idx_started_at` (`started_at`); ALTER TABLE `mdt_medical_patients` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `unique_patient` (`citizen_id`); ALTER TABLE `mdt_medical_reports` ADD PRIMARY KEY (`id`), ADD KEY `idx_medical_reports_patient_id` (`patient_id`), ADD KEY `idx_medical_reports_citizen_id` (`citizen_id`), ADD KEY `idx_medical_reports_report_number` (`report_number`); ALTER TABLE `mdt_ois_reports` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_ois_department` (`department_id`), ADD KEY `idx_mdt_ois_status` (`status`); ALTER TABLE `mdt_operation_reports` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_mdt_operation_report_number` (`report_number`), ADD KEY `idx_mdt_operation_reports_department` (`department_id`), ADD KEY `idx_mdt_operation_reports_created_at` (`created_at`); ALTER TABLE `mdt_photos` ADD PRIMARY KEY (`id`), ADD KEY `idx_department_id` (`department_id`); ALTER TABLE `mdt_recruitment_academy` ADD PRIMARY KEY (`id`), ADD KEY `idx_recruitment_academy_department` (`department_id`), ADD KEY `idx_recruitment_academy_status` (`status`); ALTER TABLE `mdt_recruitment_candidates` ADD PRIMARY KEY (`id`), ADD KEY `idx_recruitment_candidates_department` (`department_id`), ADD KEY `idx_recruitment_candidates_status` (`status`), ADD KEY `idx_recruitment_candidates_form` (`form_id`); ALTER TABLE `mdt_recruitment_candidate_exams` ADD PRIMARY KEY (`id`), ADD KEY `idx_recruitment_candidate_exams_department` (`department_id`), ADD KEY `idx_recruitment_candidate_exams_candidate` (`candidate_id`); ALTER TABLE `mdt_recruitment_forms` ADD PRIMARY KEY (`id`), ADD KEY `idx_recruitment_forms_department` (`department_id`), ADD KEY `idx_recruitment_forms_type` (`form_type`); ALTER TABLE `mdt_routesheets` ADD PRIMARY KEY (`id`), ADD KEY `idx_routesheets_department` (`department_id`), ADD KEY `idx_routesheets_archived` (`archived`); ALTER TABLE `mdt_routesheet_ops` ADD PRIMARY KEY (`id`), ADD KEY `idx_routesheet_ops_board` (`board_id`), ADD KEY `idx_routesheet_ops_revision` (`revision`); ALTER TABLE `mdt_seizures` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_mdt_seizure_number` (`seizure_number`), ADD KEY `idx_mdt_seizures_department` (`department_id`), ADD KEY `idx_mdt_seizures_citizen` (`related_citizen_id`); ALTER TABLE `mdt_service_sessions` ADD PRIMARY KEY (`id`), ADD KEY `department_id` (`department_id`), ADD KEY `identifier` (`identifier`), ADD KEY `started_at` (`started_at`); ALTER TABLE `mdt_settings` ADD PRIMARY KEY (`id`); ALTER TABLE `mdt_statements` ADD PRIMARY KEY (`id`), ADD KEY `idx_statements_department` (`department_id`), ADD KEY `idx_statements_citizen` (`citizen_id`); ALTER TABLE `mdt_stp_cases` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_fto_cases_department` (`department_id`), ADD KEY `idx_mdt_fto_cases_trainee` (`trainee_agent_id`); ALTER TABLE `mdt_stp_case_events` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_fto_case_events_case` (`case_id`), ADD KEY `idx_mdt_fto_case_events_department` (`department_id`); ALTER TABLE `mdt_stp_evaluations` ADD PRIMARY KEY (`id`), ADD KEY `idx_mdt_fto_evaluations_case` (`case_id`), ADD KEY `idx_mdt_fto_evaluations_department` (`department_id`); ALTER TABLE `mdt_summons` ADD PRIMARY KEY (`id`); ALTER TABLE `mdt_traffic_tickets` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `uniq_ticket_number` (`ticket_number`), ADD KEY `idx_citizen_id` (`citizen_id`), ADD KEY `idx_department_id` (`department_id`), ADD KEY `idx_status` (`status`), ADD KEY `idx_issued_at` (`issued_at`), ADD KEY `idx_plate` (`plate`); ALTER TABLE `mdt_vehicles` ADD PRIMARY KEY (`id`), ADD KEY `idx_citizen` (`citizen_id`), ADD KEY `idx_plate` (`plate`), ADD KEY `idx_status` (`status`); ALTER TABLE `mdt_vehicle_events` ADD PRIMARY KEY (`id`), ADD KEY `idx_vehicle` (`vehicle_id`); ALTER TABLE `mdt_absences` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_agents` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10284; ALTER TABLE `mdt_arrest_reports` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_bips` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_bracelets` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_chat_categories` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_chat_channels` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_chat_channel_acl` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_chat_mentions` MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_chat_messages` MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_citizens` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_complaints` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_departments` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=29; ALTER TABLE `mdt_dispatch_calls` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_document_categories` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_document_links` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_doc_comments` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_doc_versions` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_doj_ccw` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_doj_criminal_records` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_doj_judgements` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_doj_warrants` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_drive_activity` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_drive_items` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_drive_permissions` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_drive_starred` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_events` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_fines` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_forms` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_form_questions` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_form_submissions` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_fto_cases` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_fto_case_events` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_fto_evaluations` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_gangs` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_grades` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_incident_reports` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_investigations` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; ALTER TABLE `mdt_investigation_departments` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; ALTER TABLE `mdt_mailboxes` MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_mailbox_members` MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_mail_messages` MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_mail_message_boxes` MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_mail_message_recipients` MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_medical_admissions` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_medical_patients` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_medical_reports` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_ois_reports` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_operation_reports` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_photos` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_recruitment_academy` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_recruitment_candidates` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_recruitment_candidate_exams` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_recruitment_forms` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_routesheets` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_routesheet_ops` MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_seizures` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_service_sessions` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_settings` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=52; ALTER TABLE `mdt_statements` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_stp_cases` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_stp_case_events` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_stp_evaluations` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_summons` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_traffic_tickets` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_vehicles` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_vehicle_events` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `mdt_grades` ADD CONSTRAINT `mdt_grades_ibfk_1` FOREIGN KEY (`department_id`) REFERENCES `mdt_departments` (`id`) ON DELETE CASCADE; ALTER TABLE `mdt_investigation_departments` ADD CONSTRAINT `fk_mdt_inv_dept_investigation` FOREIGN KEY (`investigation_id`) REFERENCES `mdt_investigations` (`id`) ON DELETE CASCADE; COMMIT; CREATE TABLE `mdt_annuaire` ( `id` int(11) NOT NULL AUTO_INCREMENT, `department_id` int(11) NOT NULL, `discord_id` varchar(50) NOT NULL, `full_name` varchar(150) DEFAULT NULL, `firstname` varchar(100) DEFAULT NULL, `lastname` varchar(100) DEFAULT NULL, `phone_number` varchar(50) DEFAULT NULL, `avatar` varchar(255) DEFAULT NULL, `custom_avatar` varchar(255) DEFAULT NULL, `grade` varchar(100) DEFAULT NULL, `email` varchar(150) DEFAULT NULL, `address` varchar(255) DEFAULT NULL, `note` text DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `dept_discord` (`department_id`, `discord_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS mdt_wiretaps ( id INT AUTO_INCREMENT PRIMARY KEY, phone_number VARCHAR(30) NOT NULL, agent_name VARCHAR(100), department_id INT, reason VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) DEFAULT 'ACTIVE', INDEX idx_wt_dept (department_id) ); CREATE TABLE IF NOT EXISTS mdt_wiretap_calls ( id INT AUTO_INCREMENT PRIMARY KEY, wiretap_id INT NOT NULL, caller_number VARCHAR(30), callee_number VARCHAR(30), started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, ended_at TIMESTAMP NULL, duration INT DEFAULT 0, status VARCHAR(20) DEFAULT 'ONGOING', INDEX idx_wtc_wiretap (wiretap_id) ); CREATE TABLE IF NOT EXISTS mdt_spreadsheets ( id INT AUTO_INCREMENT PRIMARY KEY, department_id INT NOT NULL, title VARCHAR(100) NOT NULL DEFAULT 'Nouveau tableau', sheets_json LONGTEXT NOT NULL, permissions_json TEXT DEFAULT NULL, created_by VARCHAR(100), updated_by VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_ss_dept (department_id) ); CREATE TABLE IF NOT EXISTS `mdt_patrol_detachments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `department_id` int(11) NOT NULL, `name` varchar(150) NOT NULL DEFAULT 'Patrol Detachment', `color` varchar(20) DEFAULT 'blue', `created_by` varchar(100) DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT current_timestamp(), `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), KEY `idx_pd_department` (`department_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_patrol_sections` ( `id` int(11) NOT NULL AUTO_INCREMENT, `detachment_id` int(11) NOT NULL, `name` varchar(100) NOT NULL DEFAULT 'Section', `section_order` int(11) NOT NULL DEFAULT 0, `grade_ids` text DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_ps_detachment` (`detachment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_patrol_agent_notes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `agent_id` int(11) NOT NULL, `detachment_id` int(11) NOT NULL, `remark_wc` text DEFAULT NULL, `remark_supervisor` text DEFAULT NULL, `last_rdv_date` date DEFAULT NULL, `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `unique_agent_det` (`agent_id`,`detachment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_patrol_rdv_reports` ( `id` int(11) NOT NULL AUTO_INCREMENT, `agent_id` int(11) NOT NULL, `detachment_id` int(11) NOT NULL, `department_id` int(11) NOT NULL, `supervisor_name` varchar(150) DEFAULT NULL, `report_date` date DEFAULT NULL, `content` longtext DEFAULT NULL, `created_by` varchar(100) DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `idx_prdv_agent` (`agent_id`), KEY `idx_prdv_detachment` (`detachment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `mdt_printer_state` ( `prop_id` int(11) NOT NULL, `ink_black` int(11) NOT NULL DEFAULT 100, `ink_color` int(11) NOT NULL DEFAULT 100, PRIMARY KEY (`prop_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `mdt_license_records` ( `id` int(11) NOT NULL AUTO_INCREMENT, `owner` varchar(60) NOT NULL, `license_type` varchar(60) NOT NULL, `points_lost` int(11) NOT NULL DEFAULT 0, `max_points` int(11) NOT NULL DEFAULT 12, `status` enum('active','suspended','revoked') NOT NULL DEFAULT 'active', `suspended_until` datetime DEFAULT NULL, `notes` text DEFAULT NULL, `updated_by` varchar(100) DEFAULT NULL, `updated_at` bigint(20) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uq_license_record` (`owner`, `license_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; DELIMITER $$ CREATE TRIGGER `trg_esx_users_to_mdt_citizens_insert` AFTER INSERT ON `users` FOR EACH ROW BEGIN INSERT INTO `mdt_citizens` (identifier, firstname, lastname, birthdate, gender, phone) VALUES ( NEW.identifier, NEW.firstname, NEW.lastname, STR_TO_DATE(NEW.dateofbirth, '%d/%m/%Y'), CASE WHEN NEW.sex = 0 THEN 'Homme' WHEN NEW.sex = 1 THEN 'Femme' ELSE 'Inconnu' END, NEW.phone_number ) ON DUPLICATE KEY UPDATE firstname = COALESCE(NULLIF(NEW.firstname, ''), firstname), lastname = COALESCE(NULLIF(NEW.lastname, ''), lastname), birthdate = COALESCE(STR_TO_DATE(NEW.dateofbirth, '%d/%m/%Y'), birthdate), gender = CASE WHEN NEW.sex = 0 THEN 'Homme' WHEN NEW.sex = 1 THEN 'Femme' ELSE gender END, phone = COALESCE(NULLIF(NEW.phone_number, ''), phone); END$$ CREATE TRIGGER `trg_esx_users_to_mdt_citizens_update` AFTER UPDATE ON `users` FOR EACH ROW BEGIN INSERT INTO `mdt_citizens` (identifier, firstname, lastname, birthdate, gender, phone) VALUES ( NEW.identifier, NEW.firstname, NEW.lastname, STR_TO_DATE(NEW.dateofbirth, '%d/%m/%Y'), CASE WHEN NEW.sex = 0 THEN 'Homme' WHEN NEW.sex = 1 THEN 'Femme' ELSE 'Inconnu' END, NEW.phone_number ) ON DUPLICATE KEY UPDATE firstname = COALESCE(NULLIF(NEW.firstname, ''), firstname), lastname = COALESCE(NULLIF(NEW.lastname, ''), lastname), birthdate = COALESCE(STR_TO_DATE(NEW.dateofbirth, '%d/%m/%Y'), birthdate), gender = CASE WHEN NEW.sex = 0 THEN 'Homme' WHEN NEW.sex = 1 THEN 'Femme' ELSE gender END, phone = COALESCE(NULLIF(NEW.phone_number, ''), phone); END$$ DELIMITER ; SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT ; SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS ; SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION ; ALTER TABLE mdt_traffic_tickets ADD COLUMN IF NOT EXISTS items JSON DEFAULT NULL; CREATE TABLE IF NOT EXISTS `mdt_print_logs` ( `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, `ref` VARCHAR(20) NOT NULL, `doc_type` VARCHAR(50) NOT NULL DEFAULT '', `doc_label` VARCHAR(200) NOT NULL DEFAULT '', `printed_by` VARCHAR(100) NOT NULL DEFAULT '', `color` TINYINT(1) NOT NULL DEFAULT 0, `printer_id` INT UNSIGNED, `department_id` INT UNSIGNED, `department_label` VARCHAR(100) NOT NULL DEFAULT '', `created_at` BIGINT NOT NULL DEFAULT 0, INDEX(`department_id`), INDEX(`created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `mdt_deaths` ( `id` int(11) NOT NULL AUTO_INCREMENT, `death_number` varchar(32) DEFAULT NULL, `department_id` int(11) NOT NULL, `citizen_id` int(11) DEFAULT NULL, `citizen_name` varchar(200) NOT NULL, `date_of_death` datetime NOT NULL, `cause` enum('naturelle','accidentelle','violente','suspecte','inconnue') NOT NULL DEFAULT 'inconnue', `location` varchar(255) DEFAULT NULL, `responsible_doctor` varchar(150) DEFAULT NULL, `notes` mediumtext DEFAULT NULL, `linked_report` varchar(64) DEFAULT NULL, `created_by` varchar(150) DEFAULT NULL, `created_at` bigint(20) NOT NULL, PRIMARY KEY (`id`), KEY `idx_deaths_dept` (`department_id`), KEY `idx_deaths_date` (`date_of_death`), KEY `idx_deaths_cause` (`cause`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_shifts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `department_id` int(11) NOT NULL, `agent_name` varchar(150) NOT NULL, `agent_discord_id` varchar(64) DEFAULT NULL, `shift_date` date NOT NULL, `shift_type` enum('day','night','h24') NOT NULL DEFAULT 'day', `role` enum('urgentiste','chirurgien','infirmier','medecin_legiste','autre') NOT NULL DEFAULT 'urgentiste', `status` enum('prevu','confirme','annule') NOT NULL DEFAULT 'prevu', `notes` text DEFAULT NULL, `created_by` varchar(150) DEFAULT NULL, `created_at` bigint(20) NOT NULL, PRIMARY KEY (`id`), KEY `idx_shifts_dept` (`department_id`), KEY `idx_shifts_date` (`shift_date`), KEY `idx_shifts_agent_discord` (`agent_discord_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_beds` ( `id` int(11) NOT NULL AUTO_INCREMENT, `department_id` int(11) NOT NULL, `bed_number` varchar(20) NOT NULL, `service` enum('Urgences','Reanimation','Bloc_operatoire','Psychiatrie') NOT NULL DEFAULT 'Urgences', `status` enum('disponible','occupe','nettoyage','maintenance') NOT NULL DEFAULT 'disponible', `patient_name` varchar(200) DEFAULT NULL, `notes` text DEFAULT NULL, `updated_by` varchar(150) DEFAULT NULL, `updated_at` bigint(20) NOT NULL, PRIMARY KEY (`id`), KEY `idx_beds_dept` (`department_id`), KEY `idx_beds_service` (`service`), KEY `idx_beds_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_psychiatric_records` ( `id` int(11) NOT NULL AUTO_INCREMENT, `record_number` varchar(32) DEFAULT NULL, `department_id` int(11) NOT NULL, `citizen_id` int(11) DEFAULT NULL, `citizen_name` varchar(200) NOT NULL, `diagnosis` varchar(500) DEFAULT NULL, `treatment` mediumtext DEFAULT NULL, `risk_level` enum('stable','modere','eleve','critique') NOT NULL DEFAULT 'stable', `sessions_json` longtext DEFAULT NULL, `notes` mediumtext DEFAULT NULL, `created_by` varchar(150) DEFAULT NULL, `created_at` bigint(20) NOT NULL, `updated_at` bigint(20) NOT NULL, PRIMARY KEY (`id`), KEY `idx_psy_dept` (`department_id`), KEY `idx_psy_risk` (`risk_level`), KEY `idx_psy_citizen` (`citizen_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_doj_resources` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `type` enum('judge','room','clerk','bgp') NOT NULL DEFAULT 'judge', `sort_order` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `idx_doj_res_type` (`type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_doj_events` ( `id` int(11) NOT NULL AUTO_INCREMENT, `resource_id` int(11) NOT NULL, `week_start` date NOT NULL, `day_of_week` tinyint(4) NOT NULL DEFAULT 0, `slot_start` varchar(5) NOT NULL, `slot_end` varchar(5) DEFAULT NULL, `event_type` enum('unavailable','hearing','telework','other_rdv','oath') NOT NULL DEFAULT 'hearing', `title` varchar(255) DEFAULT NULL, `notes` text DEFAULT NULL, `created_by` varchar(100) DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_doj_ev_resource` (`resource_id`), KEY `idx_doj_ev_week` (`week_start`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_doj_bgp_members` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `sort_order` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_doj_bgp_attendance` ( `id` int(11) NOT NULL AUTO_INCREMENT, `member_id` int(11) NOT NULL, `date` date NOT NULL, `present` tinyint(1) NOT NULL DEFAULT 0, `recorded_by` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uniq_member_date` (`member_id`,`date`), KEY `idx_doj_att_date` (`date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_doj_resource_settings` ( `resource_id` int(11) NOT NULL, `grid_start` varchar(5) NOT NULL DEFAULT '21:00', `grid_end` varchar(5) NOT NULL DEFAULT '01:00', `slot_minutes` int(11) NOT NULL DEFAULT 15, `blocked_slots` varchar(500) NOT NULL DEFAULT '21:00,00:15,00:30,00:45,01:00', PRIMARY KEY (`resource_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `mdt_doj_schedule_settings` ( `setting_key` varchar(50) NOT NULL, `setting_value` varchar(500) NOT NULL DEFAULT '', PRIMARY KEY (`setting_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT IGNORE INTO `mdt_doj_schedule_settings` (`setting_key`, `setting_value`) VALUES ('grid_start', '21:00'), ('grid_end', '01:00'), ('slot_minutes', '15'), ('blocked_slots', '21:00,00:15,00:30,00:45,01:00');
2. server.cfg
jsensure mx_mdt