- Flutter frontend with Provider state management - FastAPI backend with SQLAlchemy ORM - Internationalization support (EN/DE) - Clean Architecture folder structure - GoRouter for navigation - GetIt for dependency injection
75 lines
1.9 KiB
Dart
75 lines
1.9 KiB
Dart
import '../../domain/entities/task_entity.dart';
|
|
import '../../domain/enums/priority.dart';
|
|
|
|
class TaskModel extends TaskEntity {
|
|
const TaskModel({
|
|
required super.id,
|
|
required super.title,
|
|
super.description,
|
|
required super.date,
|
|
super.time,
|
|
super.priority,
|
|
super.isDone,
|
|
super.createdAt,
|
|
super.updatedAt,
|
|
});
|
|
|
|
factory TaskModel.fromJson(Map<String, dynamic> json) {
|
|
return TaskModel(
|
|
id: json['id'] as String,
|
|
title: json['title'] as String,
|
|
description: json['description'] as String?,
|
|
date: DateTime.parse(json['date'] as String),
|
|
time: json['time'] as String?,
|
|
priority: Priority.fromString(json['priority'] as String? ?? 'medium'),
|
|
isDone: json['is_done'] as bool? ?? false,
|
|
createdAt: json['created_at'] != null
|
|
? DateTime.parse(json['created_at'] as String)
|
|
: null,
|
|
updatedAt: json['updated_at'] != null
|
|
? DateTime.parse(json['updated_at'] as String)
|
|
: null,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'id': id,
|
|
'title': title,
|
|
'description': description,
|
|
'date': _formatDate(date),
|
|
'time': time,
|
|
'priority': priority.name,
|
|
'is_done': isDone,
|
|
};
|
|
}
|
|
|
|
Map<String, dynamic> toCreateJson() {
|
|
return {
|
|
'title': title,
|
|
'description': description,
|
|
'date': _formatDate(date),
|
|
'time': time,
|
|
'priority': priority.name,
|
|
};
|
|
}
|
|
|
|
String _formatDate(DateTime date) {
|
|
return '${date.year}-${date.month.toString().padLeft(2, '0')}-${date.day.toString().padLeft(2, '0')}';
|
|
}
|
|
|
|
factory TaskModel.fromEntity(TaskEntity entity) {
|
|
return TaskModel(
|
|
id: entity.id,
|
|
title: entity.title,
|
|
description: entity.description,
|
|
date: entity.date,
|
|
time: entity.time,
|
|
priority: entity.priority,
|
|
isDone: entity.isDone,
|
|
createdAt: entity.createdAt,
|
|
updatedAt: entity.updatedAt,
|
|
);
|
|
}
|
|
}
|