Related Project added to TaskType
This commit is contained in:
@@ -198,7 +198,7 @@ void onCacheDatabaseCreate(Database db, int newVersion) async {
|
||||
await db.execute(CategoriesTableSQL);
|
||||
print("Initiated Categories Table");
|
||||
|
||||
String TaskTableSQL = 'CREATE TABLE TaskTypes(id TEXT PRIMARY KEY, ${TaskType.colName} TEXT, ${TaskType.colCategory} TEXT, '
|
||||
String TaskTableSQL = 'CREATE TABLE TaskTypes(id TEXT PRIMARY KEY, ${TaskType.colName} TEXT, ${TaskType.colCategory} TEXT, ${TaskType.colRelatedProject} TEXT, '
|
||||
'FOREIGN KEY (${TaskType.colCategory}) REFERENCES Categories(${Category.colCatId}))';
|
||||
// print(TaskTableSQL);
|
||||
await db.execute(TaskTableSQL);
|
||||
@@ -376,14 +376,21 @@ Future<List<TaskType>> GetTaskTypes(bool forceOffline) async {
|
||||
String? id = element[TaskType.colId].toString();
|
||||
String? name = element[TaskType.colName].toString();
|
||||
String? category = element[TaskType.colCategory].toString();
|
||||
String? related_project = element[TaskType.colRelatedProject].toString();
|
||||
Category? cat = await getCatFromId(category);
|
||||
if (id == null || name == null || category == null) {
|
||||
print("Something is null!");
|
||||
print("name:{$name}, cat:{$category}, prod:{$id}");
|
||||
continue;
|
||||
}
|
||||
Project? relatedProject;
|
||||
if(related_project.isNotEmpty){
|
||||
relatedProject = await getProjectFromId(related_project);
|
||||
print('got a tasktype with project');
|
||||
}
|
||||
|
||||
// print("name:{$name}, cat:{$category}, prod:{$id}");
|
||||
_taskTypes.add(TaskType(id, name, category, cat));
|
||||
_taskTypes.add(TaskType(id, name, category, cat:cat, relatedProject: relatedProject));
|
||||
}
|
||||
taskTypes = _taskTypes;
|
||||
} else {
|
||||
@@ -399,7 +406,7 @@ Future<List<TaskType>> GetTaskTypes(bool forceOffline) async {
|
||||
for (var value in data) {
|
||||
Map<String, dynamic> data = jsonDecode(value);
|
||||
Category? cat = await getCatFromId(data['category_id']);
|
||||
_taskTypes.add(TaskType(data['task_id'], data['name'], data['category_id'], cat));
|
||||
_taskTypes.add(TaskType(data['task_id'], data['name'], data['category_id'], cat:cat,relatedProject: data['related_project']));
|
||||
//print(cat);
|
||||
}
|
||||
}catch(e){
|
||||
@@ -424,8 +431,8 @@ Future<void> UpdateTaskTypesFromServer() async {
|
||||
for (var value in data) {
|
||||
Map<String, dynamic> cat = jsonDecode(value);
|
||||
//print(cat);
|
||||
await cacheDb.rawInsert("INSERT OR REPLACE INTO TaskTypes (${TaskType.colId},${TaskType.colName},${TaskType.colCategory}) "
|
||||
"VALUES ('${cat['task_id']}','${cat['name']}','${cat['category_id']}') ");
|
||||
await cacheDb.rawInsert("INSERT OR REPLACE INTO TaskTypes (${TaskType.colId},${TaskType.colName},${TaskType.colCategory},${TaskType.colRelatedProject}) "
|
||||
"VALUES ('${cat['task_id']}','${cat['name']}','${cat['category_id']}', '${cat['related_project']}') ");
|
||||
|
||||
print(await cacheDb.query("TaskTypes"));
|
||||
}
|
||||
@@ -648,8 +655,10 @@ Future<List<Project>> GetProjects(bool forceOffline) async {
|
||||
String? category = element[Project.colCat];
|
||||
String? stepsJson = element[Project.colSteps];
|
||||
String? deadline = element[Project.colDeadline];
|
||||
int? eta= element[Project.colEta];
|
||||
|
||||
if (name == null || category == null || stepsJson == null || deadline == null) {
|
||||
|
||||
if (name == null || category == null || stepsJson == null || deadline == null || eta==null) {
|
||||
print("Something is null!\nname:${name == null}, cat:${category == null}, steps:${stepsJson == null}, deadline${deadline == null}");
|
||||
print("TaskType:{$name}, Start Time:{$category}, endTime:{$stepsJson}, metadata:${deadline}");
|
||||
continue;
|
||||
@@ -659,13 +668,14 @@ Future<List<Project>> GetProjects(bool forceOffline) async {
|
||||
print('steps : $stepsJson');
|
||||
List<dynamic> _steps = jsonDecode(stepsJson);
|
||||
List<ProjectStep> steps = [];
|
||||
int eta = 0;
|
||||
int m_eta = 0;
|
||||
_steps.forEach((element) {
|
||||
ProjectStep step = ProjectStep.fromJson(element);
|
||||
eta+=step.eta;
|
||||
m_eta += step.eta;
|
||||
steps.add(step);
|
||||
print(element);
|
||||
});
|
||||
eta = (m_eta > 0) ? m_eta : eta;
|
||||
// print(steps);
|
||||
|
||||
_projects.add(Project(name.replaceAll(username, ""),category,steps,eta,DateTime.parse(deadline),cat: cat));
|
||||
@@ -728,8 +738,8 @@ Future<void> UpdateProjectsFromServer() async {
|
||||
print('project data');
|
||||
print(cat);
|
||||
await cacheDb.rawInsert(
|
||||
"INSERT OR REPLACE INTO Projects (${Project.colName}, ${Project.colCat}, ${Project.colSteps}, ${Project.colDeadline}) "
|
||||
"VALUES ('${cat['name']}', '${cat['category']}', '${cat['steps']}', '${cat['deadline']}')");
|
||||
"INSERT OR REPLACE INTO Projects (${Project.colName}, ${Project.colCat}, ${Project.colSteps}, ${Project.colDeadline}, ${Project.colEta}) "
|
||||
"VALUES ('${cat['name']}', '${cat['category']}', '${cat['steps']}', '${cat['deadline']}', ${cat['eta']})");
|
||||
}
|
||||
} else {
|
||||
print("No activities for now");
|
||||
@@ -768,6 +778,21 @@ Future<Category?> getCatFromId(String catId) async {
|
||||
return cat;
|
||||
}
|
||||
|
||||
Future<Project?> getProjectFromId(String projectId) async {
|
||||
// await GetTaskTypes(false);
|
||||
Project? project = null;
|
||||
for (var element in projects) {
|
||||
if (element.getName() ==projectId.replaceAll(username, "")) {
|
||||
project = element;
|
||||
}
|
||||
}
|
||||
if (project == null) {
|
||||
print('Got null project for ${projectId} after searching on ${projects.length}');
|
||||
}
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
//Helpers
|
||||
class Helpers {
|
||||
Future<String?> _getId() async {
|
||||
@@ -833,13 +858,14 @@ class UserOperations {
|
||||
}
|
||||
}
|
||||
|
||||
static Future<void> addTaskType(String name, String category, {bool bulk = false}) async {
|
||||
static Future<void> addTaskType(String name, String category, {bool bulk = false, String? relatedProject = null}) async {
|
||||
Map<String, String> queryBody = <String, String>{
|
||||
'id': username + name,
|
||||
'username': username,
|
||||
'device_id': await Settings.UUID(),
|
||||
'name': name,
|
||||
'category': username + category
|
||||
'category': username + category,
|
||||
'related_project' :(relatedProject==null) ? '' : (username + relatedProject)
|
||||
};
|
||||
|
||||
if (cacheEnabled) {
|
||||
@@ -851,7 +877,8 @@ class UserOperations {
|
||||
await cacheDb.insert('Queries', query);
|
||||
|
||||
//update Cache
|
||||
Map<String, Object> data = {TaskType.colId: username + name, Category.colName: name, Category.colCatId: username + category};
|
||||
Map<String, Object> data = {TaskType.colId: username + name, Category.colName: name, Category.colCatId: username + category,};
|
||||
if(relatedProject!=null || relatedProject =='None'){data.putIfAbsent(TaskType.colRelatedProject, () => relatedProject.toString());}
|
||||
await cacheDb.insert('TaskTypes', data);
|
||||
await refreshUserData(forceOffline: true);
|
||||
} else {
|
||||
@@ -1057,7 +1084,7 @@ class UserOperations {
|
||||
await cacheDb.insert('Queries', query);
|
||||
|
||||
//update Cache
|
||||
Map<String, Object> data = {Project.colName: username+name, Project.colCat: category, Project.colSteps: jsonEncode(steps), Project.colDeadline: deadline.toString()};
|
||||
Map<String, Object> data = {Project.colName: username+name, Project.colCat: category, Project.colSteps: jsonEncode(steps),Project.colEta: eta, Project.colDeadline: deadline.toString()};
|
||||
await cacheDb.insert('Projects', data);
|
||||
await refreshUserData(forceOffline: true);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user