-- =============================================================================
-- FIX: Corrige acentuação perdida (caracteres ?? no banco)
-- =============================================================================
-- Causa: Seeds aplicados originalmente sem encoding UTF-8 correto.
-- Os ?? são bytes literais 0x3F (ASCII ?) onde deveria haver UTF-8.
-- Este fix faz UPDATE direto nos valores conhecidos.
-- =============================================================================

BEGIN;

SET client_encoding TO 'UTF8';

-- ============================================================
-- 1. PROFILES — full_name
-- ============================================================
UPDATE profiles SET full_name = 'Clínica Espaço Psi'  WHERE id = 'aaaaaaaa-0003-0003-0003-000000000003' AND full_name != 'Clínica Espaço Psi';
UPDATE profiles SET full_name = 'Clínica Mente Sã'    WHERE id = 'aaaaaaaa-0004-0004-0004-000000000004' AND full_name != 'Clínica Mente Sã';
UPDATE profiles SET full_name = 'Clínica Bem Estar'   WHERE id = 'aaaaaaaa-0005-0005-0005-000000000005' AND full_name != 'Clínica Bem Estar';
UPDATE profiles SET full_name = 'Gabriela Secretária'  WHERE id = 'aaaaaaaa-0011-0011-0011-000000000011' AND full_name != 'Gabriela Secretária';

-- ============================================================
-- 2. TENANTS — name
-- ============================================================
UPDATE tenants SET name = 'Clínica Espaço Psi'  WHERE id = 'bbbbbbbb-0003-0003-0003-000000000003';
UPDATE tenants SET name = 'Clínica Mente Sã'    WHERE id = 'bbbbbbbb-0004-0004-0004-000000000004';
UPDATE tenants SET name = 'Clínica Bem Estar'   WHERE id = 'bbbbbbbb-0005-0005-0005-000000000005';

-- ============================================================
-- 3. DETERMINED_COMMITMENTS — name
-- ============================================================
UPDATE determined_commitments SET name = 'Sessão'          WHERE native_key = 'session';
UPDATE determined_commitments SET name = 'Supervisão'      WHERE native_key = 'supervision';
UPDATE determined_commitments SET name = 'Análise Pessoal' WHERE native_key = 'analysis';

-- ============================================================
-- 4. PLANS — name, description
-- ============================================================
UPDATE plans SET name = 'THERAPIST PRO',  description = 'Plano profissional para terapeutas' WHERE key = 'therapist_pro'  AND description LIKE '%??%';
UPDATE plans SET name = 'CLINIC PRO',     description = 'Plano profissional para clínicas'   WHERE key = 'clinic_pro'     AND description LIKE '%??%';
UPDATE plans SET name = 'THERAPIST FREE', description = 'Plano gratuito para terapeutas'     WHERE key = 'therapist_free' AND description LIKE '%??%';
UPDATE plans SET name = 'CLINIC FREE',    description = 'Plano gratuito para clínicas'       WHERE key = 'clinic_free'    AND description LIKE '%??%';

-- ============================================================
-- 5. FEATURES — name, description
-- ============================================================
UPDATE features SET name = 'Agenda - Visualizar',          description = 'Visualização da agenda'                  WHERE key = 'agenda.view';
UPDATE features SET name = 'Agenda - Gerenciar',           description = 'Gerenciamento completo da agenda'        WHERE key = 'agenda.manage';
UPDATE features SET name = 'Pacientes',                    description = 'Módulo de pacientes'                     WHERE key = 'patients';
UPDATE features SET name = 'Pacientes - Visualizar',       description = 'Visualização de pacientes'               WHERE key = 'patients.view';
UPDATE features SET name = 'Pacientes - Gerenciar',        description = 'Gerenciamento completo de pacientes'     WHERE key = 'patients.manage';
UPDATE features SET name = 'Agendamento Online',           description = 'Sistema de agendamento online'           WHERE key = 'online_scheduling';
UPDATE features SET name = 'Agendamento Online - Gerenciar', description = 'Gerenciamento do agendamento online'   WHERE key = 'online_scheduling.manage';
UPDATE features SET name = 'Agendamento Online - Público', description = 'Página pública do agendador'             WHERE key = 'online_scheduling.public';
UPDATE features SET name = 'Lembretes',                    description = 'Sistema de lembretes automáticos'        WHERE key = 'reminders';
UPDATE features SET name = 'Relatórios Básicos',           description = 'Relatórios básicos'                      WHERE key = 'reports_basic';
UPDATE features SET name = 'Relatórios Avançados',         description = 'Relatórios avançados com exportação'     WHERE key = 'reports_advanced';
UPDATE features SET name = 'Secretária',                   description = 'Funcionalidade de secretária'            WHERE key = 'secretary';
UPDATE features SET name = 'Recepção Compartilhada',       description = 'Recepção compartilhada entre terapeutas' WHERE key = 'shared_reception';
UPDATE features SET name = 'Salas',                        description = 'Gerenciamento de salas'                  WHERE key = 'rooms';
UPDATE features SET name = 'Intake Público',               description = 'Formulário de intake público'            WHERE key = 'intake_public';
UPDATE features SET name = 'Intakes PRO',                  description = 'Funcionalidades avançadas de intake'     WHERE key = 'intakes_pro';
UPDATE features SET name = 'Branding Personalizado',       description = 'Personalização de marca'                 WHERE key = 'custom_branding';
UPDATE features SET name = 'Acesso API',                   description = 'Acesso via API'                          WHERE key = 'api_access';
UPDATE features SET name = 'Log de Auditoria',             description = 'Log de auditoria completo'               WHERE key = 'audit_log';
UPDATE features SET name = 'Lembrete SMS',                 description = 'Lembretes via SMS'                       WHERE key = 'sms_reminder';
UPDATE features SET name = 'Calendário da Clínica',        description = 'Visão consolidada do calendário'         WHERE key = 'clinic_calendar';
UPDATE features SET name = 'Relatórios Avançados (Clínica)', description = 'Relatórios avançados da clínica'       WHERE key = 'advanced_reports';
UPDATE features SET name = 'Supervisor - Acesso',          description = 'Acesso ao módulo de supervisão'          WHERE key = 'supervisor.access';
UPDATE features SET name = 'Supervisor - Convidar',        description = 'Convidar supervisionados'                WHERE key = 'supervisor.invite';
UPDATE features SET name = 'Supervisor - Sessões',         description = 'Gerenciar sessões de supervisão'         WHERE key = 'supervisor.sessions';
UPDATE features SET name = 'Supervisor - Relatórios',      description = 'Relatórios de supervisão'                WHERE key = 'supervisor.reports';

-- ============================================================
-- 6. EMAIL_TEMPLATES_GLOBAL — subject, body_html, body_text
-- ============================================================
UPDATE email_templates_global SET
  subject   = 'Lembrete: sua sessão amanhã às {{session_time}}',
  body_text = 'Olá {{patient_name}}, lembrete da sua sessão amanhã às {{session_time}} com {{therapist_name}}.'
WHERE key = 'session.reminder';

UPDATE email_templates_global SET
  subject   = 'Sessão confirmada — {{session_date}} às {{session_time}}',
  body_text = 'Sua sessão com {{therapist_name}} em {{session_date}} às {{session_time}} foi confirmada.'
WHERE key = 'session.confirmation';

UPDATE email_templates_global SET
  subject   = 'Sessão cancelada — {{session_date}}',
  body_text = 'A sessão de {{session_date}} às {{session_time}} com {{therapist_name}} foi cancelada.'
WHERE key = 'session.cancellation';

UPDATE email_templates_global SET
  subject   = 'Sessão reagendada — novo horário: {{session_date}} às {{session_time}}',
  body_text = 'Sua sessão foi reagendada para {{session_date}} às {{session_time}} com {{therapist_name}}.'
WHERE key = 'session.rescheduled';

UPDATE email_templates_global SET
  subject   = 'Recebemos seu cadastro — {{patient_name}}',
  body_text = 'Olá {{patient_name}}, recebemos seu formulário de cadastro. Entraremos em contato em breve.'
WHERE key = 'intake.received';

UPDATE email_templates_global SET
  subject   = 'Cadastro aprovado — Bem-vindo(a)!',
  body_text = 'Olá {{patient_name}}, seu cadastro foi aprovado. Você já pode acessar a plataforma.'
WHERE key = 'intake.approved';

UPDATE email_templates_global SET
  subject   = 'Cadastro não aprovado',
  body_text = 'Olá {{patient_name}}, infelizmente seu cadastro não foi aprovado no momento.'
WHERE key = 'intake.rejected';

UPDATE email_templates_global SET
  subject   = 'Solicitação aceita — {{session_date}} às {{session_time}}',
  body_text = 'Sua solicitação de agendamento para {{session_date}} às {{session_time}} foi aceita.'
WHERE key = 'scheduler.request_accepted';

UPDATE email_templates_global SET
  subject   = 'Solicitação não disponível',
  body_text = 'Infelizmente o horário solicitado não está disponível. Por favor, escolha outro horário.'
WHERE key = 'scheduler.request_rejected';

UPDATE email_templates_global SET
  subject   = 'Bem-vindo(a) à AgenciaPsi!',
  body_text = 'Olá {{user_name}}, sua conta foi criada com sucesso. Acesse a plataforma para começar.'
WHERE key = 'system.welcome';

UPDATE email_templates_global SET
  subject   = 'Redefinição de senha — AgenciaPsi',
  body_text = 'Clique no link abaixo para redefinir sua senha: {{reset_link}}'
WHERE key = 'system.password_reset';

-- ============================================================
-- 7. LOGIN_CAROUSEL_SLIDES — title, description
-- ============================================================
UPDATE login_carousel_slides SET
  title = '<strong>Gestão clínica simplificada</strong>',
  body  = 'Gerencie agenda, pacientes e financeiro em um só lugar. Simples, rápido e seguro.'
WHERE ordem = 1;

UPDATE login_carousel_slides SET
  title = '<strong>Múltiplos profissionais, uma só plataforma</strong>',
  body  = 'Ideal para clínicas com vários terapeutas. Cada profissional com sua agenda e seus pacientes.'
WHERE ordem = 2;

UPDATE login_carousel_slides SET
  title = '<strong>Seguro, privado e sempre disponível</strong>',
  body  = 'Seus dados protegidos com criptografia. Acesse de qualquer lugar, a qualquer hora.'
WHERE ordem = 3;

-- ============================================================
-- 8. PATIENT_GROUPS (default groups) — name
-- ============================================================
UPDATE patient_groups SET nome = 'Crianças'      WHERE nome LIKE 'Crian%'    AND is_system = true;
UPDATE patient_groups SET nome = 'Adolescentes'  WHERE nome LIKE 'Adolescen%' AND is_system = true;
UPDATE patient_groups SET nome = 'Idosos'        WHERE nome LIKE 'Idoso%'     AND is_system = true;

-- ============================================================
-- 9. AUTH.USERS — raw_user_meta_data (name field)
-- ============================================================
UPDATE auth.users SET raw_user_meta_data = jsonb_set(raw_user_meta_data, '{name}', '"Clínica Espaço Psi"')  WHERE id = 'aaaaaaaa-0003-0003-0003-000000000003';
UPDATE auth.users SET raw_user_meta_data = jsonb_set(raw_user_meta_data, '{name}', '"Clínica Mente Sã"')    WHERE id = 'aaaaaaaa-0004-0004-0004-000000000004';
UPDATE auth.users SET raw_user_meta_data = jsonb_set(raw_user_meta_data, '{name}', '"Clínica Bem Estar"')   WHERE id = 'aaaaaaaa-0005-0005-0005-000000000005';
UPDATE auth.users SET raw_user_meta_data = jsonb_set(raw_user_meta_data, '{name}', '"Gabriela Secretária"') WHERE id = 'aaaaaaaa-0011-0011-0011-000000000011';

COMMIT;

-- ============================================================
DO $$
DECLARE
  broken_count int;
BEGIN
  SELECT count(*) INTO broken_count
  FROM profiles WHERE full_name LIKE '%??%';

  IF broken_count = 0 THEN
    RAISE NOTICE 'fix_encoding_accents: Todos os acentos corrigidos com sucesso.';
  ELSE
    RAISE WARNING 'fix_encoding_accents: Ainda restam % registros com ?? em profiles.full_name', broken_count;
  END IF;
END $$;
