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 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 toJson() { return { 'id': id, 'title': title, 'description': description, 'date': _formatDate(date), 'time': time, 'priority': priority.name, 'is_done': isDone, }; } Map 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, ); } }