public TimeEventArgs(object sender, TimePhase timePhase) { Sender = sender; TimePhase = timePhase; }
/// <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; }
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(); }