-- SQL скрипт для n8n: Отметка формы как подтвержденной после получения данных из Redis канала
-- Используется после обработки события из канала clientright:webform:approve
--
-- Параметры:
-- $1 = claim_id (UUID или текст)
-- $2 = approved_form (JSONB - полные данные формы после апрува)
-- $3 = sms_code (текст - код подтверждения)
-- $4 = phone (текст - телефон)
--
-- Обновляет:
-- - status_code = 'approved' (отмечает форму как подтвержденную)
-- - is_confirmed = true (дополнительный флаг подтверждения)
-- - payload.approved_form = полные данные формы
-- - payload.sms_verified = true
-- - payload.sms_code = код подтверждения
-- - payload.approved_at = время подтверждения
-- - updated_at = now() (время обновления)
--
-- После этого запись больше не будет показываться в списке черновиков

WITH claim_lookup AS (
  SELECT 
    c.id,
    c.payload,
    c.status_code,
    c.is_confirmed
  FROM clpr_claims c
  WHERE c.id::text = $1::text
     OR c.payload->>'claim_id' = $1::text
  ORDER BY 
    CASE WHEN c.id::text = $1::text THEN 1 ELSE 2 END,
    c.updated_at DESC
  LIMIT 1
)
UPDATE clpr_claims c
SET 
  status_code = 'approved',
  is_confirmed = true,
  payload = c.payload 
    || jsonb_build_object(
      'approved_form', $2::jsonb,
      'sms_verified', true,
      'sms_code', $3::text,
      'approved_phone', $4::text,
      'approved_at', now()::text
    ),
  updated_at = now()
FROM claim_lookup cl
WHERE c.id = cl.id
RETURNING 
  c.id,
  c.payload->>'claim_id' AS claim_id,
  c.status_code,
  c.is_confirmed,
  c.updated_at,
  c.payload->'approved_form' IS NOT NULL AS has_approved_form;
