m3mo cb308bbf68 Initial project setup with Clean Architecture
- 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
2026-02-02 16:43:37 +01:00

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,
);
}
}