/// <summary> /// Update the values on an existing task. /// </summary> /// <param name="task"></param> public static void UpdateTask(UserTask task) { if (task != null) { XmlElement tsk = db.Doc.GetElementById(task.ID); if (tsk != null) { XmlNode parent = tsk.ParentNode; DateTime?tskDate = null; if (parent.Name != "nodate") { tskDate = FormatHelpers.SplitDateString(parent.Name); } if (task.DueDate == tskDate) { tsk.SetAttribute(SubjectAttribute, task.Subject); if (task.StartDate == null) { tsk.SetAttribute(StartDateAttribute, ""); } else { tsk.SetAttribute(StartDateAttribute, FormatHelpers.DateTimeToShortString(task.StartDate.Value)); } tsk.SetAttribute(ReminderAttribute, FormatHelpers.DateTimeToString(task.Reminder)); tsk.SetAttribute(IsReminderEnabledAttribute, FormatHelpers.BoolToString(task.IsReminderEnabled)); tsk.SetAttribute(StatusAttribute, ((byte)task.Status).ToString()); tsk.SetAttribute(PriorityAttribute, ((byte)task.Priority).ToString()); tsk.SetAttribute(ProgressAttribute, task.Progress.ToString()); tsk.SetAttribute(CategoryAttribute, task.CategoryID); tsk.SetAttribute(OwnerAttribute, task.Owner); tsk.SetAttribute(ReadOnlyAttribute, FormatHelpers.BoolToString(task.ReadOnly)); tsk.SetAttribute(PrivateAttribute, FormatHelpers.BoolToString(task.Private)); tsk.SetAttribute(LastModifiedAttribute, FormatHelpers.DateTimeToString(task.LastModified)); } else { parent.RemoveChild(tsk); if (!parent.HasChildNodes) { parent.ParentNode.RemoveChild(parent); } Add(task); } } else { Add(task); } } }
/// <summary> /// Add new task. /// </summary> /// <param name="task">The task to add.</param> public static void Add(UserTask task) { XmlElement existing = db.Doc.GetElementById(task.ID); if (existing == null) { // // <yyyymmdd></yyyymmdd> // string date = "nodate"; if (task.DueDate != null) { date = FormatHelpers.DateString((DateTime)task.DueDate); } XmlNode existingDate = db.Doc.SelectSingleNode("/db/" + date); // // <t /> // XmlElement tsk = db.Doc.CreateElement(TaskTag); tsk.SetAttribute(XmlDatabase.IdAttribute, task.ID); tsk.SetAttribute(SubjectAttribute, task.Subject); if (task.StartDate != null) { tsk.SetAttribute(StartDateAttribute, FormatHelpers.DateTimeToShortString(task.StartDate.Value)); } else { tsk.SetAttribute(StartDateAttribute, ""); } tsk.SetAttribute(ReminderAttribute, FormatHelpers.DateTimeToString(task.Reminder)); tsk.SetAttribute(IsReminderEnabledAttribute, FormatHelpers.BoolToString(task.IsReminderEnabled)); tsk.SetAttribute(StatusAttribute, ((byte)task.Status).ToString()); tsk.SetAttribute(PriorityAttribute, ((byte)task.Priority).ToString()); tsk.SetAttribute(ProgressAttribute, task.Progress.ToString()); tsk.SetAttribute(CategoryAttribute, task.CategoryID); tsk.SetAttribute(OwnerAttribute, task.Owner); tsk.SetAttribute(ReadOnlyAttribute, FormatHelpers.BoolToString(task.ReadOnly)); tsk.SetAttribute(PrivateAttribute, FormatHelpers.BoolToString(task.Private)); tsk.SetAttribute(LastModifiedAttribute, FormatHelpers.DateTimeToString(task.LastModified)); if (existingDate == null) { XmlElement elem = db.Doc.CreateElement(date); elem.AppendChild(tsk); if (task.DueDate != null) { db.Doc.SmartInsert(elem, (DateTime)task.DueDate, date); } else { db.Doc.DocumentElement.PrependChild(elem); } } else { existingDate.AppendChild(tsk); } } }