-- Signalements (rapports d'abus) -------------------------------------------
CREATE TABLE IF NOT EXISTS signalements (
  id           UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  type         TEXT NOT NULL CHECK (type IN ('vitrine', 'avis', 'reservation', 'autre')),
  cible_id     UUID NOT NULL,
  raison       TEXT NOT NULL CHECK (raison IN ('contenu_inapproprie', 'arnaque', 'comportement_abusif', 'informations_fausses', 'autre')),
  description  TEXT,
  signale_par  UUID REFERENCES utilisateurs(id) ON DELETE SET NULL,
  statut       TEXT NOT NULL DEFAULT 'nouveau' CHECK (statut IN ('nouveau', 'en_cours', 'resolu', 'rejete')),
  note_admin   TEXT,
  traite_par   UUID REFERENCES utilisateurs(id) ON DELETE SET NULL,
  traite_le    TIMESTAMPTZ,
  created_at   TIMESTAMPTZ NOT NULL DEFAULT now()
);

CREATE INDEX IF NOT EXISTS idx_signalements_statut ON signalements(statut);
CREATE INDEX IF NOT EXISTS idx_signalements_type   ON signalements(type);

-- Messages de contact (support/SAV) ----------------------------------------
CREATE TABLE IF NOT EXISTS messages_contact (
  id           UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  nom          TEXT NOT NULL,
  email        TEXT NOT NULL,
  sujet        TEXT NOT NULL CHECK (sujet IN ('bug', 'question', 'reclamation', 'partenariat', 'autre')),
  message      TEXT NOT NULL,
  statut       TEXT NOT NULL DEFAULT 'nouveau' CHECK (statut IN ('nouveau', 'traite', 'ferme')),
  note_admin   TEXT,
  traite_par   UUID REFERENCES utilisateurs(id) ON DELETE SET NULL,
  traite_le    TIMESTAMPTZ,
  created_at   TIMESTAMPTZ NOT NULL DEFAULT now()
);

CREATE INDEX IF NOT EXISTS idx_messages_contact_statut ON messages_contact(statut);
