added basic project classes

This commit is contained in:
Benimautner 2023-07-22 22:54:04 +02:00
parent 2a7a8755af
commit 16fa80f8df
4 changed files with 93 additions and 1 deletions

41
lib/api/project.dart Normal file
View File

@ -0,0 +1,41 @@
import 'package:vikunja_app/api/service.dart';
import 'package:vikunja_app/models/project.dart';
import 'package:vikunja_app/service/services.dart';
class ProjectAPIService extends APIService implements ProjectService {
ProjectAPIService(super.client);
@override
Future<Project?> create(Project p) {
// TODO: implement create
throw UnimplementedError();
}
@override
Future delete(int projectId) {
// TODO: implement delete
throw UnimplementedError();
}
@override
Future<Project?> get(int projectId) {
// TODO: implement get
throw UnimplementedError();
}
@override
Future<List<Project>?> getAll() {
// TODO: implement getAll
return client.get('/projects').then((response) {
if (response == null) return null;
return convertList(response.body, (result) => Project.fromJson(result));
});
}
@override
Future<Project?> update(int projectId) {
// TODO: implement update
throw UnimplementedError();
}
}

40
lib/models/project.dart Normal file
View File

@ -0,0 +1,40 @@
import 'package:vikunja_app/models/user.dart';
class Project {
final int id;
final User? owner;
final int parentProjectId;
final String description;
final String title;
final DateTime created, updated;
Project(
{this.id = 0,
this.owner,
this.parentProjectId = 0,
this.description = '',
required this.title,
created,
updated}) :
this.created = created ?? DateTime.now(),
this.updated = updated ?? DateTime.now();
Project.fromJson(Map<String, dynamic> json)
: title = json['title'],
description = json['description'],
id = json['id'],
parentProjectId = json['parent_project_id'],
created = DateTime.parse(json['created']),
updated = DateTime.parse(json['updated']),
owner = json['owner'] != null ? User.fromJson(json['owner']) : null;
Map<String, dynamic> toJSON() => {
'id': id,
'created': created.toUtc().toIso8601String(),
'updated': updated.toUtc().toIso8601String(),
'title': title,
'owner': owner?.toJSON(),
'description': description,
'parent_project_id': parentProjectId
};
}

View File

@ -46,7 +46,7 @@ var _tasks = {
created: DateTime.now(),
description: 'A descriptive task',
done: false,
listId: 1,
projectId: 1,
)
};

View File

@ -12,6 +12,7 @@ import 'package:vikunja_app/models/task.dart';
import 'package:vikunja_app/models/user.dart';
import 'package:vikunja_app/models/bucket.dart';
import '../models/project.dart';
import '../models/server.dart';
enum TaskServiceOptionSortBy {
@ -128,6 +129,16 @@ class TaskServiceOptions {
}
}
abstract class ProjectService {
Future<List<Project>?> getAll();
Future<Project?> get(int projectId);
Future<Project?> create(Project p);
Future<Project?> update(int projectId);
Future delete(int projectId);
}
abstract class NamespaceService {
Future<List<Namespace>?> getAll();