#!/bin/bash
# Script FINAL para criar usuário admin hamam
# Execute na VPS: bash criar-hamam-final.sh

cd /var/www/maktubia-backend

# Gerar hash da senha
echo "🔐 Gerando hash da senha..."
HASH=$(node -e "const bcrypt = require('bcrypt'); bcrypt.hash('2535', 10).then(hash => { console.log(hash); process.exit(0); });")

echo "📝 Criando usuário admin hamam..."
echo ""

# Executar SQL
sudo -u postgres psql -d maktubia_points << EOF
DO \$\$
DECLARE
    v_user_id INTEGER;
    v_admin_role_id INTEGER;
    v_password_hash TEXT := '$HASH';
BEGIN
    -- 1. Verificar ou criar role admin
    SELECT role_id INTO v_admin_role_id FROM roles WHERE role_name = 'admin' LIMIT 1;
    
    IF v_admin_role_id IS NULL THEN
        INSERT INTO roles (role_name, role_description, permissions)
        VALUES ('admin', 'Administrador', '{"*": ["*"]}'::jsonb)
        RETURNING role_id INTO v_admin_role_id;
        RAISE NOTICE '✅ Role admin criado: %', v_admin_role_id;
    ELSE
        RAISE NOTICE 'ℹ️  Role admin já existe: %', v_admin_role_id;
    END IF;
    
    -- 2. Verificar se usuário existe
    SELECT user_id INTO v_user_id FROM users WHERE username = 'hamam' LIMIT 1;
    
    IF v_user_id IS NULL THEN
        -- Criar usuário (first_name e last_name obrigatórios)
        INSERT INTO users (username, email, password_hash, first_name, last_name, phone, role_id, is_active, created_at, updated_at)
        VALUES ('hamam', 'hamam@maktubia.com', v_password_hash, 'Hamam', 'Admin', '+258844232354', v_admin_role_id, TRUE, NOW(), NOW())
        RETURNING user_id INTO v_user_id;
        
        -- Criar perfil (user_id como VARCHAR, SEM created_at/updated_at)
        INSERT INTO users_profile (user_id, name, phone, email, level)
        VALUES (v_user_id::text, 'Hamam Admin', '+258844232354', 'hamam@maktubia.com', 'bronze');
        
        -- Criar carteira (user_id como VARCHAR, usa 'points' não 'points_balance')
        INSERT INTO wallets (user_id, balance, points)
        VALUES (v_user_id::text, 0.00, 0);
        
        RAISE NOTICE '✅ Usuário criado com sucesso! User ID: %', v_user_id;
    ELSE
        -- Atualizar usuário existente
        UPDATE users 
        SET password_hash = v_password_hash, 
            role_id = v_admin_role_id, 
            is_active = TRUE, 
            updated_at = NOW()
        WHERE user_id = v_user_id;
        
        -- Garantir que perfil existe
        INSERT INTO users_profile (user_id, name, phone, email, level)
        VALUES (v_user_id::text, 'Hamam Admin', '+258844232354', 'hamam@maktubia.com', 'bronze')
        ON CONFLICT (user_id) DO UPDATE SET
            name = 'Hamam Admin',
            phone = '+258844232354',
            email = 'hamam@maktubia.com';
        
        -- Garantir que carteira existe
        INSERT INTO wallets (user_id, balance, points)
        VALUES (v_user_id::text, 0.00, 0)
        ON CONFLICT (user_id) DO NOTHING;
        
        RAISE NOTICE '✅ Usuário atualizado! User ID: %', v_user_id;
    END IF;
END \$\$;

-- Mostrar resultado
SELECT 
    u.user_id, 
    u.username, 
    u.email, 
    u.first_name,
    u.last_name,
    r.role_name,
    u.is_active,
    wp.name as profile_name,
    wp.level as profile_level,
    w.points,
    w.balance
FROM users u
LEFT JOIN roles r ON u.role_id = r.role_id
LEFT JOIN users_profile wp ON u.user_id::text = wp.user_id
LEFT JOIN wallets w ON u.user_id::text = w.user_id
WHERE u.username = 'hamam';
EOF

echo ""
echo "✅ Usuário criado/atualizado!"













