import 'package:flutter/foundation.dart'; import '../config.dart'; import '../supabase_config.dart'; /// Réglages globaux du magasin (ligne unique `reglages` id=1 sur Supabase). /// Étend [ChangeNotifier] pour que les écrans se rafraîchissent au changement. class Reglages extends ChangeNotifier { Reglages._(); static final Reglages instance = Reglages._(); double _eurosParPoint = Config.eurosParPointParDefaut; String _nomMagasin = ''; /// Nombre d'euros à dépenser pour gagner 1 point. double get eurosParPoint => _eurosParPoint; /// Nom du magasin, affiché sur la carte / le QR du client. String get nomMagasin => _nomMagasin; Future charger() async { try { final row = await supabase .from('reglages') .select('euros_par_point, nom_magasin') .eq('id', 1) .maybeSingle(); if (row != null) { _eurosParPoint = (row['euros_par_point'] as num?)?.toDouble() ?? Config.eurosParPointParDefaut; _nomMagasin = (row['nom_magasin'] as String?) ?? ''; notifyListeners(); } } catch (_) { // Réglages par défaut si non connecté / hors-ligne. } } /// Points gagnés pour un montant donné, selon le ratio courant. double pointsPour(double euros) => _eurosParPoint > 0 ? euros / _eurosParPoint : 0; Future definirEurosParPoint(double valeur) async { if (valeur <= 0) return; await supabase.from('reglages').update({'euros_par_point': valeur}).eq('id', 1); _eurosParPoint = valeur; notifyListeners(); } Future definirNomMagasin(String valeur) async { final v = valeur.trim(); await supabase.from('reglages').update({'nom_magasin': v}).eq('id', 1); _nomMagasin = v; notifyListeners(); } }