marco.pms.mobileapp/lib/model/dynamicMenu/dynamic_menu_model.dart
Vaibhav Surve a154872649 feat: Implement daily task planning and progress reporting features
- Added TaskListModel for managing daily tasks with JSON parsing.
- Introduced WorkStatusResponseModel and WorkStatus for handling work status data.
- Created MenuResponse and MenuItem models for dynamic menu management.
- Updated routes to reflect correct naming conventions for task planning screens.
- Enhanced DashboardScreen to include dynamic menu functionality and improved task statistics display.
- Developed DailyProgressReportScreen for displaying daily progress reports with filtering options.
- Implemented DailyTaskPlanningScreen for planning daily tasks with detailed views and actions.
- Refactored left navigation bar to align with updated task planning routes.
2025-08-28 14:48:05 +05:30

87 lines
2.3 KiB
Dart

import 'dart:convert';
/// Top-level response for the menu API
class MenuResponse {
final bool success; // API call success flag
final String message; // Response message
final List<MenuItem> data; // List of menu items
final dynamic errors; // Error details (if any)
final int statusCode; // HTTP-like status code
final DateTime timestamp; // Response timestamp
MenuResponse({
required this.success,
required this.message,
required this.data,
this.errors,
required this.statusCode,
required this.timestamp,
});
/// Creates a MenuResponse from a JSON map
factory MenuResponse.fromJson(Map<String, dynamic> json) {
return MenuResponse(
success: json['success'] as bool? ?? false,
message: json['message'] as String? ?? '',
data: (json['data'] as List<dynamic>?)
?.map((e) => MenuItem.fromJson(e as Map<String, dynamic>))
.toList() ??
<MenuItem>[],
errors: json['errors'],
statusCode: json['statusCode'] as int? ?? 0,
timestamp: DateTime.tryParse(json['timestamp'] as String? ?? '') ??
DateTime.now(),
);
}
/// Converts the MenuResponse back to JSON map
Map<String, dynamic> toJson() {
return {
'success': success,
'message': message,
'data': data.map((e) => e.toJson()).toList(),
'errors': errors,
'statusCode': statusCode,
'timestamp': timestamp.toIso8601String(),
};
}
/// Parse from raw JSON string
static MenuResponse fromRawJson(String str) =>
MenuResponse.fromJson(json.decode(str) as Map<String, dynamic>);
/// Convert to raw JSON string
String toRawJson() => json.encode(toJson());
}
/// Individual menu item
class MenuItem {
final String id; // Unique item ID
final String name; // Display text
final bool available; // Availability flag
MenuItem({
required this.id,
required this.name,
required this.available,
});
/// Creates MenuItem from JSON map
factory MenuItem.fromJson(Map<String, dynamic> json) {
return MenuItem(
id: json['id'] as String? ?? '',
name: json['name'] as String? ?? '',
available: json['available'] as bool? ?? false,
);
}
/// Converts MenuItem back to JSON
Map<String, dynamic> toJson() {
return {
'id': id,
'name': name,
'available': available,
};
}
}