Ejemplo n.º 1
0
 public TimeEventArgs(object sender, TimePhase timePhase)
 {
     Sender    = sender;
     TimePhase = timePhase;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 初始化时间分段
        /// </summary>
        private List<TimePhase> InitTimePhases()
        {
            DateTime now = DateTimeUtil.now();
            DateTime today = new DateTime(now.Year, now.Month, now.Day);

            timePhases = new List<TimePhase>();
            TimePhase phase;

            //两天
            phase = new TimePhase();
            phase.name = "0";
            phase.begin = today.AddDays(-2);
            phase.end = now;
            timePhases.Add(phase);

            //四天
            phase = new TimePhase();
            phase.name = "1";
            phase.begin = today.AddDays(-4);
            phase.end = today.AddDays(-2);
            timePhases.Add(phase);

            //一周
            phase = new TimePhase();
            phase.name = "2";
            phase.begin = today.AddDays(-7);
            phase.end = today.AddDays(-4);
            timePhases.Add(phase);

            //半个月
            //先获取一个月的时间差 然后除以2加一就是半个月的时间差
            int days = today.Subtract(today.AddMonths(-1)).Days;
            phase = new TimePhase();
            phase.name = "3";
            phase.begin = today.AddDays(-(days / 2));
            phase.end = today.AddDays(-7);
            timePhases.Add(phase);

            //一个月
            phase = new TimePhase();
            phase.name = "4";
            phase.begin = today.AddMonths(-1);
            phase.end = today.AddDays(-(days / 2));
            timePhases.Add(phase);

            //三个月
            phase = new TimePhase();
            phase.name = "5";
            phase.begin = today.AddMonths(-3);
            phase.end = today.AddMonths(-1);
            timePhases.Add(phase);

            //更长时间
            phase = new TimePhase();
            phase.name = "6";
            phase.begin = DateTime.MinValue;
            phase.end = today.AddMonths(-3);
            timePhases.Add(phase);

            return timePhases;
        }
Ejemplo n.º 3
0
        public void TimesheetTest()
        {
            Guid guidYaroslav = Guid.Parse("9f52b233-4135-e511-80d0-00155d646d0b");
            //string emailYaroslav = "*****@*****.**";

            Guid guidAlex = Guid.Parse("a72f2f98-bd2f-e511-80c9-00155d60910a");
            //string emailAlex = "*****@*****.**";

            Guid guidKiryl = Guid.Parse("79d8d031-0801-e711-80d3-00155d74dc09");
            //string emailKiryl = "*****@*****.**";

            int  oDataEntitesPerRequest = int.Parse(ConfigurationManager.AppSettings["ODataEntitesPerRequest"]);
            int  oDataMaxQueryLength    = int.Parse(ConfigurationManager.AppSettings["ODataMaxQueryLength"]);
            int  requestTimeout         = int.Parse(ConfigurationManager.AppSettings["RequestTimeout"]);
            bool isProjectOnline        = Boolean.Parse(ConfigurationManager.AppSettings["IsProjectOnline"]);

            ProjectOnlineAccessService projectOnlineAccessService = new ProjectOnlineAccessService(ConfigurationManager
                                                                                                   .AppSettings["ProjectOnlineUrl"], ConfigurationManager.AppSettings["ProjectOnlineUserName"],
                                                                                                   ConfigurationManager.AppSettings["ProjectOnlinePassword"], isProjectOnline, Guid.NewGuid());

            ProjectOnlineODataService projectOnlineODataService = new ProjectOnlineODataService(ConfigurationManager
                                                                                                .AppSettings["ProjectOnlineUrl"], ConfigurationManager.AppSettings["ProjectOnlineUserName"],
                                                                                                ConfigurationManager.AppSettings["ProjectOnlinePassword"], isProjectOnline);


            List <ODataAssignment> assignments = projectOnlineODataService
                                                 .GetODataAssignments(Guid.Parse("8cc0d309-bd02-e711-80d4-00155d70390b"));

            ODataAssignment assignmentYaroslavYaroslavHours = assignments
                                                              .FirstOrDefault(x => x.TaskName == "Yaroslav Hours" && x.ResourceId == guidYaroslav);
            ODataAssignment assignmentYaroslavAlexHours = assignments
                                                          .FirstOrDefault(x => x.TaskName == "Alex Hours" && x.ResourceId == guidYaroslav);

            ODataAssignment assignmentKyrilKyrilHours = assignments
                                                        .FirstOrDefault(x => x.TaskName == "Kyril Hours" && x.ResourceId == guidKiryl);
            ODataAssignment assignmentKyrilAlexHours = assignments
                                                       .FirstOrDefault(x => x.TaskName == "Alex Hours" && x.ResourceId == guidKiryl);

            if (assignmentYaroslavYaroslavHours == null || assignmentYaroslavAlexHours == null ||
                assignmentKyrilKyrilHours == null || assignmentKyrilAlexHours == null)
            {
                return;
            }
            //EnterpriseResource resourceAlex = projectOnlineAccessService.ProjectContext.EnterpriseResources.GetByGuid(guidAlex);
            //projectOnlineAccessService.ProjectContext.Load(resourceAlex.Assignments);
            //EnterpriseResource resourceKyril = projectOnlineAccessService.ProjectContext.EnterpriseResources.GetByGuid(guidKiryl);
            //projectOnlineAccessService.ProjectContext.Load(resourceKyril.Assignments);

            EnterpriseResource resourceYaroslav  = projectOnlineAccessService.ProjectContext.EnterpriseResources.GetByGuid(guidYaroslav);
            TimePhase          timePhaseYaroslav = resourceYaroslav.Assignments.GetTimePhase(new DateTime(2017, 8, 22), new DateTime(2017, 8, 22));

            projectOnlineAccessService.ProjectContext.Load(resourceYaroslav.Assignments);
            projectOnlineAccessService.ProjectContext.Load(timePhaseYaroslav);
            projectOnlineAccessService.ProjectContext.Load(timePhaseYaroslav.Assignments);
            projectOnlineAccessService.ProjectContext.ExecuteQuery();

            foreach (StatusAssignment statusAssignment in timePhaseYaroslav.Assignments)
            {
                if (statusAssignment.Id == assignmentYaroslavYaroslavHours.AssignmentId)
                {
                    statusAssignment.ActualWork = "1h";
                }
                if (statusAssignment.Id == assignmentYaroslavAlexHours.AssignmentId)
                {
                    statusAssignment.ActualWork = "2h";
                }
                if (statusAssignment.Id == assignmentKyrilKyrilHours.AssignmentId)
                {
                    statusAssignment.ActualWork = "3h";
                }
                if (statusAssignment.Id == assignmentKyrilAlexHours.AssignmentId)
                {
                    statusAssignment.ActualWork = "4h";
                }
            }
            timePhaseYaroslav.Assignments.Update();
            timePhaseYaroslav.Assignments.SubmitAllStatusUpdates($"Submitted by CSOM on {DateTime.Now}");
            projectOnlineAccessService.ProjectContext.ExecuteQuery();
            var temp = 1;
            //projectOnlineAccessService.ProjectContext.Load(projectOnlineAccessService.ProjectContext.TimeSheetPeriods, c => c.Where(p => p.Start <= DateTime.Now && p.End >= DateTime.Now).IncludeWithDefaultProperties(p => p.TimeSheet, p => p.TimeSheet.Lines.Where(l => l.LineClass == TimeSheetLineClass.StandardLine).IncludeWithDefaultProperties(l => l.Assignment, l => l.Assignment.Task, l => l.Work)));

            //projectOnlineAccessService.ProjectContext.ExecuteQuery();
        }