diff --git a/lib/DebugHelper.dart b/lib/DebugHelper.dart new file mode 100644 index 0000000..43d4dbd --- /dev/null +++ b/lib/DebugHelper.dart @@ -0,0 +1,23 @@ +class Debug{ + static bool enableLogging = true; + static bool enableResponseLogging = true; + static bool enableErrorLoggin = true; + + static void LogResponse(Object? response, {Object src= ''}){ + if(!enableLogging){return;} + if(!enableResponseLogging) {return;} + print('\x1B[32m$src response\n$response\x1B[0m'); + } + + static void LogError(Object? msg){ + if(!enableLogging){return;} + if(!enableErrorLoggin) {return;} + print('\x1B[31m$msg\x1B[0m'); + } + + static void Log(Object? msg){ + if(!enableErrorLoggin) {return;} + print('\x1B[0m$msg'); + } + +} \ No newline at end of file diff --git a/lib/Dialogs.dart b/lib/Dialogs.dart index dd35b20..9e7d5d6 100644 --- a/lib/Dialogs.dart +++ b/lib/Dialogs.dart @@ -323,7 +323,7 @@ class Dialogs{ } } if(journalId < 0){return;} - String title= '${(User.journal[journalId].title!= null && User.journal[journalId].title!.isNotEmpty) ? User.journal[journalId].title : DateFormat('MMMM-dd').format(date)}'; + String title= (User.journal[journalId].title!= null && User.journal[journalId].title!.isNotEmpty) ? (User.journal[journalId].title! + ' (${(DateFormat('MMMM-dd').format(date))})') : DateFormat('MMMM-dd').format(date); String description = User.journal[journalId].description ?? ''; if(description.length > 60){ description = description.substring(0,60) + '...(click more for more)'; @@ -347,13 +347,13 @@ class Dialogs{ onPressed: (){ Navigator.of(context).pop(); }, - child: Text('No', style:TextStyle(color: Colors.red)), + child: Text('Back', style:TextStyle(color: Colors.red)), ), MaterialButton( onPressed: (){ Navigator.of(context).pop(); }, - child: Text('Yes', style:TextStyle(color: Colors.green)), + child: Text('More', style:TextStyle(color: Colors.green)), ) ], ); diff --git a/lib/NewTodo.dart b/lib/NewTodo.dart index 6fcff10..1561e1c 100644 --- a/lib/NewTodo.dart +++ b/lib/NewTodo.dart @@ -293,7 +293,7 @@ class _NewActivity extends State { return; } - await User.UserOperations.addTodo(selectedCat, metadataController.text, dueDate, notificationTime); + await User.UserOperations.addTodo(selectedCat,((selectedStep!=null && selectedStep != 'None') ? '[$selectedStep]' : '')+ metadataController.text, dueDate, notificationTime); Navigator.of(context).pop(); } diff --git a/lib/Todos.dart b/lib/Todos.dart index 60dc4be..d6e31d8 100644 --- a/lib/Todos.dart +++ b/lib/Todos.dart @@ -1,4 +1,5 @@ import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_colorpicker/flutter_colorpicker.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -7,6 +8,7 @@ import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:tasktracker/NewJournal.dart'; import 'package:tasktracker/NewTodo.dart'; import 'package:tasktracker/main.dart'; +import 'Data.dart'; import 'User.dart' as User; import 'Dialogs.dart'; @@ -19,7 +21,6 @@ class TodosPage extends StatefulWidget { class _TodosPageState extends State { bool selecting = false; - List selectedIndexes = []; int expandedIndex = -1; var refreshStream; @@ -42,8 +43,27 @@ class _TodosPageState extends State { refreshStream?.close(); } + Map> projects = >{}; + List simpleTodos = []; + List expandedProjects = []; + bool expandedSimpleTodos = false; + List selectedProjects = []; @override Widget build(BuildContext context) { + projects = >{}; + simpleTodos = []; + for (var todo in User.todos) { + if (todo.task!.relatedProject != null) { + String projectName = todo.task!.relatedProject!.name; + if (projects.containsKey(projectName)) { + projects[projectName]!.add(todo); + } else { + projects.putIfAbsent(projectName, () => [todo]); + } + }else{ + simpleTodos.add(todo); + } + } return Scaffold( floatingActionButton: FloatingActionButton.extended( onPressed: () { @@ -68,13 +88,11 @@ class _TodosPageState extends State { ), Row( children: [ - if (selecting && selectedIndexes.length > 0) + if (selecting && selectedProjects.length > 0) InkWell( - onTap: () async { + onTap: () { selecting = false; - for (int element in selectedIndexes) { - await User.UserOperations.deleteJournal(User.todos[element].id); - } + deleteTodos(); setState(() {}); }, child: Container(margin: EdgeInsets.all(8), child: Icon(Icons.delete))), @@ -100,179 +118,289 @@ class _TodosPageState extends State { ), ), drawer: navDrawer(context, 9), - body: Container( - padding: EdgeInsets.all(8), - child: ScrollablePositionedList.builder( - itemCount: User.todos.length, - itemBuilder: (context, index) { - int maxCharCount = 100; - bool containsStepData = User.todos[index].metadata.contains('[') && User.todos[index].metadata.contains(']'); - return Container( - child: InkWell( - onTap: () { - if (selecting) { - if (selectedIndexes.contains(index)) { - selectedIndexes.remove(index); - } else { - selectedIndexes.add(index); - } - setState(() {}); - } else { - if (expandedIndex == index) { - expandedIndex = -1; - //_controller..reverse(from: 0.5); - } else { - expandedIndex = index; - // _controller..forward(from: 0); - } - setState(() {}); - } - }, - onLongPress: () { - selecting = !selecting; - if (!selectedIndexes.contains(index)) { - selectedIndexes.add(index); - } - setState(() {}); - }, - child: Row( - children: [ - if (selecting) - Checkbox( - value: selectedIndexes.contains(index), - onChanged: (newVal) { - if (selectedIndexes.contains(index)) { - selectedIndexes.remove(index); - } else { - selectedIndexes.add(index); - } - setState(() {}); - }, - ), - Expanded( - child: Column( - children: [ - Card( + body: SingleChildScrollView( + // margin: EdgeInsets.fromLTRB(2, 10, 0, 10), + child: Column( + children: [ + Container( + margin: EdgeInsets.all(8), + padding: EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration(color: Colors.black26, borderRadius: BorderRadius.circular(10)), + child: (projects.length <=0) ?Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text('No Todos Related to Projects'), + ], + ) :ScrollablePositionedList.builder( + shrinkWrap: true, + itemCount: projects.length, + itemBuilder: (context, i) { + String thisProject= projects.keys.toList()[i]; + return Container( + margin: EdgeInsets.symmetric(horizontal: 0,vertical: 8), + child: Column( + children: [ + InkWell( + onTap: (){ + if(expandedProjects.contains(thisProject)){ + expandedProjects.remove(thisProject); + }else{ + expandedProjects.add(thisProject); - // color: color, - elevation: 30, - shadowColor: colorFromHex(User.todos[index].task!.cat!.color), - child: InkWell( - onTap: () { - //Open Respective Category - if (selecting) { - //OnItemSelected(activity); - } - setState(() {}); - }, - onLongPress: () { - print('gonna delete'); - selecting = !selecting; - // selectedActivities = [activity]; - setState(() {}); - }, - child: Container( - padding: EdgeInsets.all(15), - child: Column( - children: [ - Row(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ - Text(User.todos[index].task!.name, style: TextStyle(fontSize: 17)), - Row(mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: [ - Icon( - Icons.arrow_forward_outlined, - size: 20, - ), - SizedBox( - width: MediaQuery.of(context).size.width / 3, - child: Text( - (containsStepData) - ? User.todos[index].metadata.substring(User.todos[index].metadata!.indexOf(']') + 1) - : (User.todos[index].metadata ?? ''), - ), - ), - ]), - // Icon(Icons.analytics, color: color, size: 20,), - ]), - SizedBox( - height: 5, - ), - Row(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Container( - padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2), - decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.blue), - child: Text(DateFormat('yyyy-MM-dd').format(User.todos[index].dueDate))), - SizedBox( - width: 20, - ), - Row( - children: [ - (User.todos[index].task!.relatedProject != null) - ? Row( - children: [ - if (containsStepData) - Container( - padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2), - decoration: - BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.black26), - child: Text(User.todos[index].metadata! - .substring(1, User.todos[index].metadata!.indexOf(']')) ?? - 'n/a')), - SizedBox( - width: 8, - ), - Container( - padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2), - decoration: - BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.black26), - child: Text(User.todos[index].task!.relatedProject!.name ?? 'n/a')), - ], - ) - : Container(), - SizedBox( - width: 10, - ), - Container( - padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: (User.todos[index].task!.cat!.productive) ? Colors.green : Colors.red), - child: Text(User.todos[index].task!.cat?.name ?? 'n/a')), - ], - ) - // Icon(Icons.circle, - // color: (productive) - // ? Colors.green - // : Colors.red) - ]) - ], - )))), - Container( - margin: EdgeInsets.fromLTRB(15, 0, 15, 10), - height: 2, - child: Row( - children: [ - Expanded(flex: 100, child: Container(color: colorFromHex(User.todos[index].task!.cat!.color))), - Expanded(flex: 0, child: Container()) - ], - )), - ], - ), - ), - if (selecting) - InkWell( - onTap: () { - // Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewJournal(date: User.todos[index].day, title: User.todos[index].title, text: User.todos[index].description,))).then((val) { - // setState(() {}); - // }); - selecting = false; - setState(() {}); + } + setState(() { + + }); }, - child: Container(margin: EdgeInsets.all(8), child: FaIcon(FontAwesomeIcons.edit))) - ], - ), - )); - }), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Icon((!expandedProjects.contains(thisProject)) ? Icons.keyboard_arrow_right_outlined : Icons.keyboard_arrow_down_outlined), + Text('${projects.keys.toList()[i]} (${projects.values.toList()[i].length})',style: TextStyle(fontSize: 18)), + ], + ), + Container(), + ], + ), + ), + if(expandedProjects.contains(thisProject))Container( + padding: EdgeInsets.fromLTRB(8, 0, 8, 0), + child: ScrollablePositionedList.builder( + shrinkWrap: true, + itemCount: projects.values.toList()[i].length, + itemBuilder: (context, index) { + int maxCharCount = 100; + Todo todo = projects.values.toList()[i][index]; + + print('$i : $index'); + return todoCard(todo); + }), + ), + ], + ), + ); + } + ), + ), + Container( + margin: EdgeInsets.all(8), + padding: EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration(color: Colors.black26, borderRadius: BorderRadius.circular(15)), + child: Column( + children: [ + InkWell( + onTap: (){expandedSimpleTodos=!expandedSimpleTodos;setState(() { + + });}, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Icon((!expandedSimpleTodos) ? Icons.keyboard_arrow_right_outlined : Icons.keyboard_arrow_down_outlined), + Text('Typical Todos (${simpleTodos.length})',style: TextStyle(fontSize: 18)), + ], + ), + Container(), + ], + ), + ), + if(expandedSimpleTodos)Container( + padding: EdgeInsets.fromLTRB(8, 0, 8, 0), + child: ScrollablePositionedList.builder( + shrinkWrap: true, + itemCount: simpleTodos.length, + itemBuilder: (context, index) { + int maxCharCount = 100; + Todo todo = simpleTodos[index]; + return todoCard(todo); + }), + ), + ], + ), + ), + ], + ), ), ); } + + Widget todoCard(Todo todo){ + + bool containsStepData = todo.metadata.contains('[') && todo.metadata.contains(']'); + + return Container( + child: InkWell( + child: Row( + children: [ + if (selecting) + Checkbox( + value: selectedProjects.contains(todo.id), + onChanged: (newVal) { + if (selectedProjects.contains(todo.id)) { + selectedProjects.remove(todo.id); + } else { + selectedProjects.add(todo.id); + } + setState(() {}); + }, + ), + Expanded( + child: Column( + children: [ + Card( + + // color: color, + elevation: 30, + shadowColor: colorFromHex(todo.task!.cat!.color), + child: InkWell( + onTap: () { + //Open Respective Category + if (selecting) { + if (selectedProjects.contains(todo.id)) { + selectedProjects.remove(todo.id); + } else { + selectedProjects.add(todo.id); + } + setState(() {}); + } else { + + setState(() {}); + } + }, + onLongPress: () { + print('gonna delete'); + selecting = !selecting; + selectedProjects=[]; + // selectedActivities = [activity]; + setState(() {}); + }, + child: Container( + padding: EdgeInsets.all(15), + child: Column( + children: [ + Row(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ + Text(todo.task!.name, style: TextStyle(fontSize: 17)), + Row(mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: [ + Icon( + Icons.arrow_forward_outlined, + size: 20, + ), + SizedBox( + width: MediaQuery.of(context).size.width / 3, + child: Text( + (containsStepData) + ? todo.metadata.substring(todo.metadata!.indexOf(']') + 1) + : (todo.metadata ?? ''), + ), + ), + ]), + // Icon(Icons.analytics, color: color, size: 20,), + ]), + SizedBox( + height: 5, + ), + Row(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ + Container( + padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.blue), + child: Text(DateFormat('yyyy-MM-dd').format(todo.dueDate))), + SizedBox( + width: 20, + ), + Row( + children: [ + (todo.task!.relatedProject != null) + ? Row( + children: [ + if (containsStepData) + Container( + padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2), + decoration: + BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.black26), + child: Text(todo.metadata! + .substring(1, todo.metadata!.indexOf(']')) ?? + 'n/a')), + SizedBox( + width: 8, + ), + Container( + padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.black26), + child: Text(todo.task!.relatedProject!.name ?? 'n/a')), + ], + ) + : Container(), + SizedBox( + width: 10, + ), + Container( + padding: EdgeInsets.symmetric(horizontal: 10, vertical: 2), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: (todo.task!.cat!.productive) ? Colors.green : Colors.red), + child: Text(todo.task!.cat?.name ?? 'n/a')), + ], + ) + // Icon(Icons.circle, + // color: (productive) + // ? Colors.green + // : Colors.red) + ]) + ], + )))), + Container( + margin: EdgeInsets.fromLTRB(15, 0, 15, 10), + height: 2, + child: Row( + children: [ + Expanded(flex: 100, child: Container(color: colorFromHex(todo.task!.cat!.color))), + Expanded(flex: 0, child: Container()) + ], + )), + ], + ), + ), + if (selecting) + InkWell( + onTap: () { + // Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewJournal(date: todo.day, title: todo.title, text: todo.description,))).then((val) { + // setState(() {}); + // }); + selecting = false; + setState(() {}); + }, + child: Container(margin: EdgeInsets.all(8), child: FaIcon(FontAwesomeIcons.edit))) + ], + ), + )); + } + + + void deleteTodos() async{ + if(selectedProjects.length > 0){ + User.todos.forEach((list) { + selectedProjects.forEach((selected) { + if(list.id == selected){ + User.UserOperations.deleteTodo(selected,bulk: true); + } + }); + }); + + await User.UserOperations.executeQueries(); + + }else{ + Dialogs.showAlertDialog(context, 'Non-Selected', 'Select some tasks to delete, This message should not be shown btw'); + } + } + + // List todos() { + // List _todos = []; + // for (int i = 0; i < projects.length; i++) { + // _todos.add(; + // } + // return _todos; + // } } diff --git a/lib/User.dart b/lib/User.dart index 0529145..9466425 100644 --- a/lib/User.dart +++ b/lib/User.dart @@ -6,6 +6,7 @@ import 'package:intl/intl.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:tasktracker/NewProject.dart'; import 'package:tasktracker/NotificationsManager.dart'; +import 'DebugHelper.dart'; import 'main.dart'; import 'package:http/http.dart' as http; import 'dart:convert'; @@ -48,13 +49,13 @@ Future login(String _username, String password) async { username = _username; registered = loginResponse.body.toLowerCase().contains("register"); - print("registered : $registered"); + Debug.Log("registered : $registered"); if (registered) { prefs.setBool("registered", true); } } } catch (e) { - print("Error while login $e"); + Debug.LogError("Error while login $e"); } return loginResponse; } @@ -66,7 +67,7 @@ Future initUserData() async { await refreshUserData(); BuildBridgeToServer(); - print('Initializing UserData...'); + Debug.Log('Initializing UserData...'); if (cacheEnabled) { // if (Platform.isAndroid || Platform.isIOS) { @@ -90,9 +91,9 @@ Future BuildBridgeToServer() async { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/bridge.php'), body: {"username": username})); - print("bridge retreive (try): ${response.body}"); + Debug.LogResponse("${response.body}",src: 'bridge'); List data = response.body.split(","); - print('Update :\nactivities_rev=${data[0]} tasks_rev=${data[1]} cats_rev=${data[2]} projects_rev=${data[3]}'); + Debug.LogResponse('Update :\nactivities_rev=${data[0]} tasks_rev=${data[1]} cats_rev=${data[2]} projects_rev=${data[3]}'); if (data[4].contains('')) { List ongoingData = data[4].split(""); @@ -105,9 +106,9 @@ Future BuildBridgeToServer() async { if (prefs.containsKey('rev')) { if (prefs.getString('rev') == response.body) { - print('We are on the same page'); + Debug.Log('We are on the same page'); } else { - print('Gotta update'); + Debug.Log('Gotta update'); await refreshUserData(); prefs.setString('rev', response.body); } @@ -116,7 +117,7 @@ Future BuildBridgeToServer() async { await refreshUserData(); } } catch (e) { - print("Error with bridge : $e"); + Debug.LogError("Error with bridge : $e"); } await Future.delayed(Duration(seconds: 5)); } @@ -124,9 +125,9 @@ Future BuildBridgeToServer() async { bool m_refreshing = false; Future refreshUserData({bool forceOffline = false}) async { - print('refreshing user data'); + Debug.Log('refreshing user data'); if (m_refreshing) { - print('Called while refreshing. Return'); + Debug.LogError('Called while refreshing. Return'); return; } m_refreshing = true; @@ -184,7 +185,7 @@ Future updateProjectsList() async { Future initCacheDatabase() async { Directory directory = await getApplicationDocumentsDirectory(); - print('database at ' + directory.path + 'cache.db'); + Debug.LogResponse('database at ' + directory.path + '/cache.db'); if (Platform.isAndroid || Platform.isIOS) { cacheDb = await openDatabase(directory.path + 'cache.db', version: 1, onCreate: onCacheDatabaseCreate, onUpgrade: onCacheDatabaseUpgrade); } else { @@ -197,20 +198,20 @@ Future initCacheDatabase() async { void onCacheDatabaseCreate(Database db, int newVersion) async { String CategoriesTableSQL = 'CREATE TABLE Categories(${Category.colCatId} VARCHAR(255) PRIMARY KEY,${Category.colName} TEXT, ${Category.colColor} TEXT, ${Category.colProductive} INTEGER)'; -// print(CategoriesTableSQL); +// Debug.Log(CategoriesTableSQL); await db.execute(CategoriesTableSQL); - print("Initiated Categories Table"); + Debug.Log("Initiated Categories Table"); 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); + // Debug.Log(TaskTableSQL); await db.execute(TaskTableSQL); String ActivityTableSQL = 'CREATE TABLE Activities(id INTEGER PRIMARY KEY AUTOINCREMENT, ${Activity.colType} INT, ${Activity.colStartTime} DATETIME, ${Activity.colEndTime} DATETIME, ${Activity.colMetadata} TEXT, ' 'FOREIGN KEY (${Activity.colType}) REFERENCES TaskTypes(id))'; - // print(ActivityTableSQL); + // Debug.Log(ActivityTableSQL); await db.execute(ActivityTableSQL); String ProjectsTableSQL = @@ -237,7 +238,7 @@ void onCacheDatabaseCreate(Database db, int newVersion) async { Future addInitialDataToCache() async { Dialogs.syncingMessage = "Adding initial data"; - print("adding init data"); + Debug.Log("adding init data"); await Future.delayed(const Duration(seconds: 1)); //Insert Initial Entries @@ -260,7 +261,7 @@ Future addInitialDataToCache() async { void onCacheDatabaseUpgrade(Database db, int oldVersion, int newVersion) async { //ValidateCacheDB(); - print('Upgrading CacheDB from ver.$oldVersion to ver.$newVersion'); + Debug.LogResponse('Upgrading CacheDB from ver.$oldVersion to ver.$newVersion'); } Future> GetCategories(bool forceOffline) async { @@ -281,10 +282,10 @@ Future> GetCategories(bool forceOffline) async { // final data = update_response.body.split(','); // catsUpdated = data[0] == '1'; // } catch (e) { - // print(e); + // Debug.Log(e); // } - print("Need to update : ${!catsUpdated}"); + Debug.Log("Need to update : ${!catsUpdated}"); //Update CacheDB if (!catsUpdated) { @@ -293,60 +294,59 @@ Future> GetCategories(bool forceOffline) async { } List cats = await cacheDb.query('Categories'); - print(cats.length); + Debug.Log('categories :${cats.length}'); for (Map element in cats) { String? catName = element[Category.colName].toString(); String? catColor = element[Category.colColor].toString(); String? catProductive = element[Category.colProductive].toString(); if (catName == null || catColor == null || catProductive == null) { - print("Something is null!"); - print("name:{$catName}, color:{$catColor}, prod:{$Category.colProductive}"); + Debug.LogError("Something is null!"); + Debug.LogError("name:{$catName}, color:{$catColor}, prod:{$Category.colProductive}"); continue; } - // print("name:{$catName}, color:{$catColor}, prod:{$catProductive}"); + // Debug.Log("name:{$catName}, color:{$catColor}, prod:{$catProductive}"); _categories.add(Category(username + catName, catName, catColor, ParseBool(catProductive))); } categories = _categories; } else { - print("NC: Updating Categories as $username"); + Debug.Log("NC: Updating Categories as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_categories.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print(response.body); + Debug.LogResponse(response.body,src:'get_categories'); List data = response.body.split(""); List _categories = []; for (var value in data) { Map cat = jsonDecode(value); - //print(catData); _categories.add(Category(cat['category_id'], cat['name'], cat['color'], ParseBool(cat['productive']))); } categories = _categories; } catch (e) { - print("Error while cats NC: $e"); + Debug.LogError("Error while cats NC: $e"); } } return categories; } Future UpdateCategoriesFromServer() async { - print("Updating Categories as $username"); + Debug.Log("Updating Categories as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_categories.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print(response.body); + Debug.LogResponse(response.body); List data = response.body.split(""); await cacheDb.delete("Categories"); for (var value in data) { Map cat = jsonDecode(value); - //print(catData); + //Debug.Log(catData); await cacheDb .rawInsert("INSERT OR REPLACE INTO Categories (${Category.colCatId},${Category.colName},${Category.colProductive},${Category.colColor}) " "VALUES ('${cat['category_id']}','${cat['name']}',${cat['productive']},'${cat['color']}') "); } } catch (e) { - print("Error while cats $e"); + Debug.LogError("Error while cats $e"); } } @@ -367,10 +367,10 @@ Future> GetTaskTypes(bool forceOffline) async { // final data = update_response.body.split(','); // updated = data[1] == '1'; // } catch (e) { - // print(e); + // Debug.Log(e); // } - print("Need to update : ${!updated}"); + Debug.Log("Need to update : ${!updated}"); //Update CacheDB if (!updated) { @@ -381,7 +381,7 @@ Future> GetTaskTypes(bool forceOffline) async { await Future.delayed(Duration(seconds: 1)); List cats = await cacheDb.query('TaskTypes'); - print(cats.length); + Debug.Log(cats.length); for (Map element in cats) { String? id = element[TaskType.colId].toString(); String? name = element[TaskType.colName].toString(); @@ -389,38 +389,38 @@ Future> GetTaskTypes(bool forceOffline) async { 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}"); + Debug.LogError("Something is null!"); + Debug.LogError("name:{$name}, cat:{$category}, prod:{$id}"); continue; } Project? relatedProject; if (related_project.isNotEmpty) { relatedProject = await getProjectFromId(related_project); - print('got a tasktype with project'); + Debug.Log('got a tasktype with project'); } - // print("name:{$name}, cat:{$category}, prod:{$id}"); + // Debug.Log("name:{$name}, cat:{$category}, prod:{$id}"); _taskTypes.add(TaskType(id, name, category, cat: cat, relatedProject: relatedProject)); } taskTypes = _taskTypes; } else { List _taskTypes = []; - print("NC: Updating TaskTypes as $username"); + Debug.Log("NC: Updating TaskTypes as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_taskTypes.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print("taskType retreive (try): ${response.body}"); + Debug.LogResponse("taskType retreive (try): ${response.body}"); List data = response.body.split(""); for (var value in data) { Map data = jsonDecode(value); Category? cat = await getCatFromId(data['category_id']); _taskTypes.add(TaskType(data['task_id'], data['name'], data['category_id'], cat: cat, relatedProject: data['related_project'])); - //print(cat); + //Debug.Log(cat); } } catch (e) { - print("Error while tasks NC $e"); + Debug.LogError("Error while tasks NC $e"); } taskTypes = _taskTypes; @@ -430,25 +430,25 @@ Future> GetTaskTypes(bool forceOffline) async { Future UpdateTaskTypesFromServer() async { // await GetCategories(true); - print("Updating TaskTypes as $username"); + Debug.Log("Updating TaskTypes as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_taskTypes.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print(response.body); + Debug.LogResponse(response.body); List data = response.body.split(""); await cacheDb.delete("TaskTypes"); for (var value in data) { Map cat = jsonDecode(value); - //print(cat); + //Debug.Log(cat); 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")); + Debug.LogResponse(await cacheDb.query("TaskTypes")); } } catch (e) { - print("Error while tasks $e"); + Debug.LogError("Error while tasks $e"); } } @@ -493,7 +493,7 @@ Future> GetActivities(bool forceOffline) async { List _activities = []; if (offline || forceOffline) { //Retreive from cacheDB - print('offline, refreshing activities'); + Debug.Log('offline, refreshing activities'); } else { //Check if server got updated, If not go for cache var android_id = await Settings.UUID(); @@ -505,10 +505,10 @@ Future> GetActivities(bool forceOffline) async { // final data = update_response.body.split(','); // updated = data[2] == '1'; // } catch (e) { - // print(e); + // Debug.Log(e); // } - print("Need to update activities : ${!updated}"); + Debug.Log("Need to update activities : ${!updated}"); //Update CacheDB if (!updated) { @@ -517,7 +517,7 @@ Future> GetActivities(bool forceOffline) async { } List cats = await cacheDb.rawQuery('SELECT * FROM Activities ORDER BY ${Activity.colStartTime} DESC'); - print(cats.length); + Debug.Log(cats.length); for (Map element in cats) { int? id = element['id']; String? type = element[Activity.colType].toString(); @@ -526,11 +526,11 @@ Future> GetActivities(bool forceOffline) async { String? metadata = element[Activity.colMetadata].toString(); TaskType? taskType = await getTaskFromId(type); if (type == null || startTime == null || endTime == null || taskType == null) { - print("Something is null!\ntype:${type == null}, startTime:${startTime == null}, eTime:${endTime == null}, taskType${taskType == null}"); - print("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}, metadata:${metadata}"); + Debug.LogError("Something is null!\ntype:${type == null}, startTime:${startTime == null}, eTime:${endTime == null}, taskType${taskType == null}"); + Debug.LogError("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}, metadata:${metadata}"); continue; } - //print("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}, metadata:${metadata}"); + //Debug.Log("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}, metadata:${metadata}"); DateTime sTime = DateTime.parse(startTime); DateTime eTime = DateTime.parse(endTime); @@ -538,7 +538,7 @@ Future> GetActivities(bool forceOffline) async { DateTime midnight = DateTime(eTime.year, eTime.month, eTime.day, 0, 0, 0); int firstHalf = eTime.difference(midnight).inMinutes; int secondHalf = midnight.difference(sTime).inMinutes; - // print("${taskType.name} first half : $firstHalf -> second half: $secondHalf"); + // Debug.Log("${taskType.name} first half : $firstHalf -> second half: $secondHalf"); if (firstHalf > 1) { _activities.add(Activity(taskType, midnight, eTime, metadata: metadata, tStartTime: sTime)); } @@ -551,12 +551,12 @@ Future> GetActivities(bool forceOffline) async { } activities = _activities; } else { - print("NC :Updating Activities as $username"); + Debug.Log("NC :Updating Activities as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_activities.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print("Activity response: ${response.body}"); + Debug.LogResponse("Activity response: ${response.body}"); List _activities = []; if (response.body.contains("{")) { List data = response.body.split(""); @@ -570,10 +570,10 @@ Future> GetActivities(bool forceOffline) async { String? metadata = cat['metadata']; TaskType? taskType = await getTaskFromId(type); if (taskType == null) { - print('null found'); + Debug.LogError('null found'); continue; } - //print("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}, metadata:${metadata}"); + //Debug.Log("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}, metadata:${metadata}"); DateTime sTime = DateTime.parse(startTime); DateTime eTime = DateTime.parse(endTime); @@ -581,7 +581,7 @@ Future> GetActivities(bool forceOffline) async { DateTime midnight = DateTime(eTime.year, eTime.month, eTime.day, 0, 0, 0); int firstHalf = eTime.difference(midnight).inMinutes; int secondHalf = midnight.difference(sTime).inMinutes; - // print("${taskType.name} first half : $firstHalf -> second half: $secondHalf"); + // Debug.Log("${taskType.name} first half : $firstHalf -> second half: $secondHalf"); if (firstHalf > 1) { _activities.add(Activity(taskType, midnight, eTime, metadata: metadata, tStartTime: sTime)); } @@ -595,43 +595,41 @@ Future> GetActivities(bool forceOffline) async { activities = _activities.reversed.toList(); } else { - print("No activities for now"); + Debug.LogError("No activities for now"); } } catch (e) { - print("Error : $e @ updating activities"); - print("Error while acts $e"); + Debug.LogError("Error while acts $e"); } } return activities; } Future UpdateActivitiesFromServer() async { - print("Updating Activities as $username"); + Debug.Log("Updating Activities as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_activities.php'), body: {"username": username, "device_id": await Settings.UUID()})); await cacheDb.rawDelete("DELETE FROM Activities"); - print('Truncate Activity Table before'); + Debug.Log('Truncate Activity Table before'); - print("Activity response: ${response.body}"); + // Debug.Log("Activity response: ${response.body}"); if (response.body.contains("{")) { List data = response.body.split(""); for (var value in data) { Map cat = jsonDecode(value); - //print(cat); + //Debug.Log(cat); await cacheDb.rawInsert( "INSERT OR REPLACE INTO Activities (${Activity.colType}, ${Activity.colStartTime}, ${Activity.colEndTime}, ${Activity.colMetadata}) " "VALUES ('${cat['task_id']}', '${cat['sTime']}','${cat['eTime']}', '${cat['metadata'].toString().replaceAll("'", "''")}') "); } } else { - print("No activities for now"); + Debug.Log("No activities for now"); } } catch (e) { - print("Error : $e @ updating activities"); - print("Error while acts $e"); + Debug.Log("Error while acts $e"); } } @@ -640,14 +638,14 @@ Future> GetProjects(bool forceOffline) async { List _projects = []; if (offline || forceOffline) { //Retreive from cacheDB - print('offline, refreshing projects'); + Debug.Log('offline, refreshing projects'); } else { //Check if server got updated, If not go for cache var android_id = await Settings.UUID(); bool updated = false; - print("Need to update activities : ${!updated}"); + Debug.Log("Need to update activities : ${!updated}"); //Update CacheDB if (!updated) { @@ -656,27 +654,26 @@ Future> GetProjects(bool forceOffline) async { } List cats = await cacheDb.rawQuery('SELECT * FROM Projects'); - print('projects : ${cats.length}'); + Debug.Log('projects : ${cats.length}'); for (Map element in cats) { String? name = element[Project.colName]; String? category = element[Project.colCat]; String? stepsJson = element[Project.colSteps]; String? deadline = element[Project.colDeadline]; int? eta = element[Project.colEta]; - print(name); 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}"); + Debug.LogError("Something is null!\nname:${name == null}, cat:${category == null}, steps:${stepsJson == null}, deadline${deadline == null}"); + Debug.LogError("TaskType:{$name}, Start Time:{$category}, endTime:{$stepsJson}, metadata:${deadline}"); continue; } Category? cat = await getCatFromId(category); - print('searching for $category'); + Debug.Log('searching for $category'); if (cat == null) { - print('couldnt find cat'); + Debug.LogError('couldnt find cat'); continue; } - print('steps : $stepsJson'); + Debug.LogResponse('steps : $stepsJson'); List _steps = jsonDecode(stepsJson); List steps = []; int m_eta = 0; @@ -684,21 +681,21 @@ Future> GetProjects(bool forceOffline) async { ProjectStep step = ProjectStep.fromJson(element); m_eta += step.eta; steps.add(step); - print(element); + Debug.LogResponse(element); }); eta = (m_eta > 0) ? m_eta : eta; - // print(steps); + // Debug.Log(steps); _projects.add(Project(name.replaceAll(username, ""), category, steps, eta, DateTime.parse(deadline), cat: cat)); } projects = _projects; } else { - print("NC :Updating Projects as $username"); + Debug.Log("NC :Updating Projects as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_projects.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print("Activity response: ${response.body}"); + // Debug.Log("Activity response: ${response.body}"); List _projects = []; if (response.body.contains("{")) { List data = response.body.split(""); @@ -712,51 +709,49 @@ Future> GetProjects(bool forceOffline) async { String? metadata = cat['metadata']; TaskType? taskType = await getTaskFromId(type); if (taskType == null) { - print('null found'); + Debug.LogError('null task found'); continue; } } projects = _projects; } else { - print("No activities for now"); + Debug.Log("No activities for now"); } } catch (e) { - print("Error : $e @ updating activities"); - print("Error while acts $e"); + Debug.LogError("Error : $e @ updating activities"); + Debug.LogError("Error while acts $e"); } } return projects; } Future UpdateProjectsFromServer() async { - print("Updating Projects as $username"); + Debug.Log("Updating Projects as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_projects.php'), body: {"username": username, "device_id": await Settings.UUID()})); await cacheDb.rawDelete("DELETE FROM Projects"); - print('Truncate Projects Table before'); + Debug.Log('Truncate Projects Table before'); - print("Projects response: ${response.body}"); + Debug.LogResponse("Projects response: ${response.body}"); if (response.body.contains("{")) { List data = response.body.split(""); for (var value in data) { Map cat = jsonDecode(value); - print('project data'); - print(cat); + Debug.LogResponse(cat, src: 'project data'); await cacheDb.rawInsert( "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"); + Debug.Log("No activities for now"); } } catch (e) { - print("Error : $e @ updating activities"); - print("Error while acts $e"); + Debug.LogError("Error while acts $e"); } } @@ -777,7 +772,7 @@ Future> GetJournals(bool forceOffline) async { // final data = update_response.body.split(','); // catsUpdated = data[0] == '1'; // } catch (e) { - // print(e); + // Debug.Log(e); // } //Update CacheDB @@ -787,39 +782,39 @@ Future> GetJournals(bool forceOffline) async { } List cats = await cacheDb.query('Journal'); - print(cats.length); + Debug.Log(cats.length); for (Map element in cats) { String? id = element['id'].toString(); String? title = element[Journal.colTitle].toString(); String? text = element[Journal.colDescription].toString(); if (id == null || title == null || text == null) { - print("Something is null!"); - print("id:{$id}, title:{$title}, text:${text}"); + Debug.LogError("Something is null!"); + Debug.LogError("id:{$id}, title:{$title}, text:${text}"); continue; } DateTime day = DateTime.parse(id.replaceAll(username, '')); - // print("name:{$catName}, color:{$catColor}, prod:{$catProductive}"); + // Debug.Log("name:{$catName}, color:{$catColor}, prod:{$catProductive}"); _journals.add(Journal(id, day, title: title, description: text)); } journal = _journals; } else { - print("NC: Updating Categories as $username"); + Debug.Log("NC: Updating Categories as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_journals.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print(response.body); + Debug.LogResponse(response.body); List data = response.body.split(""); List _categories = []; for (var value in data) { Map cat = jsonDecode(value); - //print(catData); + //Debug.Log(catData); _categories .add(Journal(cat['id'], DateTime.parse(cat['id'].toString().replaceAll(username, '')), title: cat['title'], description: cat['text'])); } journal = _categories; } catch (e) { - print("Error while cats NC: $e"); + Debug.LogError("Error while cats NC: $e"); } } journal.sort((a, b) => b.day.compareTo(a.day)); @@ -827,22 +822,22 @@ Future> GetJournals(bool forceOffline) async { } Future UpdateJournalsFromServer() async { - print("Updating Journal as $username"); + Debug.Log("Updating Journal as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_journals.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print(response.body); + Debug.LogResponse(response.body,src:'Journal'); List data = response.body.split(""); await cacheDb.delete("Journal"); for (var value in data) { Map cat = jsonDecode(value); - //print(catData); + //Debug.Log(catData); await cacheDb.rawInsert("INSERT OR REPLACE INTO Journal (id, ${Journal.colTitle},${Journal.colDescription}) " "VALUES ('${cat['id']}','${cat['title'].toString().replaceAll("'", "''")}','${cat['description'].toString().replaceAll("'", "''")}') "); } } catch (e) { - print("Error while cats $e"); + Debug.LogError("Error while cats $e"); } } @@ -863,7 +858,7 @@ Future> GetTodos(bool forceOffline) async { // final data = update_response.body.split(','); // catsUpdated = data[0] == '1'; // } catch (e) { - // print(e); + // Debug.Log(e); // } //Update CacheDB @@ -873,7 +868,7 @@ Future> GetTodos(bool forceOffline) async { } List cats = await cacheDb.query('Todos'); - print(cats.length); + Debug.Log(cats.length); for (Map element in cats) { String? id = element['id'].toString(); String? task_id = element[Todo.colCat]; @@ -882,36 +877,36 @@ Future> GetTodos(bool forceOffline) async { String? notification_time = element[Todo.colNotificationTime]; if (id == null || task_id == null || metadata == null || due_date == null) { - print("Something is null!"); - print("id:{$id}, task:{$task_id}, metadata:${metadata}, due_date: ${due_date}"); + Debug.LogError("Something is null!"); + Debug.LogError("id:{$id}, task:{$task_id}, metadata:${metadata}, due_date: ${due_date}"); continue; } TaskType? taskType = await getTaskFromId(task_id); - if(taskType == null){print('got null taask for this todo!');print("id:{$id}, task:{$task_id}, metadata:${metadata}, due_date: ${due_date}");} + if(taskType == null){Debug.LogError('got null taask for this todo!');Debug.LogResponse("id:{$id}, task:{$task_id}, metadata:${metadata}, due_date: ${due_date}");} DateTime dueDate = DateTime.parse(due_date); DateTime? notificationTime = (notification_time == null) ? null : ((notification_time.isEmpty || notification_time =='null') ? null :DateTime.parse(notification_time)); - // print("name:{$catName}, color:{$catColor}, prod:{$catProductive}"); + // Debug.Log("name:{$catName}, color:{$catColor}, prod:{$catProductive}"); _todos.add(Todo(id,task_id,metadata,dueDate, notificationTime: notificationTime, task:taskType)); } todos = _todos; } else { - print("NC: Updating todos as $username"); + Debug.Log("NC: Updating todos as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_todos.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print(response.body); + Debug.LogResponse(response.body); List data = response.body.split(""); List _categories = []; for (var value in data) { Map cat = jsonDecode(value); - //print(catData); + //Debug.Log(catData); _categories .add(Journal(cat['id'], DateTime.parse(cat['id'].toString().replaceAll(username, '')), title: cat['title'], description: cat['text'])); } journal = _categories; } catch (e) { - print("Error while cats NC: $e"); + Debug.LogError("Error while cats NC: $e"); } } // journal.sort((a, b) => b.day.compareTo(a.day)); @@ -919,22 +914,22 @@ Future> GetTodos(bool forceOffline) async { } Future UpdateTodosFromServer() async { - print("Updating Todos as $username"); + Debug.Log("Updating Todos as $username"); try { http.Response response = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/get_todos.php'), body: {"username": username, "device_id": await Settings.UUID()})); - print(response.body); + Debug.LogResponse(response.body); List data = response.body.split(""); await cacheDb.delete("Todos"); for (var value in data) { Map cat = jsonDecode(value); - //print(catData); + //Debug.Log(catData); await cacheDb.rawInsert("INSERT OR REPLACE INTO Todos (id, ${Todo.colCat},${Todo.colMetadata},${Todo.colDueDate},${Todo.colNotificationTime}) " "VALUES ('${cat['id'].toString().replaceAll("'", "''")}', '${cat['task_id']}', '${cat['metadata'].toString().replaceAll("'", "''")}', '${cat['due_date']}', '${cat['notification_time']}') "); } } catch (e) { - print("Error while cats $e"); + Debug.LogError("Error while cats $e"); } } @@ -950,7 +945,7 @@ Future getTaskFromId(String taskId) async { } } if (cat == null) { - print('Got null tasktype for ${taskId} after searching on ${taskTypes.length}'); + Debug.LogError('Got null tasktype for ${taskId} after searching on ${taskTypes.length}'); } return cat; @@ -977,7 +972,7 @@ Future getProjectFromId(String projectId) async { } } if (project == null) { - print('Got null project for ${projectId} after searching on ${projects.length}'); + Debug.LogError('Got null project for ${projectId} after searching on ${projects.length}'); } return project; @@ -986,7 +981,7 @@ Future getProjectFromId(String projectId) async { bool journalExists(DateTime date){ int journalId = -1; for (int i =0; i < journal.length; i++) { - // print('${journal[i].day } : $date'); + // Debug.Log('${journal[i].day } : $date'); if(DateFormat('yyyy-MM-dd').format(journal[i].day) == DateFormat('yyyy-MM-dd').format(date)){ journalId = i; break; @@ -1030,7 +1025,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'add_category', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); @@ -1046,12 +1041,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/add_category.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error editing acti $e}'); + Debug.LogError('NC: Error editing acti $e}'); } //executeQueries(); } @@ -1075,7 +1070,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'add_taskType', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); @@ -1093,12 +1088,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/add_taskType.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error editing acti $e}'); + Debug.LogError('NC: Error editing acti $e}'); } } if (!bulk) { @@ -1120,7 +1115,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'edit_taskType', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); @@ -1131,12 +1126,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/add_taskType.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error editing task $e}'); + Debug.LogError('NC: Error editing task $e}'); } } if (!bulk) { @@ -1162,7 +1157,7 @@ class UserOperations { int? overlapCount = Sqflite.firstIntValue(await cacheDb.rawQuery( "SELECT COUNT(*) FROM Activities WHERE (((${Activity.colStartTime} < datetime('$sTime')) AND ((${Activity.colEndTime} > datetime('$eTime')) OR (${Activity.colEndTime} < datetime('$eTime') AND ${Activity.colEndTime} > datetime('$sTime')))) OR (${Activity.colStartTime} > datetime('$sTime') AND ${Activity.colStartTime} < datetime('$eTime')) OR (${Activity.colStartTime}=datetime('$sTime') AND ${Activity.colEndTime}=datetime('$eTime')))")); - print("ActivityOverlaps: $overlapCount"); + Debug.Log("ActivityOverlaps: $overlapCount"); if (overlapCount! > 0) { onOverlap!(overlapCount); return; @@ -1171,7 +1166,7 @@ class UserOperations { if (metadata.length > 0) {} //Add Query - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); @@ -1187,12 +1182,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/add_activity.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error adding player $e}'); + Debug.LogError('NC: Error adding player $e}'); } } if (!bulk) { @@ -1220,7 +1215,7 @@ class UserOperations { int? overlapCount = Sqflite.firstIntValue(await cacheDb.rawQuery( "SELECT COUNT(*) FROM Activities WHERE (((${Activity.colStartTime} < datetime('$sTime')) AND ((${Activity.colEndTime} > datetime('$eTime')) OR (${Activity.colEndTime} < datetime('$eTime') AND ${Activity.colEndTime} > datetime('$sTime')))) OR (${Activity.colStartTime} > datetime('$sTime') AND ${Activity.colStartTime} < datetime('$eTime')) OR (${Activity.colStartTime}=datetime('$sTime') AND ${Activity.colEndTime}=datetime('$eTime'))) AND ${Activity.colStartTime}!=datetime('${init_sTime}') AND ${Activity.colEndTime} != datetime('${init_eTime}')")); - print("ActivityOverlaps: $overlapCount"); + Debug.Log("ActivityOverlaps: $overlapCount"); if (overlapCount! > 0) { onOverlap!(overlapCount); return; @@ -1229,7 +1224,7 @@ class UserOperations { if (metadata.length > 0) {} //Add Query - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); @@ -1242,12 +1237,12 @@ class UserOperations { // queries.add(Queries('edit_activity', jsonEncode(queryBody))); try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/edit_activity.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error editing acti $e}'); + Debug.LogError('NC: Error editing acti $e}'); } } if (!bulk) { @@ -1266,18 +1261,18 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'start_ongoing', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/start_ongoing.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error adding ongoing $e}'); + Debug.LogError('NC: Error adding ongoing $e}'); } } @@ -1293,18 +1288,18 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'stop_ongoing', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/stop_ongoing.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error adding ongoing $e}'); + Debug.LogError('NC: Error adding ongoing $e}'); } } @@ -1326,7 +1321,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'add_project', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); @@ -1343,12 +1338,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/add_project.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error adding prjct $e}'); + Debug.LogError('NC: Error adding prjct $e}'); } } UserOperations.addTaskType(name, category, relatedProject: name); @@ -1370,7 +1365,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'edit_project', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); @@ -1389,12 +1384,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/edit_project.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error adding prjct $e}'); + Debug.LogError('NC: Error adding prjct $e}'); } } await executeQueries(); @@ -1417,7 +1412,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'update_projectSteps', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); await cacheDb.rawUpdate("UPDATE Projects SET steps='${jsonEncode(project.steps)}' WHERE ${Project.colName}='${project.name}'"); @@ -1428,12 +1423,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/update_projectSteps.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error completing prjctStep $e}'); + Debug.LogError('NC: Error completing prjctStep $e}'); } } @@ -1457,7 +1452,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'update_projectSteps', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); await cacheDb.rawUpdate("UPDATE Projects SET steps='${jsonEncode(project.steps)}' WHERE ${Project.colName}='${project.name}'"); @@ -1468,12 +1463,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/update_projectSteps.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error completing prjctStep $e}'); + Debug.LogError('NC: Error completing prjctStep $e}'); } } @@ -1498,7 +1493,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'add_journal', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); @@ -1509,12 +1504,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/add_journal.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error adding journal entry $e}'); + Debug.LogError('NC: Error adding journal entry $e}'); } //executeQueries(); } @@ -1530,7 +1525,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'edit_journal', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); await cacheDb.rawUpdate( @@ -1542,12 +1537,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/edit_journal.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error adding journal entry $e}'); + Debug.LogError('NC: Error adding journal entry $e}'); } //executeQueries(); } @@ -1563,7 +1558,7 @@ class UserOperations { taskId = taskId.substring(0, taskId.indexOf('[') - 1); } - String id = username + taskId + metadata; + String id = taskId + metadata; Map queryBody = { 'username': username, @@ -1576,23 +1571,23 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'add_todo', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); await cacheDb.insert('Queries', query); //update Cache - Map data = {'id': id, Todo.colCat: username+taskType, Todo.colMetadata: metadata, Todo.colDueDate: DateFormat('yyyy-MM-dd').format(dueDate), if(notificationTime!=null)Todo.colNotificationTime:DateFormat('yyyy-MM-dd HH:mm').format(notificationTime)}; + Map data = {'id': id, Todo.colCat: taskId, Todo.colMetadata: metadata, Todo.colDueDate: DateFormat('yyyy-MM-dd').format(dueDate), if(notificationTime!=null)Todo.colNotificationTime:DateFormat('yyyy-MM-dd HH:mm').format(notificationTime)}; await cacheDb.insert('Todos', data); await refreshUserData(forceOffline: true); } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/add_todo.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error adding journal entry $e}'); + Debug.LogError('NC: Error adding journal entry $e}'); } //executeQueries(); } @@ -1610,7 +1605,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'delete_taskType', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); if (cacheEnabled) { await cacheDb.insert('Queries', query); @@ -1626,12 +1621,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/delete_taskType.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error editing acti $e}'); + Debug.LogError('NC: Error editing acti $e}'); } } if (!bulk) { @@ -1648,7 +1643,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'delete_category', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); if (cacheEnabled) { await cacheDb.insert('Queries', query); @@ -1663,12 +1658,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/delete_category.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error editing acti $e}'); + Debug.LogError('NC: Error editing acti $e}'); } } if (!bulk) { @@ -1686,7 +1681,7 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'delete_activity', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); if (cacheEnabled) { await cacheDb.insert('Queries', query); @@ -1694,7 +1689,7 @@ class UserOperations { //update Cache String deleteQuery = "DELETE FROM Activities WHERE ${Activity.colStartTime}=datetime('${dFormat.format(activity.trueStartTime)}') AND ${Activity.colEndTime}=datetime('${dFormat.format(activity.trueEndTime)}')"; - print("delteQuery : $deleteQuery"); + Debug.LogResponse("delteQuery : $deleteQuery"); await cacheDb.rawDelete(deleteQuery); await refreshUserData(forceOffline: true); @@ -1702,12 +1697,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/delete_activity.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error editing acti $e}'); + Debug.LogError('NC: Error editing acti $e}'); } } if (!bulk) { @@ -1723,14 +1718,14 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'delete_project', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); if (cacheEnabled) { await cacheDb.insert('Queries', query); //update Cache String deleteQuery = "DELETE FROM Projects WHERE ${Project.colName}='${username + project}'"; - print("delteQuery : $deleteQuery"); + Debug.LogResponse("delteQuery : $deleteQuery"); await cacheDb.rawDelete(deleteQuery); await refreshUserData(forceOffline: true); @@ -1738,12 +1733,12 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/delete_project.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error deleting project $e}'); + Debug.LogError('NC: Error deleting project $e}'); } } if (!bulk) { @@ -1759,14 +1754,14 @@ class UserOperations { //Add Query Map query = {Queries.colLink: 'delete_journal', Queries.colData: jsonEncode(queryBody)}; - print("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); if (cacheEnabled) { await cacheDb.insert('Queries', query); //update Cache String deleteQuery = "DELETE FROM Journal WHERE id='$id'"; - print("delteQuery : $deleteQuery"); + Debug.LogResponse("delteQuery : $deleteQuery"); await cacheDb.rawDelete(deleteQuery); await refreshUserData(forceOffline: true); @@ -1774,12 +1769,48 @@ class UserOperations { } else { try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/delete_journal.php'), body: queryBody)); - print("Query executed : Results{${queryResponse.body}"); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); if (queryResponse.body.toLowerCase().contains("success")) { //Success } } catch (e) { - print('NC: Error deleting journal $e}'); + Debug.LogError('NC: Error deleting journal $e}'); + } + } + if (!bulk) { + await executeQueries(); + } + } + + static Future deleteTodo(String id, {bulk = false}) async { + Map queryBody = { + 'username': username, + 'id': id, + }; + //Add Query + Map query = {Queries.colLink: 'delete_todo', Queries.colData: jsonEncode(queryBody)}; + + Debug.LogResponse("adding new query ${query[Queries.colLink]} : ${jsonEncode(queryBody)}"); + + if (cacheEnabled) { + await cacheDb.insert('Queries', query); + + //update Cache + String deleteQuery = "DELETE FROM Todos WHERE id='$id'"; + Debug.LogResponse("delteQuery : $deleteQuery"); + + await cacheDb.rawDelete(deleteQuery); + await refreshUserData(forceOffline: true); + //Add to server and refresh Cache + } else { + try { + http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/delete_todo.php'), body: queryBody)); + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); + if (queryResponse.body.toLowerCase().contains("success")) { + //Success + } + } catch (e) { + Debug.LogError('NC: Error deleting journal $e}'); } } if (!bulk) { @@ -1790,7 +1821,7 @@ class UserOperations { static Future executeQueries() async { if (cacheEnabled) { if (offline) { - print("Cannot executre queries, Offline!"); + Debug.Log("Cannot executre queries, Offline!"); return; } List> queries = await cacheDb.query('Queries'); @@ -1800,28 +1831,28 @@ class UserOperations { String? file = element[Queries.colLink].toString(); String? data = element[Queries.colData].toString(); if (file == null || data == null) { - print("Null query, Ignoring..."); + Debug.LogError("Null query, Ignoring..."); continue; } - print("Query[\n file:$file, \ndata:$data]"); + Debug.LogResponse("Query[\n file:$file, \ndata:$data]"); //Execute the http here Map body = jsonDecode(data); try { http.Response queryResponse = (await http.post(Uri.parse('http://161.97.127.136/task_tracker/$file.php'), body: body)); - print("Query executed : Results{${queryResponse.body}"); - if (queryResponse.body.toLowerCase().contains("+")) { + Debug.LogResponse("Query executed : Results{${queryResponse.body}"); + if (queryResponse.body.toLowerCase().contains("+") || queryResponse.body.toLowerCase().contains("success")) { await cacheDb.rawDelete('DELETE FROM Queries WHERE id=$id'); } offline = false; } catch (e) { - print("Error while query $e"); + Debug.LogError("Error while query $e"); } } //await refreshUserData(); } else { await refreshUserData(); - print('Trying to execute queries in no cahce mode, We dont do that here'); + Debug.LogError('Trying to execute queries in no cahce mode, We dont do that here'); } } } diff --git a/lib/main.dart b/lib/main.dart index 259a1c1..959a223 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -740,7 +740,7 @@ class _MyHomePageState extends State { dataLabelMapper: (ProductivityMapData sales, _) => sales.productivity.toStringAsFixed(1) + "%", dataLabelSettings: DataLabelSettings(overflowMode: OverflowMode.hide, showZeroValue: false, isVisible: true), onPointTap: (ChartPointDetails point){ - Dialogs.showJournalLink(dFormat.parse(productivityData[productivityData.length-point.pointIndex!-1].day)); + Dialogs.showJournalLink(dFormat.parse(productivityData[productivityData.length-point.pointIndex!].day)); //showAlertDialog(context, productivityData[point.pointIndex!].day, "I'll show you detailed info about this day in future, When my master creates the feature"); }, pointColorMapper: (ProductivityMapData sales, _)=> (User.journalExists(dFormat.parse(sales.day)) ? Colors.lightGreenAccent : Colors.green)