private static void InsertTask(Data.TaskList taskList, Data.Task task) { var gtask = new Task(); gtask.Title = task.Title; gtask.Status = task.DoneDate.HasValue ? "completed" : "needsAction"; gtask.Completed = task.DoneDate.HasValue ? System.Xml.XmlConvert.ToString(task.DoneDate.Value, XmlDateTimeSerializationMode.Utc) : null; gtask.Due = task.DueDate.HasValue ? System.Xml.XmlConvert.ToString(task.DueDate.Value, XmlDateTimeSerializationMode.Utc) : null; gtask.Notes = task.Notes; var req = Service.Tasks.Insert(gtask, taskList.Id); if (task.PreviousId != "") { req.Previous = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.PreviousId); } if (task.ParentId != "") { req.Parent = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.ParentId); } var googleTaskId = req.Fetch().Id; TasksReferenceManager.AddNewReference(taskList.Title, task.Id, googleTaskId); }
public static void SubmitLocalTaskChanges(Data.TaskList taskList, TaskChanges localchanges) { foreach (var change in localchanges) { switch (change.TaskChangeType) { case TaskChangeType.None: break; case TaskChangeType.Create: InsertTask(taskList, change.NewTask); break; case TaskChangeType.Change: UpdateTask(taskList, change.NewTask); break; case TaskChangeType.ChangeAndMove: UpdateTask(taskList, change.NewTask); MoveTask(taskList, change.NewTask); break; case TaskChangeType.Delete: DeleteTask(taskList, change.Id); break; default: throw new ArgumentOutOfRangeException(); } } if (localchanges.Count > 0) { TasksReferenceManager.SaveReferencesToXml(taskList.Title); } }
private static void DeleteTask(Data.TaskList taskList, string taskId) { var googleTaskId = TasksReferenceManager.GetGoogleTaskId(taskList.Title, taskId); if (googleTaskId == "") { return; } Service.Tasks.Delete(taskList.Id, googleTaskId).Fetch(); TasksReferenceManager.RemoveReference(taskList.Title, taskId, googleTaskId); }
//try //{ // request.Fetch(); // CommandLine.WriteResult("Result", "Success!"); //} //catch (GoogleApiRequestException ex) //{ // CommandLine.WriteResult( // "Result", "Failure! (" + ex.RequestError.Code + " - " + ex.RequestError.Message + ")"); //} private static void MoveTask(Data.TaskList taskList, Data.Task task) { var googleTaskId = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.Id); if (googleTaskId == "") { return; } var req = Service.Tasks.Move(taskList.Id, googleTaskId); req.Previous = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.PreviousId); req.Parent = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.ParentId); req.Fetch(); }
public static void SaveAbstractSpoonTaskListToXmlFile(string folderpath, string extension, Data.TaskList taskList) { var settings = new XmlWriterSettings { Indent = true, Encoding = System.Text.Encoding.Unicode }; var writer = XmlWriter.Create(folderpath + taskList.Title + "." + extension, settings); writer.WriteStartDocument(); writer.WriteStartElement("TODOLIST"); writer.WriteAttributeString("NEXTUNIQUEID", TasksReferenceManager.GetNextUniqueAbstractSpoonId(taskList)); WriteTasksToXml(writer, taskList.TopTask.ChildTasks); writer.WriteEndDocument(); writer.Flush(); writer.Close(); }
private static void UpdateTask(Data.TaskList taskList, Data.Task task) { var googleTaskId = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.Id); if (googleTaskId == "") { return; } Task gtask = Service.Tasks.Get(taskList.Id, googleTaskId).Fetch(); gtask.Title = task.Title; gtask.Status = task.DoneDate.HasValue ? "completed" : "needsAction"; gtask.Completed = task.DoneDate.HasValue ? System.Xml.XmlConvert.ToString(task.DoneDate.Value, XmlDateTimeSerializationMode.Utc) : null; gtask.Due = task.DueDate.HasValue ? System.Xml.XmlConvert.ToString(task.DueDate.Value, XmlDateTimeSerializationMode.Utc) : null; gtask.Notes = task.Notes; Service.Tasks.Update(gtask, taskList.Id, googleTaskId).Fetch(); }
private static void Sync(bool doReset = false, string taskListTitle = "") { if (!FolderPath.ValidateTodoFilePath()) { Console.WriteLine("The setting TodoFilePath in app.config failed to load"); return; } FilesHelper.EnsureFoldersExists(); Console.WriteLine("Logging into Google Task Service ..."); GoogleTasksManager.LogonToService(); //Submit local task list changes to remote server if (!doReset && taskListTitle == "") { var listChanges = ChangeListManager.CreateListOfLocalListChangesToSubmitRemotely(); if (listChanges.Count > 0) { Console.WriteLine("Submit local task list changes... "); GoogleTasksManager.SubmitLocalTaskListChanges(listChanges); FilesHelper.DeleteLocalTaskLists(listChanges); } } //Load remote task lists. var remoteTaskLists = GoogleTasksManager.LoadLists(taskListTitle); if (remoteTaskLists.Count == 0) { Console.WriteLine("\nNo remoteTaskList found."); return; } //Reset all local tasklists when this option is selected if (doReset && taskListTitle == "") { FilesHelper.DeleteAllTaskLists(); } //For each remote task list, downloading task list or sync with local task list. foreach (var remoteTaskList in remoteTaskLists) { Console.WriteLine("Syncing TaskList " + remoteTaskList.Title + "..."); Data.TaskList localTaskList = null; if (!doReset) { localTaskList = AbstractSpoonXmlManager.LoadTaskListFromXmlFile(FolderPath.TodoFilePath, "tdl", remoteTaskList.Title); var localTaskListSync = AbstractSpoonXmlManager.LoadTaskListFromXmlFile(FolderPath.LocalChangesCompareFilePath, "xml", remoteTaskList.Title); var localTaskListChanges = ChangeListManager.CreateListOfLocalTaskChanges(localTaskListSync, localTaskList); // Send all changes in local file to remote server (Google Task Cloud). Console.WriteLine("Local change count:" + localTaskListChanges.Count); GoogleTasksManager.SubmitLocalTaskChanges(remoteTaskList, localTaskListChanges); } GoogleTasksManager.LoadTasks(remoteTaskList); TasksReferenceManager.ConvertTaskIdToAbstractSpoon(remoteTaskList); if (!doReset) { AbstractSpoonXmlManager.TransferXmlAttributesAndElements(remoteTaskList, localTaskList); } AbstractSpoonXmlManager.SaveAbstractSpoonTaskListToXmlFile(FolderPath.TodoFilePath, "tdl", remoteTaskList); AbstractSpoonXmlManager.SaveAbstractSpoonTaskListToXmlFile(FolderPath.LocalChangesCompareFilePath, "xml", remoteTaskList); Console.WriteLine("Done"); } // Delete local tasklists where not existing on remote server. if (taskListTitle == "") { string[] localTodoFiles = FilesHelper.GetTodoFiles(); foreach (var remotelyDeleted in ChangeListManager.GetChangeListOfRemotelyDeletedLists(localTodoFiles, remoteTaskLists)) { Console.WriteLine("Delete local verison of \"" + remotelyDeleted.Title + "\""); FilesHelper.DeleteLocalTaskListByTitle(remotelyDeleted.Title); } } }