boh
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import 'package:flux/core/enums_and_consts/consts.dart';
|
||||
import 'package:flux/features/tasks/models/task_status.dart';
|
||||
import 'package:supabase_flutter/supabase_flutter.dart';
|
||||
// Sostituisci con i percorsi corretti di FLUX
|
||||
@@ -18,10 +19,15 @@ class TaskRepository {
|
||||
int? limit,
|
||||
}) async {
|
||||
try {
|
||||
// 1. FASE FILTRI (PostgrestFilterBuilder)
|
||||
// 1. FASE FILTRI: Usa il join esplicito stile "Notes"
|
||||
var filterBuilder = _supabase
|
||||
.from('tasks')
|
||||
.select('*, assigned_to_staff:staff_members!task_assignments(*)')
|
||||
.select('''
|
||||
*,
|
||||
task_assignments (
|
||||
staff_members (*)
|
||||
)
|
||||
''')
|
||||
.eq('company_id', companyId);
|
||||
|
||||
if (storeId != null) {
|
||||
@@ -31,9 +37,8 @@ class TaskRepository {
|
||||
}
|
||||
|
||||
if (staffId != null) {
|
||||
filterBuilder = filterBuilder.or(
|
||||
'staff_id.eq.$staffId,staff_id.is.null',
|
||||
);
|
||||
// Grazie al trigger, hai l'array pronto per il filtro senza impazzire!
|
||||
filterBuilder = filterBuilder.contains('assigned_to_ids', [staffId]);
|
||||
}
|
||||
|
||||
if (statuses != null && statuses.isNotEmpty) {
|
||||
@@ -41,13 +46,11 @@ class TaskRepository {
|
||||
filterBuilder = filterBuilder.inFilter('status', statusValues);
|
||||
}
|
||||
|
||||
// 2. FASE TRASFORMAZIONI (PostgrestTransformBuilder)
|
||||
// L'ordinamento lo facciamo sempre, quindi partiamo da qui
|
||||
// 2. FASE TRASFORMAZIONI
|
||||
var transformBuilder = filterBuilder
|
||||
.order('due_date', ascending: true, nullsFirst: false)
|
||||
.order('created_at', ascending: false, nullsFirst: false);
|
||||
|
||||
// Aggiungiamo il limite se richiesto
|
||||
if (limit != null) {
|
||||
transformBuilder = transformBuilder.limit(limit);
|
||||
}
|
||||
@@ -55,6 +58,7 @@ class TaskRepository {
|
||||
// 3. ESECUZIONE DELLA QUERY
|
||||
final response = await transformBuilder;
|
||||
|
||||
// 4. PARSING DEI DATI
|
||||
return (response as List).map((json) => TaskModel.fromMap(json)).toList();
|
||||
} catch (e) {
|
||||
throw Exception('Errore nel recupero dei task: $e');
|
||||
@@ -95,8 +99,9 @@ class TaskRepository {
|
||||
|
||||
// --- 3. AGGIORNAMENTO DEL TASK ---
|
||||
Future<TaskModel> updateTask(TaskModel task) async {
|
||||
if (task.id == null)
|
||||
if (task.id == null) {
|
||||
throw Exception('ID Task mancante. Impossibile aggiornare.');
|
||||
}
|
||||
|
||||
try {
|
||||
final taskData = task.toMap();
|
||||
@@ -133,7 +138,7 @@ class TaskRepository {
|
||||
try {
|
||||
final response = await _supabase
|
||||
.from('tasks')
|
||||
.select('*, assigned_to_staff:staff!task_assignments(*)')
|
||||
.select('*, assigned_to_staff:staff_members!task_assignments(*)')
|
||||
.eq('id', taskId)
|
||||
.single();
|
||||
return TaskModel.fromMap(response);
|
||||
|
||||
Reference in New Issue
Block a user