Example #1
0
 public void CalendarTest()
 {
     WorkCalendarFactory calFactory = new WorkCalendarFactory();
     WorkCalendarBase calendar = calFactory.Create<DefaultCalendar>(null);
     long start = CalendarHelper.Tick2Milis(new DateTime(2008, 01, 01).Ticks);
     start += CalendarHelper.MilisPerHour();
     long duration = CalendarHelper.MilisPerHour() * 1;
     long result = calendar.AddDuration(start, duration, false);
     duration = calendar.SubstractDates(result, start, false);
 }
Example #2
0
        public void CalendarTest()
        {
            WorkCalendarFactory calFactory = new WorkCalendarFactory();
            WorkCalendarBase    calendar   = calFactory.Create <DefaultCalendar>(null);
            long start = CalendarHelper.Tick2Milis(new DateTime(2008, 01, 01).Ticks);

            start += CalendarHelper.MilisPerHour();
            long duration = CalendarHelper.MilisPerHour() * 1;
            long result   = calendar.AddDuration(start, duration, false);

            duration = calendar.SubstractDates(result, start, false);
        }
Example #3
0
        public void SetActualWorkTest()
        {
            WorkCalendarFactory calFactory = new WorkCalendarFactory();
            ContourFactory factory = new ContourFactory();
            AbstractContour contourBucket = factory.Create<StandardContour>(ContourTypes.FrontLoaded);
            WorkCalendarBase calendar = calFactory.Create<DefaultCalendar>(null);
            Task task = new Task();
            task.Start = CalendarHelper.Tick2Milis(new DateTime(2008, 01, 01).Ticks);
            Assignment assignment = new Assignment(task, calendar, contourBucket, 1.0, 0);
            long duration = CalendarHelper.MilisPerHour() * 13 + CalendarHelper.MilisPerMinute() * 20;
            assignment.Duration = duration;

            long work = assignment.GetWork(assignment.Start, assignment.End);

            assignment.SetActualWork(CalendarHelper.MilisPerMinute() * 48);
        }
Example #4
0
        public void SetActualWorkTest()
        {
            WorkCalendarFactory calFactory    = new WorkCalendarFactory();
            ContourFactory      factory       = new ContourFactory();
            AbstractContour     contourBucket = factory.Create <StandardContour>(ContourTypes.FrontLoaded);
            WorkCalendarBase    calendar      = calFactory.Create <DefaultCalendar>(null);
            Task task = new Task();

            task.Start = CalendarHelper.Tick2Milis(new DateTime(2008, 01, 01).Ticks);
            Assignment assignment = new Assignment(task, calendar, contourBucket, 1.0, 0);
            long       duration   = CalendarHelper.MilisPerHour() * 13 + CalendarHelper.MilisPerMinute() * 20;

            assignment.Duration = duration;

            long work = assignment.GetWork(assignment.Start, assignment.End);

            assignment.SetActualWork(CalendarHelper.MilisPerMinute() * 48);
        }
Example #5
0
        public void TimePhaseTest()
        {
            string fileName = @"C:\Projects\MsProjectSynchronization\MsProject\ExceptionOverlapped.xml";
            long assignmentStart = CalendarHelper.Tick2Milis(new DateTime(2008, 8, 4, 9, 0,0).Ticks);
            long assignmentFinish = CalendarHelper.Tick2Milis(new DateTime(2008, 8, 19, 3, 0,0).Ticks);
            int calendarUID = 3;
            int baseCalendarUID = 1;
            int assignmentID = 2;
            double units = 1.0;
            long duration = 24 *  CalendarHelper.MilisPerHour();
            double percentWorkComplete = 0.58;

            XmlDocument doc = new XmlDocument();
            doc.AppendChild(doc.CreateElement("ss"));

            WorkCalendarFactory calFactory = new WorkCalendarFactory();
            ContourFactory factory = new ContourFactory();
            AbstractContour contourBucket = factory.Create<StandardContour>(ContourTypes.Flat);

            WorkCalendar calendarBase =(WorkCalendar) LoadCalendar(fileName, baseCalendarUID);
            WorkCalendar calendar = (WorkCalendar)LoadCalendar(fileName, calendarUID);
            calendar.BaseCalendar = calendarBase;

            Task task = new Task();
            task.Start = assignmentStart;

            Assignment assignment = new Assignment(task, calendar, contourBucket, units, 0);
            //long duration = CalendarHelper.MilisPerHour() * 40; //+ CalendarHelper.MilisPerMinute() * 20;
            assignment.End = assignmentFinish;

            List<TimePhasedDataType> timePhasedList = LoadTimePhase(fileName, assignmentID);
            contourBucket =  factory.Create<PersonalContour>(new KeyValuePair<Assignment, TimePhasedDataType[]>(assignment, timePhasedList.ToArray()));
            XmlDocument debugdoc = DebugInterval((PersonalContour)contourBucket, assignment);

            assignment = new Assignment(task, calendar, contourBucket, units, 0);
            assignment.End = assignmentFinish;

            if (assignment.Duration != duration )
                throw new Exception("bad duration");

            long work = assignment.GetWork(assignment.Start, assignment.End);
            assignment.SetActualWork(work * percentWorkComplete);
            long actualWork = assignment.GetWork(assignment.Start, assignment.Stop);

            foreach(TimePhasedDataType timePhase in TimePhasedService.GetTimePhaseData(assignment, TimePhasedDataType.TimePhaseType.AssignmentRemainingWork))
            {
                XmlElement element = doc.CreateElement("TimePhaseData");
                XmlNode node = element.AppendChild(doc.CreateElement("Type"));
                node.InnerText = timePhase.Type.ToString();
                node = element.AppendChild(doc.CreateElement("UID"));
                node.InnerText = timePhase.UID.ToString();
                node = element.AppendChild(doc.CreateElement("Start"));
                node.InnerText = new DateTime(CalendarHelper.Milis2Tick(timePhase.Start)).ToString("yyyy-MM-ddTHH:mm:ss");
                node = element.AppendChild(doc.CreateElement("Finish"));
                node.InnerText = new DateTime(CalendarHelper.Milis2Tick(timePhase.Finish)).ToString("yyyy-MM-ddTHH:mm:ss");
                node = element.AppendChild(doc.CreateElement("Unit"));
                node.InnerText = timePhase.Unit.ToString();
                node = element.AppendChild(doc.CreateElement("Value"));
                node.InnerText = String.Format("PT{0}H{1}M{2}S", timePhase.Value / CalendarHelper.MilisPerHour(),
                                                                 (timePhase.Value % CalendarHelper.MilisPerHour()) / CalendarHelper.MilisPerMinute(),
                                                                 (timePhase.Value % CalendarHelper.MilisPerMinute()) / (CalendarHelper.MilisPerMinute() / 60));
                doc.DocumentElement.AppendChild(element);
            }
        }
Example #6
0
        public void TimePhaseTest()
        {
            string fileName            = @"C:\Projects\MsProjectSynchronization\MsProject\ExceptionOverlapped.xml";
            long   assignmentStart     = CalendarHelper.Tick2Milis(new DateTime(2008, 8, 4, 9, 0, 0).Ticks);
            long   assignmentFinish    = CalendarHelper.Tick2Milis(new DateTime(2008, 8, 19, 3, 0, 0).Ticks);
            int    calendarUID         = 3;
            int    baseCalendarUID     = 1;
            int    assignmentID        = 2;
            double units               = 1.0;
            long   duration            = 24 * CalendarHelper.MilisPerHour();
            double percentWorkComplete = 0.58;

            XmlDocument doc = new XmlDocument();

            doc.AppendChild(doc.CreateElement("ss"));

            WorkCalendarFactory calFactory    = new WorkCalendarFactory();
            ContourFactory      factory       = new ContourFactory();
            AbstractContour     contourBucket = factory.Create <StandardContour>(ContourTypes.Flat);

            WorkCalendar calendarBase = (WorkCalendar)LoadCalendar(fileName, baseCalendarUID);
            WorkCalendar calendar     = (WorkCalendar)LoadCalendar(fileName, calendarUID);

            calendar.BaseCalendar = calendarBase;

            Task task = new Task();

            task.Start = assignmentStart;

            Assignment assignment = new Assignment(task, calendar, contourBucket, units, 0);

            //long duration = CalendarHelper.MilisPerHour() * 40; //+ CalendarHelper.MilisPerMinute() * 20;
            assignment.End = assignmentFinish;

            List <TimePhasedDataType> timePhasedList = LoadTimePhase(fileName, assignmentID);

            contourBucket = factory.Create <PersonalContour>(new KeyValuePair <Assignment, TimePhasedDataType[]>(assignment, timePhasedList.ToArray()));
            XmlDocument debugdoc = DebugInterval((PersonalContour)contourBucket, assignment);

            assignment     = new Assignment(task, calendar, contourBucket, units, 0);
            assignment.End = assignmentFinish;

            if (assignment.Duration != duration)
            {
                throw new Exception("bad duration");
            }

            long work = assignment.GetWork(assignment.Start, assignment.End);

            assignment.SetActualWork(work * percentWorkComplete);
            long actualWork = assignment.GetWork(assignment.Start, assignment.Stop);



            foreach (TimePhasedDataType timePhase in TimePhasedService.GetTimePhaseData(assignment, TimePhasedDataType.TimePhaseType.AssignmentRemainingWork))
            {
                XmlElement element = doc.CreateElement("TimePhaseData");
                XmlNode    node    = element.AppendChild(doc.CreateElement("Type"));
                node.InnerText = timePhase.Type.ToString();
                node           = element.AppendChild(doc.CreateElement("UID"));
                node.InnerText = timePhase.UID.ToString();
                node           = element.AppendChild(doc.CreateElement("Start"));
                node.InnerText = new DateTime(CalendarHelper.Milis2Tick(timePhase.Start)).ToString("yyyy-MM-ddTHH:mm:ss");
                node           = element.AppendChild(doc.CreateElement("Finish"));
                node.InnerText = new DateTime(CalendarHelper.Milis2Tick(timePhase.Finish)).ToString("yyyy-MM-ddTHH:mm:ss");
                node           = element.AppendChild(doc.CreateElement("Unit"));
                node.InnerText = timePhase.Unit.ToString();
                node           = element.AppendChild(doc.CreateElement("Value"));
                node.InnerText = String.Format("PT{0}H{1}M{2}S", timePhase.Value / CalendarHelper.MilisPerHour(),
                                               (timePhase.Value % CalendarHelper.MilisPerHour()) / CalendarHelper.MilisPerMinute(),
                                               (timePhase.Value % CalendarHelper.MilisPerMinute()) / (CalendarHelper.MilisPerMinute() / 60));
                doc.DocumentElement.AppendChild(element);
            }
        }