boh
This commit is contained in:
@@ -91,37 +91,46 @@ class TaskModel extends Equatable {
|
||||
}
|
||||
|
||||
// --- SERIALIZZAZIONE DA SUPABASE ---
|
||||
factory TaskModel.fromMap(Map<String, dynamic> json) {
|
||||
factory TaskModel.fromMap(Map<String, dynamic> map) {
|
||||
// 1. Gestiamo l'array nullo di Supabase trasformandolo in lista vuota
|
||||
final List<String> parsedAssignedToIds = json['assigned_to_ids'] != null
|
||||
? List<String>.from(json['assigned_to_ids'])
|
||||
final List<String> parsedAssignedToIds = map['assigned_to_ids'] != null
|
||||
? List<String>.from(map['assigned_to_ids'])
|
||||
: [];
|
||||
|
||||
// 2. Mappiamo il JOIN dello staff, se presente
|
||||
List<StaffMemberModel> parsedAssignedToStaff = [];
|
||||
if (json['assigned_to_staff'] != null) {
|
||||
final staffList = json['assigned_to_staff'] as List;
|
||||
parsedAssignedToStaff = staffList
|
||||
.map((s) => StaffMemberModel.fromMap(s as Map<String, dynamic>))
|
||||
List<StaffMemberModel> staffList = [];
|
||||
|
||||
// Gestione del JSON proveniente dal Join nidificato (es. task_assignments -> staff_members)
|
||||
if (map['task_assignments'] != null) {
|
||||
staffList = (map['task_assignments'] as List)
|
||||
.map((a) => a['staff_members'])
|
||||
.where((s) => s != null)
|
||||
.map((s) => StaffMemberModel.fromMap(s))
|
||||
.toList();
|
||||
}
|
||||
// Gestione del JSON piatto (se mai lo userai in altre chiamate RPC o viste)
|
||||
else if (map['assigned_to_staff'] != null) {
|
||||
staffList = (map['assigned_to_staff'] as List)
|
||||
.map((s) => StaffMemberModel.fromMap(s))
|
||||
.toList();
|
||||
}
|
||||
|
||||
return TaskModel(
|
||||
id: json['id'] as String?,
|
||||
companyId: json['company_id'] as String?,
|
||||
title: json['title'] as String? ?? '',
|
||||
description: json['description'] as String?,
|
||||
id: map['id'] as String?,
|
||||
companyId: map['company_id'] as String?,
|
||||
title: map['title'] as String? ?? '',
|
||||
description: map['description'] as String?,
|
||||
assignedToIds: parsedAssignedToIds,
|
||||
assignedToStaff: parsedAssignedToStaff,
|
||||
createdById: json['created_by_id'] as String?,
|
||||
dueDate: json['due_date'] != null
|
||||
? DateTime.parse(json['due_date'] as String).toLocal()
|
||||
assignedToStaff: staffList,
|
||||
createdById: map['created_by_id'] as String?,
|
||||
dueDate: map['due_date'] != null
|
||||
? DateTime.parse(map['due_date'] as String).toLocal()
|
||||
: null,
|
||||
status: TaskStatusExtension.fromString(json['status'] as String?),
|
||||
createdAt: json['created_at'] != null
|
||||
? DateTime.parse(json['created_at'] as String).toLocal()
|
||||
status: TaskStatusExtension.fromString(map['status'] as String?),
|
||||
createdAt: map['created_at'] != null
|
||||
? DateTime.parse(map['created_at'] as String).toLocal()
|
||||
: null,
|
||||
storeId: json['store_id'] as String?,
|
||||
storeId: map['store_id'] as String?,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user