import 'package:flux/features/tasks/models/reminder_default_model.dart'; import 'package:get_it/get_it.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; class SettingsRepository { final _supabase = GetIt.I.get(); // --- PREFERENZE REMINDER --- /// Legge i default dell'utente corrente Future> getMyReminderDefaults({ required String companyId, required String staffId, }) async { try { final response = await _supabase .from('staff_task_reminder_defaults') .select() .eq('company_id', companyId) .eq('staff_id', staffId) .order('minutes_before', ascending: true); return (response as List) .map((map) => ReminderDefaultModel.fromMap(map)) .toList(); } catch (e) { throw Exception('Errore nel caricamento delle preferenze notifiche: $e'); } } /// Aggiunge una nuova regola (es. Push 15 min prima) Future addReminderDefault( ReminderDefaultModel reminder, ) async { try { final response = await _supabase .from('staff_task_reminder_defaults') .insert(reminder.toMap()) .select() .single(); return ReminderDefaultModel.fromMap(response); } catch (e) { // Catturiamo l'errore UNIQUE se l'utente prova ad aggiungere due volte la stessa identica regola if (e is PostgrestException && e.code == '23505') { throw Exception('Hai giĆ  impostato questo identico promemoria.'); } throw Exception('Errore salvataggio promemoria: $e'); } } /// Elimina una regola Future deleteReminderDefault(String reminderId) async { try { await _supabase .from('staff_task_reminder_defaults') .delete() .eq('id', reminderId); } catch (e) { throw Exception('Errore durante l\'eliminazione: $e'); } } }