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