#!/bin/bash
# Script para criar usuário admin diretamente no banco de dados

echo "=========================================="
echo "Criando usuário admin hamam via SQL"
echo "=========================================="

cd /var/www/maktubia-backend

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

echo "Hash gerado: ${PASSWORD_HASH:0:20}..."

# 2. Executar SQL diretamente
echo ""
echo "2. Criando usuário no banco de dados..."
sudo -u postgres psql -d maktubia_points << EOF

DO \$\$
DECLARE
    v_user_id INTEGER;
    v_admin_role_id INTEGER;
    v_password_hash TEXT := '$PASSWORD_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
        INSERT INTO users (username, email, password_hash, role_id, is_active, created_at, updated_at)
        VALUES ('hamam', 'hamam@maktubia.com', v_password_hash, v_admin_role_id, TRUE, NOW(), NOW())
        RETURNING user_id INTO v_user_id;
        
        -- Criar perfil
        INSERT INTO users_profile (user_id, name, phone, created_at, updated_at)
        VALUES (v_user_id, 'Hamam Admin', '+258844232354', NOW(), NOW());
        
        -- Criar carteira
        INSERT INTO wallets (user_id, balance, points_balance, created_at, updated_at)
        VALUES (v_user_id, 0.00, 0, NOW(), NOW());
        
        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;
        
        RAISE NOTICE '✅ Usuário atualizado! User ID: %', v_user_id;
    END IF;
END \$\$;

-- Mostrar resultado
SELECT 
    u.user_id, 
    u.username, 
    u.email, 
    r.role_name,
    u.is_active,
    wp.name,
    w.points_balance
FROM users u
LEFT JOIN roles r ON u.role_id = r.role_id
LEFT JOIN users_profile wp ON u.user_id = wp.user_id
LEFT JOIN wallets w ON u.user_id = w.user_id
WHERE u.username = 'hamam';

EOF

echo ""
echo "✅ Usuário criado!"
echo "=========================================="












