1
0
mirror of https://github.com/go-vikunja/app synced 2024-06-02 18:49:47 +00:00
app-mirror-github/lib/service/services.dart

130 lines
4.4 KiB
Dart
Raw Normal View History

import 'dart:async';
import 'dart:developer';
2021-06-04 09:34:25 +00:00
import 'package:vikunja_app/api/response.dart';
import 'package:vikunja_app/models/label.dart';
import 'package:vikunja_app/models/labelTask.dart';
2019-03-11 20:29:15 +00:00
import 'package:vikunja_app/models/list.dart';
2018-09-22 20:56:16 +00:00
import 'package:vikunja_app/models/namespace.dart';
import 'package:vikunja_app/models/task.dart';
import 'package:vikunja_app/models/user.dart';
2022-04-15 18:14:04 +00:00
enum TaskServiceOptionSortBy {id, title, description, done, done_at, due_date, created_by_id, list_id, repeat_after, priority, start_date, end_date, hex_color, percent_done, uid, created, updated}
enum TaskServiceOptionOrderBy {asc,desc}
enum TaskServiceOptionFilterBy {done, due_date}
2022-04-15 18:14:04 +00:00
enum TaskServiceOptionFilterValue {enum_true,enum_false}
enum TaskServiceOptionFilterComparator {equals, greater, greater_equals, less, less_equals, like, enum_in}
enum TaskServiceOptionFilterConcat {and, or}
2022-04-15 18:14:04 +00:00
class TaskServiceOption<T> {
String name;
dynamic value;
dynamic defValue;
TaskServiceOption(
this.name,
this.value
);
String handleValue(dynamic input) {
if(input is String)
return input;
return input.toString().split('.').last.replaceAll('enum_', '');
}
dynamic getValue() {
if(value is List)
return value.map((elem) => handleValue(elem)).toList();
else
return handleValue(value);
2022-04-15 18:14:04 +00:00
}
}
class TaskServiceOptions {
List<TaskServiceOption> options = [
TaskServiceOption<TaskServiceOptionSortBy>("sort_by",[TaskServiceOptionSortBy.due_date, TaskServiceOptionSortBy.id]),
TaskServiceOption<TaskServiceOptionOrderBy>("order_by", TaskServiceOptionOrderBy.asc),
TaskServiceOption<TaskServiceOptionFilterBy>("filter_by", [TaskServiceOptionFilterBy.done, TaskServiceOptionFilterBy.due_date]),
TaskServiceOption<TaskServiceOptionFilterValue>("filter_value", [TaskServiceOptionFilterValue.enum_false, '0001-01-02T00:00:00.000Z']),
TaskServiceOption<TaskServiceOptionFilterComparator>("filter_comparator", [TaskServiceOptionFilterComparator.equals,TaskServiceOptionFilterComparator.greater]),
TaskServiceOption<TaskServiceOptionFilterConcat>("filter_concat", TaskServiceOptionFilterConcat.and),
2022-04-15 18:14:04 +00:00
];
void setOption(TaskServiceOption option, dynamic value) {
options.firstWhere((element) => element.name == option.name).value = value;
}
String getOptions() {
String result = '';
for(TaskServiceOption option in options) {
dynamic value = option.getValue();
if (value is List) {
for (dynamic value_entry in value) {
result += '&' + option.name + '[]=' + value_entry;
}
} else {
result += '&' + option.name + '=' + value;
}
2022-04-15 18:14:04 +00:00
}
if(result.startsWith('&'))
result.substring(1);
2022-04-15 18:14:04 +00:00
return result;
}
}
abstract class NamespaceService {
Future<List<Namespace>> getAll();
Future<Namespace> get(int namespaceId);
Future<Namespace> create(Namespace ns);
Future<Namespace> update(Namespace ns);
Future delete(int namespaceId);
}
abstract class ListService {
Future<List<TaskList>> getAll();
Future<TaskList> get(int listId);
Future<List<TaskList>> getByNamespace(int namespaceId);
Future<TaskList> create(int namespaceId, TaskList tl);
Future<TaskList> update(TaskList tl);
Future delete(int listId);
Future<String> getDisplayDoneTasks(int listId);
void setDisplayDoneTasks(int listId, String value);
2022-04-12 22:32:21 +00:00
Future<String> getDefaultList();
void setDefaultList(int listId);
}
abstract class TaskService {
Future<Response> get(int taskId);
Future<Task> update(Task task);
Future delete(int taskId);
Future<Task> add(int listId, Task task);
Future<List<Task>> getAll();
Future<Response> getAllByList(int listId,
2021-06-04 09:34:25 +00:00
[Map<String, List<String>> queryParameters]);
2022-04-15 18:14:04 +00:00
Future<List<Task>> getByOptions(TaskServiceOptions options);
2021-06-04 09:34:25 +00:00
int get maxPages;
}
abstract class UserService {
Future<UserTokenPair> login(String username, password);
2018-10-08 14:26:01 +00:00
Future<UserTokenPair> register(String username, email, password);
2018-09-17 13:35:57 +00:00
Future<User> getCurrentUser();
2018-09-16 19:47:53 +00:00
}
2021-06-04 09:34:25 +00:00
abstract class LabelService {
Future<List<Label>> getAll({String query});
Future<Label> get(int labelID);
Future<Label> create(Label label);
Future<Label> delete(Label label);
Future<Label> update(Label label);
}
abstract class LabelTaskService {
Future<List<Label>> getAll(LabelTask lt, {String query});
Future<Label> create(LabelTask lt);
Future<Label> delete(LabelTask lt);
}
abstract class LabelTaskBulkService {
Future<List<Label>> update(Task task, List<Label> labels);
}