-- ==========================================================
-- DMS v1.4.4 Document Management System Database
-- Deploy Seed Data
-- ==========================================================
-- Seed organization
INSERT INTO organizations (id, organization_code, organization_name)
VALUES (1, 'กทท.', 'การท่าเรือแห่งประเทศไทย'),
    (
        10,
        'สคฉ.3',
        'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3'
    ),
    (
        11,
        'สคฉ.3-01',
        'ตรวจรับพัสดุ ที่ปรึกษาควบคุมงาน'
    ),
    (12, 'สคฉ.3-02', 'ตรวจรับพัสดุ งานทางทะเล'),
    (
        13,
        'สคฉ.3-03',
        'ตรวจรับพัสดุ อาคารและระบบสาธารณูปโภค'
    ),
    (
        14,
        'สคฉ.3-04',
        'ตรวจรับพัสดุ ตรวจสอบผลกระทบสิ่งแวดล้อม'
    ),
    (15, 'สคฉ.3-05', 'ตรวจรับพัสดุ เยียวยาการประมง'),
    (
        16,
        'สคฉ.3-06',
        'ตรวจรับพัสดุ งานก่อสร้าง ส่วนที่ 3'
    ),
    (
        17,
        'สคฉ.3-07',
        'ตรวจรับพัสดุ งานก่อสร้าง ส่วนที่ 4'
    ),
    (
        18,
        'สคฉ.3-xx',
        'ตรวจรับพัสดุ ที่ปรึกษาออกแบบ ส่วนที่ 4'
    ),
    (21, 'TEAM', 'Designer Consulting Ltd.'),
    (22, 'คคง.', 'Construction Supervision Ltd.'),
    (41, 'ผรม.1', 'Contractor งานทางทะเล'),
    (42, 'ผรม.2', 'Contractor อาคารและระบบ'),
    (43, 'ผรม.3', 'Contractor #3 Ltd.'),
    (44, 'ผรม.4', 'Contractor #4 Ltd.'),
    (31, 'EN', 'Third Party Environment'),
    (32, 'CAR', 'Third Party Fishery Care');
-- Seed project
INSERT INTO projects (project_code, project_name)
VALUES (
        'LCBP3',
        'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)'
    ),
    (
        'LCBP3C1',
        'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1) งานก่อสร้างงานทางทะเล'
    ),
    (
        'LCBP3C2',
        'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 2) งานก่อสร้างอาคาร ท่าเทียบเรือ ระบบถนน และระบบสาธารณูปโภค'
    ),
    (
        'LCBP3C3',
        'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 3) งานก่อสร้าง'
    ),
    (
        'LCBP3C4',
        'โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง'
    );
-- Seed contract
-- ใช้ Subquery เพื่อดึง project_id มาเชื่อมโยง ทำให้ไม่ต้องมานั่งจัดการ ID ด้วยตัวเอง
INSERT INTO contracts (
        contract_code,
        contract_name,
        project_id,
        is_active
    )
VALUES (
        'DSLCBP3',
        'งานจ้างที่ปรีกษาออกแบบ โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)',
        (
            SELECT id
            FROM projects
            WHERE project_code = 'LCBP3'
        ),
        TRUE
    ),
    (
        'PSLCBP3',
        'งานจ้างที่ปรีกษาควบคุมงาน โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)',
        (
            SELECT id
            FROM projects
            WHERE project_code = 'LCBP3'
        ),
        TRUE
    ),
    (
        'LCBP3-C1',
        'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1) งานก่อสร้างงานทางทะเล',
        (
            SELECT id
            FROM projects
            WHERE project_code = 'LCBP3C1'
        ),
        TRUE
    ),
    (
        'LCBP3-C2',
        'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 2) งานก่อสร้างอาคาร ท่าเทียบเรือ ระบบถนน และระบบสาธารณูปโภค',
        (
            SELECT id
            FROM projects
            WHERE project_code = 'LCBP3C2'
        ),
        TRUE
    ),
    (
        'LCBP3-C3',
        'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 3) งานก่อสร้าง',
        (
            SELECT id
            FROM projects
            WHERE project_code = 'LCBP3C3'
        ),
        TRUE
    ),
    (
        'LCBP3-C4',
        'งานก่อสร้าง โครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 4) งานก่อสร้าง',
        (
            SELECT id
            FROM projects
            WHERE project_code = 'LCBP3C4'
        ),
        TRUE
    ),
    (
        'ENLCBP3',
        'งานจ้างเหมาตรวจสอบผลกระทบสิ่งแวดล้อมนะหว่างงานก่อสร้างโครงการพัฒนาท่าเรือแหลมฉบัง ระยะที่ 3 (ส่วนที่ 1-4)',
        (
            SELECT id
            FROM projects
            WHERE project_code = 'LCBP3'
        ),
        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)
INSERT INTO roles (role_id, role_name, scope, description)
VALUES (
        2,
        'Org Admin',
        'Organization',
        'ผู้ดูแลองค์กร: จัดการผู้ใช้ในองค์กร, จัดการบทบาท / สิทธิ์ภายในองค์กร, และดูรายงานขององค์กร'
    );
-- 3. Document Control (Organization)
INSERT INTO roles (role_id, role_name, scope, description)
VALUES (
        3,
        'Document Control',
        'Organization',
        'ควบคุมเอกสารขององค์กร: เพิ่ม / แก้ไข / ลบเอกสาร, และกำหนดสิทธิ์เอกสารภายในองค์กร'
    );
-- 4. Editor (Organization)
INSERT INTO roles (role_id, role_name, scope, description)
VALUES (
        4,
        'Editor',
        'Organization',
        'ผู้แก้ไขเอกสารขององค์กร: เพิ่ม / แก้ไขเอกสารที่ได้รับมอบหมาย'
    );
-- 5. Viewer (Organization)
INSERT INTO roles (role_id, role_name, scope, description)
VALUES (
        5,
        'Viewer',
        'Organization',
        'ผู้ดูเอกสารขององค์กร: ดูเอกสารที่มีสิทธิ์เข้าถึงเท่านั้น'
    );
-- 6. Project Manager (Project)
INSERT INTO roles (role_id, role_name, scope, description)
VALUES (
        6,
        'Project Manager',
        'Project',
        'ผู้จัดการโครงการ: จัดการสมาชิกในโครงการ, สร้าง / จัดการสัญญาในโครงการ, และดูรายงานโครงการ'
    );
-- 7. Contract Admin (Contract)
INSERT INTO roles (role_id, role_name, scope, description)
VALUES (
        7,
        'Contract Admin',
        'Contract',
        'ผู้ดูแลสัญญา: จัดการสมาชิกในสัญญา, สร้าง / จัดการข้อมูลหลักเฉพาะสัญญา, และอนุมัติเอกสารในสัญญา'
    );
-- =====================================================
-- 2. Seed Permissions (สิทธิ์การใช้งานทั้งหมด)
-- สิทธิ์ระดับระบบและการจัดการหลัก (System & Master Data)
-- =====================================================
INSERT INTO permissions (permission_id, permission_name, description)
VALUES (
        1,
        'system.manage_all',
        'ทำทุกอย่างในระบบ (Superadmin Power)'
    ),
    -- การจัดการองค์กร
    (2, 'organization.create', 'สร้างองค์กรใหม่'),
    (3, 'organization.edit', 'แก้ไขข้อมูลองค์กร'),
    (4, 'organization.delete', 'ลบองค์กร'),
    (5, 'organization.view', 'ดูรายการองค์กร'),
    -- การจัดการโครงการ
    (6, 'project.create', 'สร้างโครงการใหม่'),
    (7, 'project.edit', 'แก้ไขข้อมูลโครงการ'),
    (8, 'project.delete', 'ลบโครงการ'),
    (9, 'project.view', 'ดูรายการโครงการ'),
    -- การจัดการบทบาทและสิทธิ์ (Roles & Permissions)
    (10, 'role.create', 'สร้างบทบาท (Role) ใหม่'),
    (11, 'role.edit', 'แก้ไขบทบาท (Role)'),
    (12, 'role.delete', 'ลบบทบาท (Role)'),
    (
        13,
        'permission.assign',
        'มอบสิทธิ์ให้กับบทบาท (Role)'
    ),
    -- การจัดการข้อมูลหลัก (Master Data)
    (
        14,
        'master_data.document_type.manage',
        'จัดการประเภทเอกสาร (Document Types)'
    ),
    (
        15,
        'master_data.document_status.manage',
        'จัดการสถานะเอกสาร (Document Statuses)'
    ),
    (
        16,
        'master_data.drawing_category.manage',
        'จัดการหมวดหมู่แบบ (Drawing Categories)'
    ),
    (17, 'master_data.tag.manage', 'จัดการ Tags'),
    -- การจัดการผู้ใช้งาน
    (18, 'user.create', 'สร้างผู้ใช้งานใหม่'),
    (19, 'user.edit', 'แก้ไขข้อมูลผู้ใช้งาน'),
    (20, 'user.delete', 'ลบ / ปิดการใช้งานผู้ใช้'),
    (21, 'user.view', 'ดูข้อมูลผู้ใช้งาน'),
    (
        22,
        'user.assign_organization',
        'มอบผู้ใช้งานให้กับองค์กร'
    );
-- =====================================================
-- == 2. สิทธิ์การจัดการโครงการและสัญญา (Project & Contract) ==
-- =====================================================
INSERT INTO permissions (permission_id, permission_name, description)
VALUES (
        23,
        'project.manage_members',
        'จัดการสมาชิกในโครงการ (เชิญ / ถอดสมาชิก)'
    ),
    (
        24,
        'project.create_contracts',
        'สร้างสัญญาในโครงการ'
    ),
    (
        25,
        'project.manage_contracts',
        'จัดการสัญญาในโครงการ'
    ),
    (
        26,
        'project.view_reports',
        'ดูรายงานระดับโครงการ'
    ),
    (
        27,
        'contract.manage_members',
        'จัดการสมาชิกในสัญญา'
    ),
    (28, 'contract.view', 'ดูข้อมูลสัญญา');
-- =====================================================
-- == 3. สิทธิ์การจัดการเอกสาร (Document Management) ==
-- =====================================================
-- สิทธิ์ทั่วไปสำหรับเอกสารทุกประเภท
INSERT INTO permissions (permission_id, permission_name, description)
VALUES (
        29,
        'document.create_draft',
        'สร้างเอกสารในสถานะฉบับร่าง (Draft) '
    ),
    (30, 'document.submit', 'ส่งเอกสาร (Submitted)'),
    (31, 'document.view', 'ดูเอกสาร'),
    (32, 'document.edit', 'แก้ไขเอกสาร (ทั่วไป)'),
    (
        33,
        'document.admin_edit',
        'แก้ไข / ถอน / ยกเลิกเอกสารที่ส่งแล้ว (Admin Power) '
    ),
    (34, 'document.delete', 'ลบเอกสาร'),
    (
        35,
        'document.attach',
        'จัดการไฟล์แนบ (อัปโหลด / ลบ) '
    ),
    -- สิทธิ์เฉพาะสำหรับ Correspondence
    (
        36,
        'correspondence.create',
        'สร้างเอกสารโต้ตอบ (Correspondence) '
    ),
    -- สิทธิ์เฉพาะสำหรับ Request for Approval (RFA)
    (37, 'rfa.create', 'สร้างเอกสารขออนุมัติ (RFA)'),
    (
        38,
        'rfa.manage_shop_drawings',
        'จัดการข้อมูล Shop Drawing และ Contract Drawing ที่เกี่ยวข้อง'
    ),
    -- สิทธิ์เฉพาะสำหรับ Shop Drawing & Contract Drawing
    (
        39,
        'drawing.create',
        'สร้าง / แก้ไขข้อมูลแบบ (Shop / Contract Drawing)'
    ),
    -- สิทธิ์เฉพาะสำหรับ Transmittal
    (
        40,
        'transmittal.create',
        'สร้างเอกสารนำส่ง (Transmittal)'
    ),
    -- สิทธิ์เฉพาะสำหรับ Circulation Sheet (ใบเวียน)
    (
        41,
        'circulation.create',
        'สร้างใบเวียนเอกสาร (Circulation)'
    ),
    (
        42,
        'circulation.respond',
        'ตอบกลับใบเวียน (Main / Action)'
    ),
    (
        43,
        'circulation.acknowledge',
        'รับทราบใบเวียน (Information)'
    ),
    (44, 'circulation.close', 'ปิดใบเวียน');
-- =====================================================
-- == 4. สิทธิ์การจัดการ Workflow ==
-- =====================================================
INSERT INTO permissions (permission_id, permission_name, description)
VALUES (
        45,
        'workflow.action_review',
        'ดำเนินการในขั้นตอนปัจจุบัน (เช่น ตรวจสอบแล้ว)'
    ),
    (
        46,
        'workflow.force_proceed',
        'บังคับไปยังขั้นตอนถัดไป (Document Control Power)'
    ),
    (
        47,
        'workflow.revert',
        'ย้อนกลับไปยังขั้นตอนก่อนหน้า (Document Control Power)'
    );
-- =====================================================
-- == 5. สิทธิ์ด้านการค้นหาและรายงาน (Search & Reporting) ==
-- =====================================================
INSERT INTO permissions (permission_id, permission_name, description)
VALUES (48, 'search.advanced', 'ใช้งานการค้นหาขั้นสูง'),
    (
        49,
        'report.generate',
        'สร้างรายงานสรุป (รายวัน / สัปดาห์ / เดือน / ปี)'
    );
-- ==========================================================
-- 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.
-- =====================================================
-- == 1. Superadmin (role_id = 1) - Gets ALL permissions ==
-- =====================================================
-- Superadmin can do everything. We can dynamically link all permissions to this role.
-- This is a robust way to ensure Superadmin always has full power.
INSERT INTO role_permissions (role_id, permission_id)
SELECT 1,
    permission_id
FROM permissions;
-- =====================================================
-- == 2. Org Admin (role_id = 2) ==
-- =====================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- จัดการผู้ใช้ในองค์กร
    (2, 18),
    -- user.create
    (2, 19),
    -- user.edit
    (2, 20),
    -- user.delete
    (2, 21),
    -- user.view
    (2, 22),
    -- user.assign_organization
    -- จัดการองค์กร
    (2, 3),
    -- organization.edit
    (2, 5),
    -- organization.view
    -- จัดการข้อมูลหลักที่อนุญาต (เฉพาะ Tags)
    (2, 17),
    -- master_data.tag.manage
    -- ดูข้อมูลต่างๆ ในองค์กร
    (2, 31),
    -- document.view
    (2, 9),
    -- project.view
    (2, 28),
    -- contract.view
    -- การค้นหาและรายงาน
    (2, 48),
    -- search.advanced
    (2, 49);
-- report.generate
-- =====================================================
-- == 3. Document Control (role_id = 3) ==
-- =====================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- สิทธิ์จัดการเอกสารทั้งหมด
    (3, 29),
    -- document.create_draft
    (3, 30),
    -- document.submit
    (3, 31),
    -- document.view
    (3, 32),
    -- document.edit
    (3, 33),
    -- document.admin_edit
    (3, 34),
    -- document.delete
    (3, 35),
    -- document.attach
    -- สิทธิ์สร้างเอกสารแต่ละประเภท
    (3, 36),
    -- correspondence.create
    (3, 37),
    -- rfa.create
    (3, 39),
    -- drawing.create
    (3, 40),
    -- transmittal.create
    (3, 41),
    -- circulation.create
    -- สิทธิ์จัดการ Workflow
    (3, 45),
    -- workflow.action_review
    (3, 46),
    -- workflow.force_proceed
    (3, 47),
    -- workflow.revert
    -- สิทธิ์จัดการ Circulation
    (3, 42),
    -- circulation.respond
    (3, 43),
    -- circulation.acknowledge
    (3, 44),
    -- circulation.close
    -- สิทธิ์อื่นๆ ที่จำเป็น
    (3, 38),
    -- rfa.manage_shop_drawings
    (3, 48),
    -- search.advanced
    (3, 49);
-- report.generate
-- =====================================================
-- == 4. Editor (role_id = 4) ==
-- =====================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- สิทธิ์แก้ไขเอกสาร (แต่ไม่ใช่สิทธิ์ Admin)
    (4, 29),
    -- document.create_draft
    (4, 30),
    -- document.submit
    (4, 31),
    -- document.view
    (4, 32),
    -- document.edit
    (4, 35),
    -- document.attach
    -- สิทธิ์สร้างเอกสารแต่ละประเภท
    (4, 36),
    -- correspondence.create
    (4, 37),
    -- rfa.create
    (4, 39),
    -- drawing.create
    (4, 40),
    -- transmittal.create
    (4, 41),
    -- circulation.create
    -- สิทธิ์อื่นๆ ที่จำเป็น
    (4, 38),
    -- rfa.manage_shop_drawings
    (4, 48);
-- search.advanced
-- =====================================================
-- == 5. Viewer (role_id = 5) ==
-- =====================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- สิทธิ์ดูเท่านั้น
    (5, 31),
    -- document.view
    (5, 48);
-- search.advanced
-- =====================================================
-- == 6. Project Manager (role_id = 6) ==
-- =====================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- สิทธิ์จัดการโครงการ
    (6, 23),
    -- project.manage_members
    (6, 24),
    -- project.create_contracts
    (6, 25),
    -- project.manage_contracts
    (6, 26),
    -- project.view_reports
    (6, 9),
    -- project.view
    -- สิทธิ์จัดการข้อมูลหลักระดับโครงการ
    (6, 16),
    -- master_data.drawing_category.manage
    -- สิทธิ์ดูข้อมูลในสัญญา
    (6, 28),
    -- contract.view
    -- สิทธิ์ในการจัดการเอกสาร (ระดับ Editor)
    (6, 29),
    -- document.create_draft
    (6, 30),
    -- document.submit
    (6, 31),
    -- document.view
    (6, 32),
    -- document.edit
    (6, 35),
    -- document.attach
    (6, 36),
    -- correspondence.create
    (6, 37),
    -- rfa.create
    (6, 39),
    -- drawing.create
    (6, 40),
    -- transmittal.create
    (6, 41),
    -- circulation.create
    (6, 38),
    -- rfa.manage_shop_drawings
    (6, 48),
    -- search.advanced
    (6, 49);
-- report.generate
-- =====================================================
-- == 7. Contract Admin (role_id = 7) ==
-- =====================================================
INSERT INTO role_permissions (role_id, permission_id)
VALUES -- สิทธิ์จัดการสัญญา
    (7, 27),
    -- contract.manage_members
    (7, 28),
    -- contract.view
    -- สิทธิ์ในการอนุมัติ (ส่วนหนึ่งของ Workflow)
    (7, 45),
    -- workflow.action_review
    -- สิทธิ์จัดการข้อมูลเฉพาะสัญญา
    (7, 38),
    -- rfa.manage_shop_drawings
    (7, 39),
    -- drawing.create
    -- สิทธิ์ในการจัดการเอกสาร (ระดับ Editor)
    (7, 29),
    -- document.create_draft
    (7, 30),
    -- document.submit
    (7, 31),
    -- document.view
    (7, 32),
    -- document.edit
    (7, 35),
    -- document.attach
    (7, 36),
    -- correspondence.create
    (7, 37),
    -- rfa.create
    (7, 40),
    -- transmittal.create
    (7, 41),
    -- circulation.create
    (7, 48);
-- 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
    ),
    (
        2,
        2,
        2,
        1,
        NULL,
        NULL,
        NULL
    );
-- =====================================================
-- == 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 = 'LCBP3C1 '
    ),
    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 = 'LCBP3C2 '
    ),
    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 = 'DSLCBP3'
        ),
        (
            SELECT id
            FROM organizations
            WHERE organization_code = 'กทท.'
        ),
        'Owner'
    ),
    (
        (
            SELECT id
            FROM contracts
            WHERE contract_code = 'DSLCBP3'
        ),
        (
            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 = 'PSLCBP3 '
        ),
        (
            SELECT id
            FROM organizations
            WHERE organization_code = 'กทท.'
        ),
        'Owner'
    ),
    (
        (
            SELECT id
            FROM contracts
            WHERE contract_code = 'PSLCBP3 '
        ),
        (
            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'
    );
-- สัญญาตรวจสอบสิ่งแวดล้อม (ENLCBP3)
INSERT INTO contract_organizations (contract_id, organization_id, role_in_contract)
VALUES (
        (
            SELECT id
            FROM contracts
            WHERE contract_code = 'ENLCBP3'
        ),
        (
            SELECT id
            FROM organizations
            WHERE organization_code = 'กทท.'
        ),
        'Owner'
    ),
    (
        (
            SELECT id
            FROM contracts
            WHERE contract_code = 'ENLCBP3'
        ),
        (
            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 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);
-- ตาราง "แม่" ของ 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
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-C4'
    AND ct.type_code = 'RFA';
-- Note: 6B data has C4 on the right column for MET but C3 on left, checking logic... MD says C3 for first 3 rows, then C4 mixed. I will assume C4 starts at row 12 in the MD table.
-- 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';