-- Migration: Création de la table promo_banners pour gérer les bannières promotionnelles

CREATE TABLE IF NOT EXISTS promo_banners (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  
  -- Contenu de la bannière
  text TEXT NOT NULL,
  cta_text TEXT, -- Texte du bouton CTA (optionnel)
  cta_link TEXT, -- Lien du bouton CTA (optionnel)
  
  -- Compte à rebours (optionnel)
  countdown_enabled BOOLEAN DEFAULT false,
  countdown_end_date TIMESTAMPTZ, -- Date de fin du compte à rebours
  
  -- Gradient de fond (couleurs Tailwind)
  gradient_from VARCHAR(50) DEFAULT 'indigo-600',
  gradient_to VARCHAR(50) DEFAULT 'purple-600',
  
  -- État d'activation
  is_active BOOLEAN DEFAULT false,
  
  -- Métadonnées
  created_at TIMESTAMPTZ DEFAULT now(),
  updated_at TIMESTAMPTZ DEFAULT now(),
  created_by UUID REFERENCES auth.users(id) ON DELETE SET NULL,
  updated_by UUID REFERENCES auth.users(id) ON DELETE SET NULL
);

-- Index pour performances
CREATE INDEX IF NOT EXISTS idx_promo_banners_active ON promo_banners(is_active);
CREATE INDEX IF NOT EXISTS idx_promo_banners_created_at ON promo_banners(created_at DESC);

-- Trigger pour mettre à jour updated_at
CREATE OR REPLACE FUNCTION update_promo_banners_updated_at()
RETURNS TRIGGER AS $$
BEGIN
  NEW.updated_at = now();
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trigger_update_promo_banners_updated_at
  BEFORE UPDATE ON promo_banners
  FOR EACH ROW
  EXECUTE FUNCTION update_promo_banners_updated_at();

-- RLS: Lecture publique (pour afficher la bannière active)
ALTER TABLE promo_banners ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Lecture publique de la bannière active"
  ON promo_banners
  FOR SELECT
  USING (is_active = true);

-- RLS: Gestion réservée au staff
CREATE POLICY "Staff peut tout gérer"
  ON promo_banners
  FOR ALL
  USING (
    EXISTS (
      SELECT 1 FROM staff_users
      WHERE staff_users.user_id = auth.uid()
      AND staff_users.is_staff = true
    )
  );

-- Commentaires
COMMENT ON TABLE promo_banners IS 'Bannières promotionnelles affichées en haut de l''espace paie';
COMMENT ON COLUMN promo_banners.text IS 'Texte principal de la bannière';
COMMENT ON COLUMN promo_banners.cta_text IS 'Texte du bouton d''appel à l''action (optionnel)';
COMMENT ON COLUMN promo_banners.cta_link IS 'Lien du bouton CTA (optionnel)';
COMMENT ON COLUMN promo_banners.countdown_enabled IS 'Activer le compte à rebours';
COMMENT ON COLUMN promo_banners.countdown_end_date IS 'Date de fin du compte à rebours';
COMMENT ON COLUMN promo_banners.gradient_from IS 'Couleur de départ du gradient (Tailwind)';
COMMENT ON COLUMN promo_banners.gradient_to IS 'Couleur de fin du gradient (Tailwind)';
COMMENT ON COLUMN promo_banners.is_active IS 'Une seule bannière peut être active à la fois';
