Exemplo n.º 1
0
        /// <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);
                }
            }
        }
Exemplo n.º 2
0
        /// <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);
                }
            }
        }