-- =========================================================================
-- MIGRATION: Susun Semula Peranan (5 lama -> 4 baharu)
-- Jalankan di phpMyAdmin > tab SQL, pada database SPMS sedia ada anda.
--
-- PENTING: Migrasi ini PADAM struktur peranan lama sepenuhnya, gantikan
-- dengan 4 peranan baharu. Jana SANDARAN pangkalan data dahulu (Sistem >
-- Sandaran Pangkalan Data) sebelum jalankan skrip ini.
--
-- Pemetaan peranan lama -> baharu:
--   strategy             -> group_strategy    (Admin Group Strategy)
--   hr                   -> group_strategy    (digabung — tiada lagi
--                                               peranan HR berasingan)
--   subsidiary_finance   -> subsidiary_user   (User Subsidiary Level)
--   subsidiary_strategy  -> subsidiary_user   (digabung)
--   board_viewer         -> group_finance     (padanan terdekat untuk
--                                               "lihat semua dashboard")
--
-- SELEPAS jalankan migrasi ini, SEMAK SEMULA setiap pengguna di halaman
-- Urus Pengguna — terutama bekas 'hr' dan 'board_viewer' (pemetaan di
-- atas adalah anggaran terbaik, mungkin perlu pelarasan manual mengikut
-- keperluan sebenar organisasi anda).
-- =========================================================================

-- LANGKAH 1: Pindah data pengguna sedia ada ke peranan baharu (mesti
-- jalankan SEBELUM ubah ENUM, atau nilai lama akan ditolak/dipotong).
UPDATE app_users SET role = 'group_strategy' WHERE role = 'strategy';
UPDATE app_users SET role = 'group_strategy' WHERE role = 'hr';
UPDATE app_users SET role = 'subsidiary_user' WHERE role = 'subsidiary_finance';
UPDATE app_users SET role = 'subsidiary_user' WHERE role = 'subsidiary_strategy';
UPDATE app_users SET role = 'group_finance' WHERE role = 'board_viewer';

-- LANGKAH 2: Ubah lajur ENUM ke set peranan baharu sahaja.
ALTER TABLE app_users
    MODIFY COLUMN role ENUM('super_admin','group_strategy','subsidiary_user','group_finance') NOT NULL;

-- LANGKAH 3 (semakan): Lihat taburan peranan selepas migrasi.
SELECT role, COUNT(*) AS bilangan_pengguna FROM app_users GROUP BY role;
