Esempio n. 1
0
 public override IEnumerable<Entities.Tag> GetTaskTags(Entities.Task task)
 {
     List<Entities.Tag> result = new List<Entities.Tag>();
     if (this.Stream != null)
     {
         using (TagManager tm = new TagManager())
         {
             tm.Stream = this.TagStream;
             IEnumerable<Entities.Tag> tags = tm.GetTags();
             XDocument doc = XDocument.Load(this.Stream);
             Task el = (Task)doc.Element("Task").Elements("Task").Where(x => x.Attribute("ID").Value == task.ID.ToString()).SingleOrDefault();
             foreach (Guid id in el.TagIDs)
             {
                 result.AddRange(tm.GetTags(t=>t.ID == id));
             }
         }
     }
     return result;
 }
Esempio n. 2
0
 public override Entities.Task TagTask(Entities.Task task, IEnumerable<Entities.Tag> tags)
 {
     List<Entities.Tag> result = new List<Entities.Tag>();
     if (this.Stream != null)
     {
         using (TagManager tm = new TagManager())
         {
             tm.Stream = this.TagStream;
             XDocument doc = XDocument.Load(this.Stream);
             Task el = (Task)doc.Element("Task").Elements("Task").Where(x => x.Attribute("ID").Value == task.ID.ToString()).SingleOrDefault();
             foreach (Entities.Tag tag in tags)
             {
                 if (!el.TagIDs.Contains(tag.ID))
                 {
                     el.TagIDs.Add(tag.ID);
                 }
             }
              List<Guid> removeTags = new List<Guid>();
             foreach (Guid tagid in el.TagIDs)
             {
                 if (tags.FirstOrDefault(t => t.ID == tagid) == null)
                 {
                     removeTags.Add(tagid);
                 }
             }
             if (removeTags.Count > 0)
             {
                 foreach (Guid tag in removeTags)
                 {
                    el.TagIDs.Remove(tag);
                 }
             }
             XElement el2 = doc.Element("Task").Elements("Task").Where(x => x.Attribute("ID").Value == task.ID.ToString()).SingleOrDefault();
             if (el2 != null)
             {
                 el2.SetElementValue("Tags", el.TagIDs);
                 doc.Save(this.Stream);
             }
             return (Task)el2;
         }
     }
     return task;
 }