fixed the model crashing

This commit is contained in:
Vaibhav Surve 2025-11-15 15:35:56 +05:30
parent 2e750ad19c
commit 6e37e0dd04
3 changed files with 29 additions and 22 deletions

View File

@ -1,4 +1,3 @@
// dashboard_tasks_model.dart
class DashboardTasks { class DashboardTasks {
final bool success; final bool success;
final String message; final String message;
@ -23,7 +22,7 @@ class DashboardTasks {
data: json['data'] != null ? DashboardTasksData.fromJson(json['data']) : null, data: json['data'] != null ? DashboardTasksData.fromJson(json['data']) : null,
errors: json['errors'], errors: json['errors'],
statusCode: json['statusCode'] ?? 0, statusCode: json['statusCode'] ?? 0,
timestamp: DateTime.parse(json['timestamp']), timestamp: DateTime.tryParse(json['timestamp'] ?? '') ?? DateTime.now(),
); );
} }
} }
@ -38,9 +37,16 @@ class DashboardTasksData {
}); });
factory DashboardTasksData.fromJson(Map<String, dynamic> json) { factory DashboardTasksData.fromJson(Map<String, dynamic> json) {
int toInt(dynamic value) {
if (value is int) return value;
if (value is double) return value.toInt();
if (value is String) return int.tryParse(value) ?? 0;
return 0;
}
return DashboardTasksData( return DashboardTasksData(
totalTasks: json['totalTasks'] ?? 0, totalTasks: toInt(json['totalTasks']),
completedTasks: json['completedTasks'] ?? 0, completedTasks: toInt(json['completedTasks']),
); );
} }
} }

View File

@ -27,7 +27,7 @@ class ProjectResponse {
[], [],
errors: json['errors'], errors: json['errors'],
statusCode: json['statusCode'] ?? 0, statusCode: json['statusCode'] ?? 0,
timestamp: DateTime.parse(json['timestamp']), timestamp: DateTime.tryParse(json['timestamp'] ?? '') ?? DateTime.now(),
); );
} }
@ -46,8 +46,8 @@ class ProjectResponse {
class ProjectData { class ProjectData {
final String projectId; final String projectId;
final String projectName; final String projectName;
final int plannedTask; final double plannedTask;
final int completedTask; final double completedTask;
final DateTime date; final DateTime date;
ProjectData({ ProjectData({
@ -62,9 +62,9 @@ class ProjectData {
return ProjectData( return ProjectData(
projectId: json['projectId'] ?? '', projectId: json['projectId'] ?? '',
projectName: json['projectName'] ?? '', projectName: json['projectName'] ?? '',
plannedTask: json['plannedTask'] ?? 0, plannedTask: (json['plannedTask'] ?? 0).toDouble(),
completedTask: json['completedTask'] ?? 0, completedTask: (json['completedTask'] ?? 0).toDouble(),
date: DateTime.parse(json['date']), date: DateTime.tryParse(json['date'] ?? '') ?? DateTime.now(),
); );
} }
@ -81,8 +81,8 @@ class ProjectData {
/// Chart-friendly model /// Chart-friendly model
class ChartTaskData { class ChartTaskData {
final DateTime date; // actual date for chart final DateTime date;
final String dateLabel; // optional: for display final String dateLabel;
final int planned; final int planned;
final int completed; final int completed;
@ -96,9 +96,9 @@ class ChartTaskData {
factory ChartTaskData.fromProjectData(ProjectData data) { factory ChartTaskData.fromProjectData(ProjectData data) {
return ChartTaskData( return ChartTaskData(
date: data.date, date: data.date,
dateLabel: DateFormat('dd-MM').format(data.date), dateLabel: DateFormat('dd-MM').format(data.date),
planned: data.plannedTask, planned: data.plannedTask.round(),
completed: data.completedTask, completed: data.completedTask.round(),
); );
} }
} }

View File

@ -108,18 +108,15 @@ class ProjectItem {
address: json['address'] ?? '', address: json['address'] ?? '',
assignedDate: assignedDate:
DateTime.tryParse(json['assignedDate'] ?? '') ?? DateTime.now(), DateTime.tryParse(json['assignedDate'] ?? '') ?? DateTime.now(),
status: status: json['status'] != null ? Status.fromJson(json['status']) : null,
json['status'] != null ? Status.fromJson(json['status']) : null, client: json['client'] != null ? Client.fromJson(json['client']) : null,
client:
json['client'] != null ? Client.fromJson(json['client']) : null,
services: json['services'] != null services: json['services'] != null
? List<Service>.from(json['services'].map((x) => Service.fromJson(x))) ? List<Service>.from(json['services'].map((x) => Service.fromJson(x)))
: [], : [],
contactName: json['contactName'] ?? '', contactName: json['contactName'] ?? '',
contactPhone: json['contactPhone'] ?? '', contactPhone: json['contactPhone'] ?? '',
contactEmail: json['contactEmail'] ?? '', contactEmail: json['contactEmail'] ?? '',
createdAt: createdAt: DateTime.tryParse(json['createdAt'] ?? '') ?? DateTime.now(),
DateTime.tryParse(json['createdAt'] ?? '') ?? DateTime.now(),
createdBy: json['createdBy'] != null createdBy: json['createdBy'] != null
? CreatedBy.fromJson(json['createdBy']) ? CreatedBy.fromJson(json['createdBy'])
: null, : null,
@ -192,7 +189,11 @@ class Client {
contactPerson: json['contactPerson'] ?? '', contactPerson: json['contactPerson'] ?? '',
address: json['address'] ?? '', address: json['address'] ?? '',
contactNumber: json['contactNumber'] ?? '', contactNumber: json['contactNumber'] ?? '',
sprid: json['sprid'] ?? 0, sprid: (json['sprid'] is int)
? json['sprid']
: (json['sprid'] is double)
? (json['sprid'] as double).toInt()
: int.tryParse(json['sprid']?.toString() ?? "0") ?? 0,
); );
} }