app-mirror-github/lib/models/bucket.dart

63 lines
1.7 KiB
Dart
Raw Normal View History

2022-07-15 14:25:16 +00:00
import 'package:json_annotation/json_annotation.dart';
import 'package:vikunja_app/models/task.dart';
import 'package:vikunja_app/models/user.dart';
@JsonSerializable()
class Bucket {
int id, listId, limit;
2022-09-03 15:43:16 +00:00
String title;
double? position;
late final DateTime created, updated;
User createdBy;
2022-07-15 14:25:16 +00:00
bool isDoneBucket;
2022-09-03 15:43:16 +00:00
late final List<Task> tasks;
2022-07-15 14:25:16 +00:00
Bucket({
2022-09-03 15:43:16 +00:00
this.id = -1,
2022-08-27 21:04:43 +00:00
required this.listId,
2022-09-03 15:43:16 +00:00
required this.title,
this.position,
2022-08-27 21:04:43 +00:00
required this.limit,
this.isDoneBucket = false,
2022-09-03 15:43:16 +00:00
DateTime? created,
DateTime? updated,
required this.createdBy,
List<Task>? tasks,
}) {
this.created = created ?? DateTime.now();
this.updated = created ?? DateTime.now();
this.tasks = tasks ?? [];
}
2022-08-27 21:04:43 +00:00
2022-07-15 14:25:16 +00:00
Bucket.fromJSON(Map<String, dynamic> json)
2022-09-03 15:43:16 +00:00
: id = json['id'],
listId = json['list_id'],
title = json['title'],
position = json['position'] is int
? json['position'].toDouble()
: json['position'],
limit = json['limit'],
isDoneBucket = json['is_done_bucket'],
created = DateTime.parse(json['created']),
updated = DateTime.parse(json['updated']),
createdBy = User.fromJson(json['created_by']),
tasks = json['tasks'] == null
? []
: (json['tasks'] as List<dynamic>)
.map((task) => Task.fromJson(task))
.toList();
2022-07-15 14:25:16 +00:00
toJSON() => {
2022-09-03 15:43:16 +00:00
'id': id != -1 ? id : null,
2022-07-15 14:25:16 +00:00
'list_id': listId,
'title': title,
'position': position,
'limit': limit,
'is_done_bucket': isDoneBucket,
2022-09-03 15:43:16 +00:00
'created': created.toUtc().toIso8601String(),
'updated': updated.toUtc().toIso8601String(),
'created_by': createdBy.toJSON(),
'tasks': tasks.map((task) => task.toJSON()).toList(),
2022-07-15 14:25:16 +00:00
};
}