Example #1
0
        public static Project ParseProject(this string xml)
        {
            var doc = XDocument.Parse(xml);

            var project = new Project(doc.Root);

            project.Title = doc.Descendants(ns + "Title").FirstOrDefault().Value;
            project.Tasks = doc.Descendants(ns + "Task").Select(x =>
                new Task(x)
                {
                    ID = int.Parse(x.Element(ns + "ID").Value),
                    UID = int.Parse(x.Element(ns + "UID").Value),
                    Name = x.Element(ns + "Name").Value,
                    ManualFinish = x.Element(ns + "ManualFinish") == null ? "" : x.Element(ns + "ManualFinish").Value,
                    ManualStart = x.Element(ns + "ManualStart") == null ? "" : x.Element(ns + "ManualStart").Value,
                    Work = x.Element(ns + "Work") == null ? "" : x.Element(ns + "Work").Value,
                    Duration = x.Element(ns + "Duration") == null ? "" : x.Element(ns + "Duration").Value,
                }).ToList();
            project.Assignments = doc.Descendants(ns + "Assignment").Select(x =>
                new Assignment(x)
                {
                    UID = int.Parse(x.Element(ns + "UID").Value),
                    TaskUID = int.Parse(x.Element(ns + "TaskUID").Value),
                }
                ).ToList();

            foreach (var t in project.Tasks)
            {
                t.Assignments = project.Assignments.Where(x => x.TaskUID == t.UID).ToList();
            }

            return project;
        }
Example #2
0
        public Fixer(Project badMsProject)
        {
            this.msProject = badMsProject;

            // ms project hangs when open "Change working time" with 0 resource
            var badRes = msProject.Xml.Descendants(ns + "Resource").Where(x => x.Element(ns + "UID").Value == "0").FirstOrDefault();
            badRes.Remove();
        }