INSERT INTO organization_roles (id, role_name)
VALUES (1, 'OWNER'),
  (2, 'DESIGNER'),
  (3, 'CONSULTANT'),
  (4, 'CONTRACTOR'),
  (5, 'THIRD PARTY'),
  (6, 'GUEST');

INSERT INTO organizations (
    id,
    organization_code,
    organization_name,
    role_id
  )
VALUES (1, 'กทท.', 'การท่าเรือแห่งประเทศไทย', 1),
  (
    10,
    'สคฉ.3',
    'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3',
    1
  ),
  (
    11,
    'สคฉ.3-01',
    'ตรวจรับพัสดุ ที่ปรึกษาควบคุมงาน',
    1
  ),
  (12, 'สคฉ.3-02', 'ตรวจรับพัสดุ งานทางทะเล', 1),
  (
    13,
    'สคฉ.3-03',
    'ตรวจรับพัสดุ อาคารและระบบสาธารณูปโภค',
    1
  ),
  (
    14,
    'สคฉ.3-04',
    'ตรวจรับพัสดุ ตรวจสอบผลกระทบสิ่งแวดล้อม',
    1
  ),
  (
    15,
    'สคฉ.3-05',
    'ตรวจรับพัสดุ เยียวยาการประมง',
    1
  ),
  (
    16,
    'สคฉ.3-06',
    'ตรวจรับพัสดุ งานก่อสร้าง ส่วนที่ 3',
    1
  ),
  (
    17,
    'สคฉ.3-07',
    'ตรวจรับพัสดุ งานก่อสร้าง ส่วนที่ 4',
    1
  ),
  (
    18,
    'สคฉ.3-xx',
    'ตรวจรับพัสดุ ที่ปรึกษาออกแบบ ส่วนที่ 4',
    1
  ),
  (21, 'TEAM', 'Designer Consulting Ltd.', 2),
  (22, 'คคง.', 'Construction Supervision Ltd.', 3),
  (41, 'ผรม.1', 'Contractor งานทางทะเล', 4),
  (42, 'ผรม.2', 'Contractor งานก่อสร้าง', 4),
  (
    43,
    'ผรม.3',
    'Contractor งานก่อสร้าง ส่วนที่ 3',
    4
  ),
  (
    44,
    'ผรม.4',
    'Contractor งานก่อสร้าง ส่วนที่ 4',
    4
  ),
  (31, 'EN', 'Third Party Environment', 5),
  (32, 'CAR', 'Third Party Fishery Care', 5);

-- Seed project
INSERT INTO projects (project_code, project_name)
VALUES (
    'LCBP3',
    'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)'
  ),
  (
    'LCBP3-C1',
    'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1) งานก่อสร้างงานทางทะเล'
  ),
  (
    'LCBP3-C2',
    'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 2) งานก่อสร้างอาคาร ท่าเทียบเรือ ระบบถนน และระบบสาธารณูปโภค'
  ),
  (
    'LCBP3-C3',
    'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 3) งานก่อสร้าง'
  ),
  (
    'LCBP3-C4',
    'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง'
  ),
  (
    'LCBP3-EN',
    'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง'
  );

-- Seed contract
-- ใช้ Subquery เพื่อดึง project_id มาเชื่อมโยง ทำให้ไม่ต้องมานั่งจัดการ ID ด้วยตัวเอง
INSERT INTO contracts (
    contract_code,
    contract_name,
    project_id,
    is_active
  )
VALUES (
    'LCBP3-DS',
    'งานจ้างที่ปรีกษาออกแบบ โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)',
    (
      SELECT id
      FROM projects
      WHERE project_code = 'LCBP3'
    ),
    TRUE
  ),
  (
    'LCBP3-PS',
    'งานจ้างที่ปรีกษาควบคุมงาน โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)',
    (
      SELECT id
      FROM projects
      WHERE project_code = 'LCBP3'
    ),
    TRUE
  ),
  (
    'LCBP3-C1',
    'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1) งานก่อสร้างงานทางทะเล',
    (
      SELECT id
      FROM projects
      WHERE project_code = 'LCBP3-C1'
    ),
    TRUE
  ),
  (
    'LCBP3-C2',
    'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 2) งานก่อสร้างอาคาร ท่าเทียบเรือ ระบบถนน และระบบสาธารณูปโภค',
    (
      SELECT id
      FROM projects
      WHERE project_code = 'LCBP3-C2'
    ),
    TRUE
  ),
  (
    'LCBP3-C3',
    'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 3) งานก่อสร้าง',
    (
      SELECT id
      FROM projects
      WHERE project_code = 'LCBP3-C3'
    ),
    TRUE
  ),
  (
    'LCBP3-C4',
    'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง',
    (
      SELECT id
      FROM projects
      WHERE project_code = 'LCBP3-C4'
    ),
    TRUE
  ),
  (
    'LCBP3-EN',
    'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง',
    (
      SELECT id
      FROM projects
      WHERE project_code = 'LCBP3-EN'
    ),
    TRUE
  );

-- Seed user
-- Initial SUPER_ADMIN user
INSERT INTO users (
    user_id,
    username,
    password_hash,
    first_name,
    last_name,
    email,
    line_id,
    primary_organization_id
  )
VALUES (
    1,
    'superadmin',
    '$2b$10$E6d5k.f46jr.POGWKHhiQ.X1ZsFrMpZox//sCxeOiLUULGuAHO0NW',
    'Super',
    'Admin',
    'superadmin @example.com',
    NULL,
    NULL
  ),
  (
    2,
    'admin',
    '$2b$10$E6d5k.f46jr.POGWKHhiQ.X1ZsFrMpZox//sCxeOiLUULGuAHO0NW',
    'Admin',
    'คคง.',
    'admin@example.com',
    NULL,
    1
  ),
  (
    3,
    'editor01',
    '$2b$10$E6d5k.f46jr.POGWKHhiQ.X1ZsFrMpZox//sCxeOiLUULGuAHO0NW',
    'DC',
    'C1',
    'editor01 @example.com',
    NULL,
    41
  ),
  (
    4,
    'viewer01',
    '$2b$10$E6d5k.f46jr.POGWKHhiQ.X1ZsFrMpZox//sCxeOiLUULGuAHO0NW',
    'Viewer',
    'สคฉ.03',
    'viewer01 @example.com',
    NULL,
    10
  );

-- ==========================================================
-- Seed Roles (บทบาทพื้นฐาน 5 บทบาท ตาม Req 4.3)
-- ==========================================================
-- 1. Superadmin (Global)
INSERT INTO roles (role_id, role_name, scope, description)
VALUES (
    1,
    'Superadmin',
    'Global',
    'ผู้ดูแลระบบสูงสุด: สามารถทำทุกอย่างในระบบ, จัดการองค์กร, และจัดการข้อมูลหลักระดับ Global'
  ),
  -- 2. Org Admin (Organization)
  (
    2,
    'Org Admin',
    'Organization',
    'ผู้ดูแลองค์กร: จัดการผู้ใช้ในองค์กร, จัดการบทบาท / สิทธิ์ภายในองค์กร, และดูรายงานขององค์กร'
  ),
  -- 3. Document Control (Organization)
  (
    3,
    'Document Control',
    'Organization',
    'ควบคุมเอกสารขององค์กร: เพิ่ม / แก้ไข / ลบเอกสาร, และกำหนดสิทธิ์เอกสารภายในองค์กร'
  ),
  -- 4. Editor (Organization)
  (
    4,
    'Editor',
    'Organization',
    'ผู้แก้ไขเอกสารขององค์กร: เพิ่ม / แก้ไขเอกสารที่ได้รับมอบหมาย'
  ),
  -- 5. Viewer (Organization)
  (
    5,
    'Viewer',
    'Organization',
    'ผู้ดูเอกสารขององค์กร: ดูเอกสารที่มีสิทธิ์เข้าถึงเท่านั้น'
  ),
  -- 6. Project Manager (Project)
  (
    6,
    'Project Manager',
    'Project',
    'ผู้จัดการโครงการ: จัดการสมาชิกในโครงการ, สร้าง / จัดการสัญญาในโครงการ, และดูรายงานโครงการ'
  ),
  -- 7. Contract Admin (Contract)
  (
    7,
    'Contract Admin',
    'Contract',
    'ผู้ดูแลสัญญา: จัดการสมาชิกในสัญญา, สร้าง / จัดการข้อมูลหลักเฉพาะสัญญา, และอนุมัติเอกสารในสัญญา'
  );

-- =====================================================
-- 2. Seed Permissions (สิทธิ์การใช้งานทั้งหมด)
-- สิทธิ์ระดับระบบและการจัดการหลัก (System & Master Data)
-- =====================================================
-- ==========================================================
-- 1. System & Global Permissions (ID 1-10)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    1,
    'system.manage_all',
    'ทำทุกอย่างในระบบ (Superadmin Power)',
    'system',
    1
  ),
  (
    2,
    'system.impersonate',
    'แอบอ้างผู้ใช้อื่น (For Support/Debug)',
    'system',
    1
  ),
  (
    3,
    'system.maintenance_mode',
    'เปิด/ปิด Maintenance Mode',
    'system',
    1
  ),
  (
    4,
    'system.view_logs',
    'ดู System Logs',
    'system',
    1
  ),
  (
    5,
    'system.manage_cache',
    'จัดการ Cache (Clear/Flush)',
    'system',
    1
  );

-- ==========================================================
-- 2. Organization Management (ID 11-20)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    11,
    'organization.create',
    'สร้างองค์กรใหม่',
    'organization',
    1
  ),
  (
    12,
    'organization.view',
    'ดูรายการองค์กร',
    'organization',
    1
  ),
  (
    13,
    'organization.edit',
    'แก้ไขข้อมูลองค์กร',
    'organization',
    1
  ),
  (
    14,
    'organization.delete',
    'ลบองค์กร',
    'organization',
    1
  ),
  (
    15,
    'organization.manage_members',
    'จัดการสมาชิกในองค์กร',
    'organization',
    1
  );

-- ==========================================================
-- 3. User & Role Management (ID 21-40) - PRIORITIZED
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    21,
    'user.create',
    'สร้างผู้ใช้งานใหม่',
    'user',
    1
  ),
  (22, 'user.view', 'ดูข้อมูลผู้ใช้งาน', 'user', 1),
  (
    23,
    'user.edit',
    'แก้ไขข้อมูลผู้ใช้งาน',
    'user',
    1
  ),
  (
    24,
    'user.delete',
    'ลบ/ปิดการใช้งานผู้ใช้',
    'user',
    1
  ),
  (
    25,
    'user.manage_assignments',
    'มอบหมาย Role/Project ให้ผู้ใช้',
    'user',
    1
  ),
  (
    26,
    'role.create',
    'สร้างบทบาท (Role) ใหม่',
    'role',
    1
  ),
  (27, 'role.view', 'ดูบทบาท', 'role', 1),
  (28, 'role.edit', 'แก้ไขบทบาท', 'role', 1),
  (29, 'role.delete', 'ลบบทบาท', 'role', 1),
  (
    30,
    'role.assign_permissions',
    'มอบสิทธิ์ให้กับบทบาท',
    'role',
    1
  );

-- ==========================================================
-- 4. Master Data Management (ID 41-50)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    41,
    'master_data.view',
    'ดูข้อมูลหลัก (Read-Only Dropdowns)',
    'master',
    1
  ),
  (
    42,
    'master_data.manage',
    'จัดการข้อมูลหลักทั่วไป',
    'master',
    1
  ),
  (
    43,
    'master_data.correspondence_type.manage',
    'จัดการประเภทเอกสาร',
    'master',
    1
  ),
  (
    44,
    'master_data.document_status.manage',
    'จัดการสถานะเอกสาร',
    'master',
    1
  ),
  (
    45,
    'master_data.drawing_category.manage',
    'จัดการหมวดหมู่แบบ',
    'master',
    1
  ),
  (
    46,
    'master_data.tag.manage',
    'จัดการ Tags',
    'master',
    1
  ),
  (
    47,
    'master_data.discipline.manage',
    'จัดการสาขางาน (Disciplines)',
    'master',
    1
  ),
  (
    48,
    'master_data.number_format.manage',
    'จัดการ Document Number Format',
    'master',
    1
  );

-- ==========================================================
-- 5. Document Management - Generic (ID 51-70)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    51,
    'document.view',
    'ดูเอกสาร (ทุกประเภท)',
    'document',
    1
  ),
  (
    52,
    'document.create',
    'สร้างเอกสาร (Draft)',
    'document',
    1
  ),
  (
    53,
    'document.edit',
    'แก้ไขเอกสาร',
    'document',
    1
  ),
  (54, 'document.delete', 'ลบเอกสาร', 'document', 1),
  (
    55,
    'document.submit',
    'ส่งเอกสาร (Submitted)',
    'document',
    1
  ),
  (
    56,
    'document.admin_edit',
    'แก้ไข/ถอน/ยกเลิกเอกสารที่ส่งแล้ว (Admin Power)',
    'document',
    1
  ),
  (
    57,
    'document.attach_files',
    'จัดการไฟล์แนบ (Upload/Delete)',
    'document',
    1
  ),
  (
    58,
    'document.manage_references',
    'จัดการการอ้างอิงเอกสาร',
    'document',
    1
  );

-- ==========================================================
-- 6. Correspondence Module (ID 71-80)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    71,
    'correspondence.create',
    'สร้างเอกสารโต้ตอบ',
    'correspondence',
    1
  ),
  (
    72,
    'correspondence.view',
    'ดูเอกสารโต้ตอบ',
    'correspondence',
    1
  ),
  (
    73,
    'correspondence.edit',
    'แก้ไขเอกสารโต้ตอบ',
    'correspondence',
    1
  ),
  (
    74,
    'correspondence.delete',
    'ลบเอกสารโต้ตอบ',
    'correspondence',
    1
  ),
  (
    75,
    'correspondence.submit',
    'ส่งเอกสารโต้ตอบ',
    'correspondence',
    1
  );

-- ==========================================================
-- 7. RFA Module (ID 81-90)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (81, 'rfa.create', 'สร้างเอกสาร RFA', 'rfa', 1),
  (82, 'rfa.view', 'ดูเอกสาร RFA', 'rfa', 1),
  (83, 'rfa.edit', 'แก้ไขเอกสาร RFA', 'rfa', 1),
  (84, 'rfa.delete', 'ลบเอกสาร RFA', 'rfa', 1),
  (
    85,
    'rfa.submit',
    'ส่ง RFA เข้า Workflow',
    'rfa',
    1
  ),
  (
    86,
    'rfa.manage_items',
    'จัดการ RFA Items (Link Drawings)',
    'rfa',
    1
  );

-- ==========================================================
-- 8. Drawing Module (ID 91-100)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    91,
    'drawing.view',
    'ดูข้อมูลแบบ (Shop/Contract)',
    'drawing',
    1
  ),
  (
    92,
    'drawing.create',
    'สร้าง/แก้ไขแบบ',
    'drawing',
    1
  ),
  (93, 'drawing.delete', 'ลบแบบ', 'drawing', 1),
  (
    94,
    'drawing.manage_revisions',
    'จัดการ Revisions แบบ',
    'drawing',
    1
  ),
  (
    95,
    'drawing.link_contract',
    'เชื่อมโยง Shop Drawing กับ Contract Drawing',
    'drawing',
    1
  );

-- ==========================================================
-- 9. Circulation Module (ID 101-110)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    101,
    'circulation.create',
    'สร้างใบเวียน',
    'circulation',
    1
  ),
  (
    102,
    'circulation.view',
    'ดูใบเวียน',
    'circulation',
    1
  ),
  (
    103,
    'circulation.respond',
    'ตอบกลับใบเวียน (Main/Action)',
    'circulation',
    1
  ),
  (
    104,
    'circulation.acknowledge',
    'รับทราบใบเวียน (Information)',
    'circulation',
    1
  ),
  (
    105,
    'circulation.close',
    'ปิดใบเวียน',
    'circulation',
    1
  );

-- ==========================================================
-- 10. Transmittal Module (ID 111-120)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    111,
    'transmittal.create',
    'สร้าง Transmittal',
    'transmittal',
    1
  ),
  (
    112,
    'transmittal.view',
    'ดู Transmittal',
    'transmittal',
    1
  ),
  (
    113,
    'transmittal.edit',
    'แก้ไข Transmittal',
    'transmittal',
    1
  ),
  (
    114,
    'transmittal.delete',
    'ลบ Transmittal',
    'transmittal',
    1
  ),
  (
    115,
    'transmittal.print',
    'พิมพ์ Transmittal Letter',
    'transmittal',
    1
  );

-- ==========================================================
-- 11. Workflow Engine (ID 121-130)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    121,
    'workflow.view_definitions',
    'ดู Workflow Definitions',
    'workflow',
    1
  ),
  (
    122,
    'workflow.manage_definitions',
    'จัดการ Workflow Definitions',
    'workflow',
    1
  ),
  (
    123,
    'workflow.action_review',
    'ดำเนินการในขั้นตอนปัจจุบัน (Approve/Reject)',
    'workflow',
    1
  ),
  (
    124,
    'workflow.force_proceed',
    'บังคับไปยังขั้นตอนถัดไป (Document Control Power)',
    'workflow',
    1
  ),
  (
    125,
    'workflow.revert',
    'ย้อนกลับไปยังขั้นตอนก่อนหน้า (Document Control Power)',
    'workflow',
    1
  );

-- ==========================================================
-- 12. Document Numbering (ID 131-140)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    131,
    'numbering.view_formats',
    'ดู Number Formats',
    'numbering',
    1
  ),
  (
    132,
    'numbering.manage_formats',
    'จัดการ Number Formats',
    'numbering',
    1
  ),
  (
    133,
    'numbering.view_counters',
    'ดู Counters',
    'numbering',
    1
  ),
  (
    134,
    'numbering.reset_counter',
    'Reset Counter (Dangerous Operation)',
    'numbering',
    1
  );

-- ==========================================================
-- 13. Search & Reporting (ID 141-150)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (141, 'search.basic', 'ค้นหาพื้นฐาน', 'search', 1),
  (
    142,
    'search.advanced',
    'ใช้งานการค้นหาขั้นสูง',
    'search',
    1
  ),
  (
    143,
    'search.export',
    'Export ผลการค้นหา',
    'search',
    1
  ),
  (144, 'report.view', 'ดูรายงาน', 'report', 1),
  (
    145,
    'report.generate',
    'สร้างรายงานสรุป',
    'report',
    1
  ),
  (
    146,
    'report.schedule',
    'กำหนดรายงานอัตโนมัติ',
    'report',
    1
  );

-- ==========================================================
-- 14. Notification & Dashboard (ID 151-160)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    151,
    'notification.view',
    'ดูการแจ้งเตือนของตัวเอง',
    'notification',
    1
  ),
  (
    152,
    'notification.manage_all',
    'จัดการการแจ้งเตือนทั้งหมด (Admin)',
    'notification',
    1
  ),
  (
    153,
    'dashboard.view_own',
    'ดู Dashboard ของตัวเอง',
    'dashboard',
    1
  ),
  (
    154,
    'dashboard.view_all',
    'ดู Dashboard ทุกคน (Admin)',
    'dashboard',
    1
  ),
  (
    155,
    'dashboard.view_analytics',
    'ดู Analytics & Statistics',
    'dashboard',
    1
  );

-- ==========================================================
-- 15. JSON Schema Management (ID 161-170)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    161,
    'json_schema.view',
    'ดู JSON Schemas',
    'json_schema',
    1
  ),
  (
    162,
    'json_schema.manage',
    'จัดการ JSON Schemas',
    'json_schema',
    1
  ),
  (
    163,
    'json_schema.migrate_data',
    'Migrate Data ระหว่าง Schema Versions',
    'json_schema',
    1
  );

-- ==========================================================
-- 16. Monitoring & Admin Tools (ID 171-180)
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    171,
    'monitoring.view_health',
    'ดู Health Check Status',
    'monitoring',
    1
  ),
  (
    172,
    'monitoring.view_metrics',
    'ดู System Metrics',
    'monitoring',
    1
  ),
  (
    173,
    'monitoring.manage_maintenance',
    'จัดการ Maintenance Mode',
    'monitoring',
    1
  ),
  (
    174,
    'audit.view_own',
    'ดู Audit Logs ของตัวเอง',
    'audit',
    1
  ),
  (
    175,
    'audit.view_all',
    'ดู Audit Logs ทั้งหมด (Admin)',
    'audit',
    1
  );

-- ==========================================================
-- 17. Project & Contract Management (ID 201-220) - DEPRIORITIZED
-- ==========================================================
INSERT INTO permissions (
    permission_id,
    permission_name,
    description,
    module,
    is_active
  )
VALUES (
    201,
    'project.create',
    'สร้างโครงการใหม่',
    'project',
    1
  ),
  (
    202,
    'project.view',
    'ดูรายการโครงการ',
    'project',
    1
  ),
  (
    203,
    'project.edit',
    'แก้ไขข้อมูลโครงการ',
    'project',
    1
  ),
  (204, 'project.delete', 'ลบโครงการ', 'project', 1),
  (
    205,
    'project.manage_members',
    'จัดการสมาชิกในโครงการ',
    'project',
    1
  ),
  (
    211,
    'contract.create',
    'สร้างสัญญา',
    'contract',
    1
  ),
  (
    212,
    'contract.view',
    'ดูข้อมูลสัญญา',
    'contract',
    1
  ),
  (
    213,
    'contract.edit',
    'แก้ไขสัญญา',
    'contract',
    1
  ),
  (214, 'contract.delete', 'ลบสัญญา', 'contract', 1),
  (
    215,
    'contract.manage_members',
    'จัดการสมาชิกในสัญญา',
    'contract',
    1
  );

-- ==========================================================
-- Seed Role-Permissions Mapping (จับคู่สิทธิ์เริ่มต้น)
-- ==========================================================
-- Seed data for the 'role_permissions 'table
-- This table links roles to their specific permissions.
-- NOTE: This assumes the role_id and permission_id FROM the previous seed data files.
-- Superadmin (role_id = 1), Org Admin (role_id = 2), Document Control (role_id = 3), etc.
-- ==========================================================
-- SECTION 2: ROLE-PERMISSION MAPPINGS
-- ==========================================================
-- ==========================================================
-- Role 1: Superadmin - Gets ALL Permissions
-- ==========================================================
INSERT INTO role_permissions (role_id, permission_id)
SELECT 1,
  permission_id
FROM permissions
WHERE is_active = 1;

-- ==========================================================
-- Role 2: Org Admin (Organization Scope)
-- Permissions: 22 total
-- ==========================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- User Management
  (2, 21),
  -- user.create
  (2, 22),
  -- user.view
  (2, 23),
  -- user.edit
  (2, 24),
  -- user.delete
  (2, 25),
  -- user.manage_assignments
  -- Organization
  (2, 12),
  -- organization.view
  -- Master Data
  (2, 46),
  -- master_data.tag.manage
  -- Documents
  (2, 51),
  -- document.view
  -- Project/Contract
  (2, 202),
  -- project.view
  (2, 212),
  -- contract.view
  -- Search & Reports
  (2, 141),
  -- search.basic
  (2, 142),
  -- search.advanced
  (2, 144),
  -- report.view
  (2, 145),
  -- report.generate
  -- Dashboard & Notification
  (2, 153),
  -- dashboard.view_own
  (2, 151),
  -- notification.view
  -- Audit
  (2, 174);

-- audit.view_own
-- ==========================================================
-- Role 3: Document Control (Organization Scope)
-- Permissions: 50+ total
-- ==========================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- All Document Operations
  (3, 51),
  (3, 52),
  (3, 53),
  (3, 54),
  (3, 55),
  (3, 56),
  (3, 57),
  (3, 58),
  -- All Correspondence
  (3, 71),
  (3, 72),
  (3, 73),
  (3, 74),
  (3, 75),
  -- All RFA
  (3, 81),
  (3, 82),
  (3, 83),
  (3, 84),
  (3, 85),
  (3, 86),
  -- All Drawing
  (3, 91),
  (3, 92),
  (3, 93),
  (3, 94),
  (3, 95),
  -- All Circulation
  (3, 101),
  (3, 102),
  (3, 103),
  (3, 104),
  (3, 105),
  -- All Transmittal
  (3, 111),
  (3, 112),
  (3, 113),
  (3, 114),
  (3, 115),
  -- Workflow Actions
  (3, 123),
  (3, 124),
  (3, 125),
  -- Master Data
  (3, 41),
  (3, 42),
  (3, 43),
  (3, 44),
  (3, 45),
  (3, 46),
  (3, 47),
  (3, 48),
  -- Search & Report
  (3, 141),
  (3, 142),
  (3, 143),
  (3, 144),
  (3, 145),
  -- Dashboard
  (3, 153),
  (3, 154),
  -- Notification
  (3, 151);

-- ==========================================================
-- Role 4: Editor (Organization Scope)
-- Permissions: 30 total
-- ==========================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- Document
  (4, 51),
  (4, 52),
  (4, 53),
  (4, 55),
  (4, 57),
  -- Correspondence
  (4, 71),
  (4, 72),
  (4, 73),
  (4, 75),
  -- RFA
  (4, 81),
  (4, 82),
  (4, 83),
  (4, 85),
  (4, 86),
  -- Drawing
  (4, 91),
  (4, 92),
  (4, 94),
  -- Circulation
  (4, 101),
  (4, 102),
  (4, 103),
  (4, 104),
  -- Transmittal
  (4, 111),
  (4, 112),
  (4, 113),
  -- Search
  (4, 141),
  (4, 142),
  -- Dashboard & Notification
  (4, 153),
  (4, 151),
  -- Workflow Actions (NEW for E2E test compatibility)
  (4, 123);

-- ==========================================================
-- Role 5: Viewer (Organization Scope)
-- Permissions: 15 total
-- ==========================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- View Only
  (5, 51),
  -- document.view
  (5, 72),
  -- correspondence.view
  (5, 82),
  -- rfa.view
  (5, 91),
  -- drawing.view
  (5, 102),
  -- circulation.view
  (5, 104),
  -- circulation.acknowledge
  (5, 112),
  -- transmittal.view
  (5, 41),
  -- master_data.view
  (5, 141),
  -- search.basic
  (5, 153),
  -- dashboard.view_own
  (5, 151);

-- notification.view
-- ==========================================================
-- Role 6: Project Manager (Project Scope)
-- Permissions: All Editor + Project Management + Reports
-- ==========================================================
INSERT INTO role_permissions (role_id, permission_id)
SELECT 6,
  permission_id
FROM role_permissions
WHERE role_id = 4 -- Copy all Editor permissions
UNION
VALUES -- Project Management
  (6, 201),
  (6, 202),
  (6, 203),
  (6, 204),
  (6, 205),
  -- Reports & Analytics
  (6, 144),
  (6, 145),
  (6, 155);

-- ==========================================================
-- Role 7: Contract Admin (Contract Scope)
-- Permissions: All Editor + Contract Management + Workflow
-- ==========================================================
INSERT INTO role_permissions (role_id, permission_id)
SELECT 7,
  permission_id
FROM role_permissions
WHERE role_id = 4 -- Copy all Editor permissions
UNION
VALUES -- Contract Management
  (7, 211),
  (7, 212),
  (7, 213),
  (7, 214),
  (7, 215),
  -- Workflow
  (7, 123),
  -- All Drawings
  (7, 91),
  (7, 92),
  (7, 93),
  (7, 94),
  (7, 95);

-- Seed data for the 'user_assignments' table
INSERT INTO user_assignments (
    id,
    user_id,
    role_id,
    organization_id,
    project_id,
    contract_id,
    assigned_by_user_id
  )
VALUES (1, 1, 1, NULL, NULL, NULL, NULL),
  -- superadmin: Global scope (organization_id = NULL)
  (2, 2, 2, 1, NULL, NULL, NULL),
  -- admin: Organization scope (org_id=1 = กทท.)
  (3, 3, 4, 41, NULL, NULL, 1),
  -- editor01: Editor role (role_id=4) at organization 41 (คคง.), assigned by superadmin
  (4, 4, 5, 10, NULL, NULL, 1);

-- viewer01: Viewer role (role_id=5) at organization 10 (สคฉ.03), assigned by superadmin
-- =====================================================
-- == 4. การเชื่อมโยงโครงการกับองค์กร (project_organizations) ==
-- =====================================================
-- โครงการหลัก (LCBP3) จะมีองค์กรหลักๆ เข้ามาเกี่ยวข้องทั้งหมด
INSERT INTO project_organizations (project_id, organization_id)
SELECT (
    SELECT id
    FROM projects
    WHERE project_code = 'LCBP3'
  ),
  id
FROM organizations
WHERE organization_code IN (
    'กทท.',
    'สคฉ.3',
    'TEAM',
    'คคง.',
    'ผรม.1',
    'ผรม.2',
    'ผรม.3',
    'ผรม.4',
    'EN',
    'CAR'
  );

-- โครงการย่อย (LCBP3C1) จะมีเฉพาะองค์กรที่เกี่ยวข้อง
INSERT INTO project_organizations (project_id, organization_id)
SELECT (
    SELECT id
    FROM projects
    WHERE project_code = 'LCBP3-C1'
  ),
  id
FROM organizations
WHERE organization_code IN (
    'กทท.',
    'สคฉ.3',
    'สคฉ.3 -02',
    'คคง.',
    'ผรม.1 '
  );

-- ทำเช่นเดียวกันสำหรับโครงการอื่นๆ (ตัวอย่าง)
INSERT INTO project_organizations (project_id, organization_id)
SELECT (
    SELECT id
    FROM projects
    WHERE project_code = 'LCBP3-C2'
  ),
  id
FROM organizations
WHERE organization_code IN (
    'กทท.',
    'สคฉ.3',
    'สคฉ.3 -03',
    'คคง.',
    'ผรม.2'
  );

-- =====================================================
-- == 5. การเชื่อมโยงสัญญากับองค์กร (contract_organizations) ==
-- =====================================================
-- สัญญาที่ปรึกษาออกแบบ (DSLCBP3)
INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract)
VALUES (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-DS'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'กทท.'
    ),
    'Owner'
  ),
  (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-DS'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'TEAM'
    ),
    'Designer'
  );

-- สัญญาที่ปรึกษาควบคุมงาน (PSLCBP3)
INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract)
VALUES (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-PS'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'กทท.'
    ),
    'Owner'
  ),
  (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-PS'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'คคง.'
    ),
    'Consultant'
  );

-- สัญญางานก่อสร้าง ส่วนที่ 1 (LCBP3-C1)
INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract)
VALUES (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-C1'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'กทท.'
    ),
    'Owner'
  ),
  (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-C1'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'ผรม.1'
    ),
    'Contractor'
  );

-- สัญญางานก่อสร้าง ส่วนที่ 2 (LCBP3-C2)
INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract)
VALUES (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-C2'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'กทท.'
    ),
    'Owner'
  ),
  (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-C2'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'ผรม.2'
    ),
    'Contractor'
  );

-- สัญญาตรวจสอบสิ่งแวดล้อม (LCBP3-EN)
INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract)
VALUES (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-EN'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'กทท.'
    ),
    'Owner'
  ),
  (
    (
      SELECT id
      FROM contracts
      WHERE contract_code = 'LCBP3-EN'
    ),
    (
      SELECT id
      FROM organizations
      WHERE organization_code = 'EN'
    ),
    'Consultant'
  );

-- Seed correspondence_status
INSERT INTO correspondence_status (
    status_code,
    status_name,
    sort_order,
    is_active
  )
VALUES ('DRAFT', 'Draft', 10, 1),
  ('SUBOWN', 'Submitted to Owner', 21, 1),
  ('SUBDSN', 'Submitted to Designer', 22, 1),
  ('SUBCSC', 'Submitted to CSC', 23, 1),
  ('SUBCON', 'Submitted to Contractor', 24, 1),
  ('SUBOTH', 'Submitted to Others', 25, 1),
  ('REPOWN', 'Reply by Owner', 31, 1),
  ('REPDSN', 'Reply by Designer', 32, 1),
  ('REPCSC', 'Reply by CSC', 33, 1),
  ('REPCON', 'Reply by Contractor', 34, 1),
  ('REPOTH', 'Reply by Others', 35, 1),
  ('RSBOWN', 'Resubmited by Owner', 41, 1),
  ('RSBDSN', 'Resubmited by Designer', 42, 1),
  ('RSBCSC', 'Resubmited by CSC', 43, 1),
  ('RSBCON', 'Resubmited by Contractor', 44, 1),
  ('CLBOWN', 'Closed by Owner', 51, 1),
  ('CLBDSN', 'Closed by Designer', 52, 1),
  ('CLBCSC', 'Closed by CSC', 53, 1),
  ('CLBCON', 'Closed by Contractor', 54, 1),
  ('CCBOWN', 'Canceled by Owner', 91, 1),
  ('CCBDSN', 'Canceled by Designer', 92, 1),
  ('CCBCSC', 'Canceled by CSC', 93, 1),
  ('CCBCON', 'Canceled by Contractor', 94, 1);

-- Seed correspondence_types
INSERT INTO correspondence_types (type_code, type_name, sort_order, is_active)
VALUES ('RFA', 'Request for Approval', 1, 1),
  ('RFI', 'Request for Information', 2, 1),
  ('TRANSMITTAL', 'Transmittal', 3, 1),
  ('EMAIL', 'Email', 4, 1),
  ('INSTRUCTION', 'Instruction', 5, 1),
  ('LETTER', 'Letter', 6, 1),
  ('MEMO', 'Memorandum', 7, 1),
  ('MOM', 'Minutes of Meeting', 8, 1),
  ('NOTICE', 'Notice', 9, 1),
  ('OTHER', 'Other', 10, 1);

-- Seed rfa_types
INSERT INTO rfa_types (
    contract_id,
    type_code,
    type_name_en,
    type_name_th
  )
SELECT id,
  'ADW',
  'As Built Drawing',
  'แบบร่างหลังการก่อสร้าง'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'BC',
  'Box Culvert',
  'ท่อระบายน้ำรูปกล่อง'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'BM',
  'Benchmark',
  'หมุดหลักฐาน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'CER',
  'Certificates',
  'ใบรับรอง'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'CN',
  'Canal Drainage',
  'ระบบระบายน้ำในคลอง'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'CON',
  'Contract',
  'สัญญา'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'DDS',
  'Design Data Submission',
  'นำส่งข้อมูลการออกแบบ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'DDW',
  'Draft Drawing',
  'แบบร่าง'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'DRW',
  'Drawings (All Types)',
  'แบบก่อสร้าง'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'DSN',
  'Design/Calculation/Manual (All Stages)',
  'ออกแบบ / คำนวณ / คู่มือ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'GEN',
  'General',
  'ทั่วไป'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'ICR',
  'Incident Report',
  'รายงานการเกิดอุบัติเหตุและการบาดเจ็บ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'INS',
  'Insurances/Bond/Guarantee',
  'การประกัน / พันธบัตร / การค้ำประกัน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'INR',
  'Inspection/Audit/Surveillance Report',
  'รายงานการตรวจสอบ / การตรวจสอบ / รายงานการเฝ้าระวัง'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'ITP',
  'Inspection and Test Plan',
  'แผนการตรวจสอบและทดสอบ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'JSA',
  'Jobs Analysis',
  'รายงานการวิเคราะห์ความปลอดภัย'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'MAN',
  'Manual',
  'คู่มือ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'MAT',
  'Materials/Equipment/Plant',
  'วัสดุ / อุปกรณ์ / โรงงาน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'MOM',
  'Minutes of Meeting',
  'รายงานการประชุม'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'MPR',
  'Monthly Progress Report',
  'รายงานความคืบหน้าประจำเดือน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'MST',
  'Method Statement for Construction/Installation',
  'ขั้นตอนการก่อสร้าง / ติดตั้ง'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'NDS',
  'Non-Design Data Submission',
  'นำส่งข้อมูลที่ไม่เกี่ยวข้องกับการออกแบบ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'PMA',
  'Payment/Invoice/Retention/Estimate',
  'การชำระเงิน / ใบแจ้งหนี้ / ประกันผลงาน / ประมาณการ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'PRD',
  'Procedure',
  'ระเบียบปฏิบัติ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'PRG',
  'Progress of Construction',
  'ความคืบหน้าของการก่อสร้าง / ภาพถ่าย / วิดีโอ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'QMS',
  'Quality Document (Plan/Work Instruction)',
  'เอกสารด้านคุณภาพ (แผนงาน / ข้อแนะนำในการทำงาน)'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'RPT',
  'Report',
  'รายงาน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SAR',
  'Semi Annual Report',
  'รายงานประจำหกเดือน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SCH',
  'Schedule and Program',
  'แผนงาน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SDW',
  'Shop Drawing',
  'แบบขยายรายละเอียด'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SI',
  'Soil Investigation',
  'การตรวจสอบดิน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SPE',
  'Specification',
  'ข้อกำหนด'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'TNR',
  'Training Report',
  'รายงานการฝึกปฏิบัติ'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'UC',
  'Underground Construction',
  'โครงสร้างใต้ดิน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'VEN',
  'Vendor',
  'ผู้ขาย'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'VRO',
  'Variation Request/Instruction/Order',
  'คำขอเปลี่ยนแปลง / ข้อเสนอแนะ / ข้อเรียกร้อง'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'WTY',
  'Warranty',
  'การประกัน'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'GEN',
  'General',
  'ทั่วไป'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'CON',
  'Contract',
  'สัญญา'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'INS',
  'Insurances/Bond/Guarantee',
  'การประกัน / พันธบัตร / การค้ำประกัน'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'SCH',
  'Schedule and Program',
  'แผนงาน'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'PMA',
  'Payment/Invoice/Retention/Estimate',
  'การชำระเงิน / ใบแจ้งหนี้ / ประกันผลงาน / ประมาณการ'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'VRO',
  'Variation Request/Instruction/Order',
  'คำขอเปลี่ยนแปลง / ข้อเสนอแนะ / ข้อเรียกร้อง'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'VEN',
  'Vendor',
  'ผู้ขาย'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'WTY',
  'Warranty',
  'การประกัน'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'DRW',
  'Drawings (All Types)',
  'แบบก่อสร้าง'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'DDW',
  'Draft Drawing',
  'แบบร่าง'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'SDW',
  'Shop Drawing',
  'แบบขยายรายละเอียด'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'ADW',
  'As Built Drawing',
  'แบบร่างหลังการก่อสร้าง'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'DDS',
  'Design Data Submission',
  'นำส่งข้อมูลการออกแบบ'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'DSN',
  'Design/Calculation/Manual (All Stages)',
  'ออกแบบ / คำนวณ / คู่มือ'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'NDS',
  'Non-Design Data Submission',
  'นำส่งข้อมูลที่ไม่เกี่ยวข้องกับการออกแบบ'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'PRD',
  'Procedure',
  'ระเบียบปฏิบัติ'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'MST',
  'Method Statement for Construction/Installation',
  'ขั้นตอนการก่อสร้าง / ติดตั้ง'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'QMS',
  'Quality Document (Plan/Work Instruction)',
  'เอกสารด้านคุณภาพ (แผนงาน / ข้อแนะนำในการทำงาน)'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'INR',
  'Inspection/Audit/Surveillance Report',
  'รายงานการตรวจสอบ / การตรวจสอบ / รายงานการเฝ้าระวัง'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'ITP',
  'Inspection and Test Plan',
  'แผนการตรวจสอบและทดสอบ'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'MAT',
  'Materials/Equipment/Plant',
  'วัสดุ / อุปกรณ์ / โรงงาน'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'SPE',
  'Specification',
  'ข้อกำหนด'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'MAN',
  'Manual',
  'คู่มือ'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'CER',
  'Certificates',
  'ใบรับรอง'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'SAR',
  'Semi Annual Report',
  'รายงานประจำหกเดือน'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'JSA',
  'Jobs Analysis',
  'รายงานการวิเคราะห์ความปลอดภัย'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'MOM',
  'Minutes of Meeting',
  'รายงานการประชุม'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'MPR',
  'Monthly Progress Report',
  'รายงานความคืบหน้าประจำเดือน'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'ICR',
  'Incident Report',
  'รายงานการเกิดอุบัติเหตุและการบาดเจ็บ'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'PRG',
  'Progress of Construction',
  'ความคืบหน้าของการก่อสร้าง / ภาพถ่าย / วิดีโอ'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'RPT',
  'Report',
  'รายงาน'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'TNR',
  'Training Report',
  'รายงานการฝึกปฏิบัติ'
FROM contracts
WHERE contract_code = 'LCBP3-C2';

-- Seed rfa_status_codes
INSERT INTO rfa_status_codes (
    status_code,
    status_name,
    description,
    sort_order
  )
VALUES ('DFT', 'Draft', 'ฉบับร่าง', 1),
  ('FAP', 'For Approve', 'เพื่อขออนุมัติ', 11),
  ('FRE', 'For Review', 'เพื่อตรวจสอบ', 12),
  ('FCO', 'For Construction', 'เพื่อก่อสร้าง', 20),
  ('ASB', 'AS - Built', 'แบบก่อสร้างจริง', 30),
  ('OBS', 'Obsolete', 'ไม่ใช้งาน', 80),
  ('CC', 'Canceled', 'ยกเลิก', 99);

INSERT INTO rfa_approve_codes (
    approve_code,
    approve_name,
    sort_order,
    is_active
  )
VALUES ('1A', 'Approved by Authority', 10, 1),
  ('1C', 'Approved by CSC', 11, 1),
  ('1N', 'Approved As Note', 12, 1),
  ('1R', 'Approved with Remarks', 13, 1),
  ('3C', 'Consultant Comments', 31, 1),
  ('3R', 'Revise and Resubmit', 32, 1),
  ('4X', 'Reject', 40, 1),
  ('5N', 'No Further Action', 50, 1);

-- Seed circulation_status_codes
INSERT INTO circulation_status_codes (code, description, sort_order)
VALUES ('OPEN', 'Open', 1),
  ('IN_REVIEW', 'In Review', 2),
  ('COMPLETED', 'ปCompleted', 3),
  ('CANCELLED', 'Cancelled / Withdrawn', 9);

-- ตาราง "แม่" ของ RFA (มีความสัมพันธ์ 1:N กับ rfa_revisions)
-- ==========================================================
-- SEED DATA 6B.md (Disciplines, RFA Types, Sub Types)
-- ==========================================================
-- 1. Seed ข้อมูล Disciplines (สาขางาน)
-- LCBP3-C1
INSERT INTO disciplines (
    contract_id,
    discipline_code,
    code_name_th,
    code_name_en
  )
SELECT id,
  'GEN',
  'งานบริหารโครงการ',
  'General Management'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'COD',
  'สัญญาและข้อโต้แย้ง',
  'Contracting'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'QSB',
  'สำรวจปริมาณและควบคุมงบประมาณ',
  'Quantity Survey and Budget Control'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'PPG',
  'บริหารแผนและความก้าวหน้า',
  'Plan and Progress Management'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'PRC',
  'งานจัดซื้อ',
  'Procurement'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SUB',
  'ผู้รับเหมาช่วง',
  'Subcontractor'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'ODC',
  'สำนักงาน-ควบคุมเอกสาร',
  'Operation Docment Control'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'LAW',
  'กฎหมาย',
  'Law'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'TRF',
  'จราจร',
  'Traffic'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'BIM',
  'BIM',
  'Building information modeling'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SRV',
  'งานสำรวจ',
  'Survey'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SFT',
  'ความปลอดภัย',
  'Safety'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'BST',
  'งานโครงสร้างอาคาร',
  'Building Structure Work'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'TEM',
  'งานชั่วคราว',
  'Temporary Work'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'UTL',
  'งานระบบสาธารณูปโภค',
  'Utility'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'EPW',
  'งานระบบไฟฟ้า',
  'Electrical Power Work'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'ECM',
  'งานระบบไฟฟ้าสื่อสาร',
  'Electrical Communication Work'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'ENV',
  'สิ่งแวดล้อม',
  'Environment'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'AQV',
  'คุณภาพอากาศและความสั่นสะเทือน',
  'Air quality and vibration'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'WAB',
  'คุณภาพน้ำและชีววิทยาทางน้ำ',
  'Water quality and Aquatic biology'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'ONS',
  'วิศวกรรมชายฝั่ง',
  'Onshore Engineer Work'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'PPR',
  'มวลชนสัมพันธ์และการประชาสัมพันธ์',
  'Public Relations'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'OSW',
  'งานก่อสร้างงานทางทะเล',
  'Offshore Work'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'DRE',
  'งานขุดและถมทะเล',
  'Dredging and Reclamation'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'REV',
  'งานคันหินล้อมพื้นที่ถมทะเล',
  'Revetment'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'BRW',
  'งานเขื่อนกันคลื่น',
  'Breakwater'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SOI',
  'ปรับปรุงคุณภาพดิน',
  'Soil Improvement'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'BLC',
  'งานปรับปรุงคลองบางละมุง',
  'Bang Lamung Canal Bank Protection'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'FUP',
  'งานประตูระบายน้ำและท่อลอด',
  'Floodgate & Under Ground Piping Works'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'SWP',
  'งานอาคารควบคุมสถานีสูบน้ำทะเล',
  'Sea Water Pumping Station Control BuilDing'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'NAV',
  'งานติดตั้งเครื่องหมายช่วงการเดินเรือ',
  'Navigations Aids'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'GEO',
  'งานด้านธรณีเทคนิค',
  'Geotechnical'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'CRW',
  'งานด้านโยธา - Rock Works',
  'Civil-Rock work'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'DVR',
  'ทีมนักประดาน้ำ',
  'Dive Work'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'MTS',
  'งานทดสอบวัสดุและธรณีเทคนิค',
  'Materials and Geotechnical Testing'
FROM contracts
WHERE contract_code = 'LCBP3-C1'
UNION ALL
SELECT id,
  'OTH',
  'อื่นๆ',
  'Other'
FROM contracts
WHERE contract_code = 'LCBP3-C1';

-- LCBP3-C2
INSERT INTO disciplines (
    contract_id,
    discipline_code,
    code_name_th,
    code_name_en
  )
SELECT id,
  'GEN',
  'งานบริหารโครงการ',
  'Project Management'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'COD',
  'สัญญาและข้อโต้แย้ง',
  'Contracts and arguments'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'QSB',
  'สำรวจปริมาณและควบคุมงบประมาณ',
  'Survey the quantity and control the budget'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'PPM',
  'บริหารแผนและความก้าวหน้า',
  'Plan Management & Progress'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'ODC',
  'สำนักงาน-ควบคุมเอกสาร',
  'Document Control Office'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'LAW',
  'กฎหมาย',
  'Law'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'TRF',
  'จราจร',
  'Traffic'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'BIM',
  'Building Information Modeling',
  'Building Information Modeling'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'SRV',
  'งานสำรวจ',
  'Survey'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'SFT',
  'ความปลอดภัย',
  'Safety'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'BST',
  'งานโครงสร้างอาคาร',
  'Building Structure'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'UTL',
  'งานะบบสาธารณูปโภค',
  'Public Utilities'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'EPW',
  'งานระบบไฟฟ้า',
  'Electrical Systems'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'ECM',
  'งานระบบไฟฟ้าสื่อสาร',
  'Electrical Communication System'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'ENV',
  'สิ่งแวดล้อม',
  'Environment'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'AQV',
  'คุณภาพอากาศและความสั่นสะเทือน',
  'Air Quality and Vibration'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'WAB',
  'คุณภาพน้ำและชีววิทยาทางน้ำ',
  'Water Quality and Aquatic Biology'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'ONS',
  'วิศวกรรมชายฝั่ง',
  'Coastal Engineering'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'PPR',
  'มวลชนสัมพันธ์และประชาสัมพันธ์',
  'Mass Relations and Public Relations'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'OFW',
  'งานก่อสร้างทางทะเล',
  'Marine Construction'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'EXR',
  'งานขุดและถมทะเล',
  'Excavation and reclamation'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'GEO',
  'งานด้านธรณีเทคนิค',
  'Geotechnical work'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'CRW',
  'งานด้านโยธา - Rock Works',
  'Civil Works - Rock Works'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'DVW',
  'ทีมนักประดาน้ำ',
  'Team of Divers'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'MTT',
  'งานทดสอบวัสดุ',
  'Materials Testing'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'ARC',
  'งานสถาปัตยกรรม',
  'Architecture'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'STR',
  'งานโครงสร้าง',
  'Structural work'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'SAN',
  'งานระบบสุขาภิบาล',
  'Sanitation System'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'DRA',
  'งานระบบระบายน้ำ',
  'Drainage system work'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'TER',
  'งานท่าเทียบเรือ',
  'Terminal Work work'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'BUD',
  'งานอาคาร',
  'Building'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'ROW',
  'งานถนนและสะพาน',
  'Road and Bridge Work'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'MEC',
  'งานเคริองกล',
  'Mechanical work'
FROM contracts
WHERE contract_code = 'LCBP3-C2'
UNION ALL
SELECT id,
  'OTH',
  'อื่น ๆ',
  'Others'
FROM contracts
WHERE contract_code = 'LCBP3-C2';

-- 2. Seed ข้อมูล Correspondence Sub Types (Mapping RFA Types กับ Number)
-- เนื่องจาก sub_type_code ตรงกับ RFA Type Code แต่ Req ต้องการ Mapping เป็น Number
-- LCBP3-C1
-- LCBP3-C1
INSERT INTO correspondence_sub_types (
    contract_id,
    correspondence_type_id,
    sub_type_code,
    sub_type_name,
    sub_type_number
  )
SELECT c.id,
  ct.id,
  'MAT',
  'Material Approval',
  '11'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C1'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'SHP',
  'Shop Drawing Submittal',
  '12'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C1'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'DWG',
  'Document Approval',
  '13'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C1'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'MET',
  'Engineering Document Submittal',
  '14'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C1'
  AND ct.type_code = 'RFA';

-- LCBP3-C2
INSERT INTO correspondence_sub_types (
    contract_id,
    correspondence_type_id,
    sub_type_code,
    sub_type_name,
    sub_type_number
  )
SELECT c.id,
  ct.id,
  'MAT',
  'Material Approval',
  '21'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C2'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'SHP',
  'Shop Drawing Submittal',
  '22'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C2'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'DWG',
  'Document Approval',
  '23'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C2'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'MET',
  'Engineering Document Submittal',
  '24'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C2'
  AND ct.type_code = 'RFA';

-- LCBP3-C3
INSERT INTO correspondence_sub_types (
    contract_id,
    correspondence_type_id,
    sub_type_code,
    sub_type_name,
    sub_type_number
  )
SELECT c.id,
  ct.id,
  'MAT',
  'Material Approval',
  '31'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C3'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'SHP',
  'Shop Drawing Submittal',
  '32'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C3'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'DWG',
  'Document Approval',
  '33'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C3'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'MET',
  'Engineering Document Submittal',
  '34'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C3'
  AND ct.type_code = 'RFA';

-- LCBP3-C4
INSERT INTO correspondence_sub_types (
    contract_id,
    correspondence_type_id,
    sub_type_code,
    sub_type_name,
    sub_type_number
  )
SELECT c.id,
  ct.id,
  'MAT',
  'Material Approval',
  '41'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C4'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'SHP',
  'Shop Drawing Submittal',
  '42'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C4'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'DWG',
  'Document Approval',
  '43'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C4'
  AND ct.type_code = 'RFA'
UNION ALL
SELECT c.id,
  ct.id,
  'MET',
  'Engineering Document Submittal',
  '44'
FROM contracts c,
  correspondence_types ct
WHERE c.contract_code = 'LCBP3-C4'
  AND ct.type_code = 'RFA';

INSERT INTO `correspondences` (
    `id`,
    `correspondence_number`,
    `correspondence_type_id`,
    `discipline_id`,
    `is_internal_communication`,
    `project_id`,
    `originator_id`,
    `created_at`,
    `created_by`,
    `deleted_at`
  )
VALUES (
    1,
    'ผรม.1-คคง.-0242-2568',
    6,
    1,
    0,
    2,
    41,
    '2025-12-06 05:25:58',
    1,
    NULL
  ),
  (
    2,
    'LCBP3-C2-RFA-ROW-RPT-0059-A',
    1,
    95,
    0,
    3,
    42,
    '2025-12-06 05:36:52',
    1,
    NULL
  );

INSERT INTO `correspondence_revisions` (
    `id`,
    `correspondence_id`,
    `revision_number`,
    `revision_label`,
    `is_current`,
    `correspondence_status_id`,
    `title`,
    `document_date`,
    `issued_date`,
    `received_date`,
    `due_date`,
    `description`,
    `details`,
    `schema_version`,
    `created_at`,
    `created_by`,
    `updated_by`
  )
VALUES (
    1,
    1,
    0,
    NULL,
    1,
    4,
    'นำส่งวีดิทัศน์ความก้าวหน้างานก่อสร้างงานทางทะเล (ฉบับสมบูรณ์) ประจำเดือนตุลาคม พ.ศ.2568 โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1) งานก่อสร้างงานทางทะเล',
    '2025-11-28',
    '2025-11-28 12:26:29',
    '2025-12-01 12:26:29',
    NULL,
    NULL,
    NULL,
    1,
    '2025-12-06 05:30:17',
    1,
    NULL
  );

INSERT INTO `rfas` (
    `id`,
    `rfa_type_id`,
    `discipline_id`,
    `created_at`,
    `created_by`,
    `deleted_at`
  )
VALUES (1, 68, 75, '2025-12-06 05:40:02', 1, NULL);

INSERT INTO `rfa_revisions` (
    `id`,
    `correspondence_id`,
    `rfa_id`,
    `revision_number`,
    `revision_label`,
    `is_current`,
    `rfa_status_code_id`,
    `rfa_approve_code_id`,
    `title`,
    `document_date`,
    `issued_date`,
    `received_date`,
    `approved_date`,
    `description`,
    `details`,
    `schema_version`,
    `created_at`,
    `created_by`,
    `updated_by`
  )
VALUES (
    1,
    2,
    1,
    1,
    'A',
    0,
    2,
    NULL,
    'ขออนุมัติผลการทดสอบเสาเข็มแบบ Dynamic Load Test สำหรับงานเสาเข็มตอกของอาคารสถานีไฟฟ้าย่อย 22 kV. No. 6',
    '2025-12-03',
    '2025-12-04',
    '2025-12-04 12:40:19',
    NULL,
    NULL,
    NULL,
    1,
    '2025-12-06 05:41:25',
    NULL,
    NULL
  );

-- ==========================================================
-- 20. Workflow Definitions (Unified Workflow Engine)
-- ==========================================================
INSERT INTO `workflow_definitions` (
    `id`,
    `workflow_code`,
    `version`,
    `description`,
    `dsl`,
    `compiled`,
    `is_active`,
    `created_at`,
    `updated_at`
  )
VALUES (
    -- CORRESPONDENCE_FLOW_V1
    UUID(),
    'CORRESPONDENCE_FLOW_V1',
    1,
    'Standard Correspondence Workflow - Draft → Submit → Review → Approve/Reject',
    JSON_OBJECT(
      'workflow',
      'CORRESPONDENCE_FLOW_V1',
      'version',
      1,
      'states',
      JSON_ARRAY(
        JSON_OBJECT(
          'name',
          'DRAFT',
          'initial',
          TRUE,
          'on',
          JSON_OBJECT(
            'SUBMIT',
            JSON_OBJECT('to', 'IN_REVIEW')
          )
        ),
        JSON_OBJECT(
          'name',
          'IN_REVIEW',
          'on',
          JSON_OBJECT(
            'APPROVE',
            JSON_OBJECT('to', 'APPROVED'),
            'REJECT',
            JSON_OBJECT('to', 'REJECTED'),
            'RETURN',
            JSON_OBJECT('to', 'DRAFT')
          )
        ),
        JSON_OBJECT('name', 'APPROVED', 'terminal', TRUE),
        JSON_OBJECT('name', 'REJECTED', 'terminal', TRUE)
      )
    ),
    JSON_OBJECT(
      'initialState',
      'DRAFT',
      'states',
      JSON_OBJECT(
        'DRAFT',
        JSON_OBJECT(
          'initial',
          TRUE,
          'terminal',
          false,
          'transitions',
          JSON_OBJECT(
            'SUBMIT',
            JSON_OBJECT('to', 'IN_REVIEW', 'events', JSON_ARRAY())
          )
        ),
        'IN_REVIEW',
        JSON_OBJECT(
          'initial',
          false,
          'terminal',
          false,
          'transitions',
          JSON_OBJECT(
            'APPROVE',
            JSON_OBJECT('to', 'APPROVED', 'events', JSON_ARRAY()),
            'REJECT',
            JSON_OBJECT('to', 'REJECTED', 'events', JSON_ARRAY()),
            'RETURN',
            JSON_OBJECT('to', 'DRAFT', 'events', JSON_ARRAY())
          )
        ),
        'APPROVED',
        JSON_OBJECT(
          'initial',
          false,
          'terminal',
          TRUE,
          'transitions',
          JSON_OBJECT()
        ),
        'REJECTED',
        JSON_OBJECT(
          'initial',
          false,
          'terminal',
          TRUE,
          'transitions',
          JSON_OBJECT()
        )
      )
    ),
    TRUE,
    NOW(),
    NOW()
  ),
  (
    -- RFA_APPROVAL
    UUID(),
    'RFA_APPROVAL',
    1,
    'Request for Approval Workflow - Contractor Submit → Consultant Review → Owner Review',
    JSON_OBJECT(
      'workflow',
      'RFA_APPROVAL',
      'version',
      1,
      'states',
      JSON_ARRAY(
        JSON_OBJECT(
          'name',
          'DRAFT',
          'initial',
          TRUE,
          'on',
          JSON_OBJECT(
            'SUBMIT',
            JSON_OBJECT(
              'to',
              'CONSULTANT_REVIEW',
              'require',
              JSON_OBJECT('role', 'CONTRACTOR')
            )
          )
        ),
        JSON_OBJECT(
          'name',
          'CONSULTANT_REVIEW',
          'on',
          JSON_OBJECT(
            'APPROVE',
            JSON_OBJECT('to', 'OWNER_REVIEW'),
            'REJECT',
            JSON_OBJECT('to', 'DRAFT')
          )
        ),
        JSON_OBJECT(
          'name',
          'OWNER_REVIEW',
          'on',
          JSON_OBJECT(
            'APPROVE',
            JSON_OBJECT('to', 'APPROVED'),
            'REJECT',
            JSON_OBJECT('to', 'CONSULTANT_REVIEW')
          )
        ),
        JSON_OBJECT('name', 'APPROVED', 'terminal', TRUE)
      )
    ),
    JSON_OBJECT(
      'initialState',
      'DRAFT',
      'states',
      JSON_OBJECT(
        'DRAFT',
        JSON_OBJECT(
          'initial',
          TRUE,
          'terminal',
          false,
          'transitions',
          JSON_OBJECT(
            'SUBMIT',
            JSON_OBJECT(
              'target',
              'CONSULTANT_REVIEW',
              'events',
              JSON_ARRAY()
            )
          )
        ),
        'CONSULTANT_REVIEW',
        JSON_OBJECT(
          'initial',
          false,
          'terminal',
          false,
          'transitions',
          JSON_OBJECT(
            'APPROVE',
            JSON_OBJECT('target', 'OWNER_REVIEW', 'events', JSON_ARRAY()),
            'REJECT',
            JSON_OBJECT('target', 'DRAFT', 'events', JSON_ARRAY())
          )
        ),
        'OWNER_REVIEW',
        JSON_OBJECT(
          'initial',
          false,
          'terminal',
          false,
          'transitions',
          JSON_OBJECT(
            'APPROVE',
            JSON_OBJECT('target', 'APPROVED', 'events', JSON_ARRAY()),
            'REJECT',
            JSON_OBJECT(
              'target',
              'CONSULTANT_REVIEW',
              'events',
              JSON_ARRAY()
            )
          )
        ),
        'APPROVED',
        JSON_OBJECT(
          'initial',
          false,
          'terminal',
          TRUE,
          'transitions',
          JSON_OBJECT()
        )
      )
    ),
    TRUE,
    NOW(),
    NOW()
  );
