/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Arquivo: src/features/patients/services/patientsSelects.js
|
| Fonte única de SELECTs do feature patients. Inclui também SELECTs de
| tabelas relacionadas (agenda_eventos, financial_records, etc) quando
| usadas SOB ESCOPO de paciente — composables fazem listing por paciente
| e precisam de SELECTs estáveis.
|
| Quando os módulos M4 (Financeiro) / M6 (Notificações/Conversations)
| forem padronizados, os SELECTs cross-feature listados aqui podem migrar
| pra repositories nativos. Por ora, centralizar no patients é pragmático.
|--------------------------------------------------------------------------
*/

/** SELECT base de patients — usado em listPatients, getPatientById, etc. */
export const PATIENTS_SELECT_BASE = `
    id, tenant_id, owner_id, user_id, responsible_member_id, therapist_member_id,
    nome_completo, email_principal, email_alternativo, telefone, telefone_alternativo,
    cpf, rg, data_nascimento, naturalidade, genero, estado_civil,
    profissao, escolaridade, status,
    cep, endereco, numero, bairro, complemento, cidade, estado, pais,
    nome_responsavel, telefone_responsavel, cpf_responsavel, observacao_responsavel,
    cobranca_no_responsavel,
    onde_nos_conheceu, encaminhado_por, observacoes,
    last_attended_at, created_at, updated_at,
    risco_sinalizado_por, convenio_id, patient_scope
`
    .replace(/\s+/g, ' ')
    .trim();

// ─── Cross-feature reads em escopo de paciente ──────────────────────────────

/** Sessões (agenda_eventos) listadas por paciente. */
export const PATIENT_SESSIONS_SELECT = `
    id, inicio_em, fim_em, status, modalidade, tipo, titulo, titulo_custom,
    observacoes, patient_id, recurrence_id, recurrence_date
`
    .replace(/\s+/g, ' ')
    .trim();

/** Lançamentos financeiros do paciente. */
export const PATIENT_FINANCIAL_RECORDS_SELECT = `
    id, type, amount, due_date, paid_at, description, payment_method, category, created_at
`
    .replace(/\s+/g, ' ')
    .trim();

/** Documentos do paciente — KPI/timeline (campos leves). */
export const PATIENT_DOCUMENTS_SELECT = `
    id, tipo_documento, created_at, status_revisao, tamanho_bytes
`
    .replace(/\s+/g, ' ')
    .trim();

/** Mensagens recentes do paciente. */
export const PATIENT_MESSAGES_SELECT = `
    id, body, direction, created_at, channel, kanban_status
`
    .replace(/\s+/g, ' ')
    .trim();

/** Regras de recorrência — composable usa todos os campos (UI rica). */
export const PATIENT_RECURRENCE_RULES_SELECT = '*';

/** Contatos de suporte (responsável, parente, etc) — formulário usa todos os campos. */
export const PATIENT_SUPPORT_CONTACTS_SELECT = '*';

// ─── Patient-native selects ─────────────────────────────────────────────────

/** Grupos de pacientes (estrutura completa) — listGroups. */
export const PATIENT_GROUPS_SELECT = 'id, nome, cor, is_system, owner_id, is_active';

/** Grupos — versão brief (id+nome) usada em getGroupsByIds. */
export const PATIENT_GROUPS_SELECT_BRIEF = 'id, nome';

/** Tags do paciente — completa com owner. */
export const PATIENT_TAGS_SELECT = 'id, nome, cor, owner_id';

/** Tags — brief com cor (display em pílulas). */
export const PATIENT_TAGS_SELECT_BRIEF = 'id, nome, cor';
