-- =====================================================================
-- SQL_DEMO_admin_account.sql
-- إنشاء حساب الديمو الجاهز للزبون: demo@zyvora.com / demo1234
-- =====================================================================
-- ⚠️ مهم: هذا الملف يستخدم auth.admin_create_user — متاح فقط من
--          SQL Editor في Supabase Dashboard
-- =====================================================================

-- ============================================================
-- 1) إنشاء مستخدم demo (لو ما موجود)
-- ============================================================
DO $$
DECLARE
  v_user_id UUID;
  v_email TEXT := 'demo@zyvora.com';
  v_password TEXT := 'demo1234';
BEGIN
  -- شوف إذا المستخدم موجود
  SELECT id INTO v_user_id FROM auth.users WHERE email = v_email LIMIT 1;

  IF v_user_id IS NULL THEN
    -- ✅ إنشاء مستخدم جديد عبر auth.users (مع تجاوز تأكيد الإيميل)
    INSERT INTO auth.users (
      instance_id, id, aud, role, email, encrypted_password,
      email_confirmed_at, raw_app_meta_data, raw_user_meta_data,
      created_at, updated_at, confirmation_token, email_change, email_change_token_new, recovery_token
    ) VALUES (
      '00000000-0000-0000-0000-000000000000',
      gen_random_uuid(),
      'authenticated',
      'authenticated',
      v_email,
      crypt(v_password, gen_salt('bf')),
      now(),
      '{"provider":"email","providers":["email"]}'::jsonb,
      '{"full_name":"حساب الديمو"}'::jsonb,
      now(), now(), '', '', '', ''
    ) RETURNING id INTO v_user_id;

    -- إضافة identity للمستخدم
    INSERT INTO auth.identities (
      id, user_id, identity_data, provider, provider_id, last_sign_in_at, created_at, updated_at
    ) VALUES (
      gen_random_uuid(),
      v_user_id,
      jsonb_build_object('sub', v_user_id::text, 'email', v_email),
      'email',
      v_email,
      now(), now(), now()
    );

    RAISE NOTICE '✅ تم إنشاء حساب الديمو: %', v_email;
  ELSE
    RAISE NOTICE 'ℹ️ حساب الديمو موجود مسبقاً: %', v_email;
  END IF;
END $$;


-- ============================================================
-- 2) تعيينه أدمن (يتم تلقائياً عبر trigger handle_new_user
--    لكن نتأكد إنو role=admin)
-- ============================================================
UPDATE profiles
SET role = 'admin',
    full_name = 'حساب الديمو',
    permissions = ARRAY['in','out','transfer','stock','count','import','users','alerts','audit','admin']
WHERE email = 'demo@zyvora.com';


-- =====================================================================
-- ✅ تم — بيانات الدخول للزبون:
--    📧 demo@zyvora.com
--    🔑 demo1234
--    👤 Role: admin (كل الصلاحيات)
-- =====================================================================

-- 🧪 للتحقق:
SELECT u.email, p.role, p.full_name
FROM auth.users u
LEFT JOIN profiles p ON p.id = u.id
WHERE u.email = 'demo@zyvora.com';
