64 lines
1.9 KiB
Dart
64 lines
1.9 KiB
Dart
|
|
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<SupabaseClient>();
|
||
|
|
|
||
|
|
// --- PREFERENZE REMINDER ---
|
||
|
|
|
||
|
|
/// Legge i default dell'utente corrente
|
||
|
|
Future<List<ReminderDefaultModel>> 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<ReminderDefaultModel> 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<void> 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');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|