private void InitProjectOnlineAccessService() { bool isProjectOnline = Boolean.Parse(ConfigurationManager.AppSettings["IsProjectOnline"]); projectOnlineAccessService = new ProjectOnlineAccessService(ConfigurationManager .AppSettings["ProjectOnlineUrl"], ConfigurationManager.AppSettings["ProjectOnlineUserName"], ConfigurationManager.AppSettings["ProjectOnlinePassword"], isProjectOnline, Guid.Empty); projectOnlineODataService = new ProjectOnlineODataService(ConfigurationManager .AppSettings["ProjectOnlineUrl"], ConfigurationManager.AppSettings["ProjectOnlineUserName"], ConfigurationManager.AppSettings["ProjectOnlinePassword"], isProjectOnline); projectOnlineAccessService.InitCache(); projectOnlineODataService.InitCache(); }
public static DataFromDbViewModel GetDataFromDbViewModel(ProjectOnlineODataService projectOnlineODataService, UnitOfWork unitOfWork, bool isWorklogs) { StagingBusinessService stagingBusinessService = new StagingBusinessService(unitOfWork); SyncSystemBusinessService syncSystemBusinessService = new SyncSystemBusinessService(unitOfWork); ProjectServerSystemLinkBusinessService projectServerSystemLinkBusinessService = new ProjectServerSystemLinkBusinessService(projectOnlineODataService, unitOfWork); MasterWorklogBusinessService masterWorklogBusinessService = new MasterWorklogBusinessService(unitOfWork); MasterBusinessService masterBusinessService = new MasterBusinessService(unitOfWork); DateTime startDateTimesheetPeriods = projectOnlineODataService.GetODataTimesheetPeriods().Select(x => x.StartDate).Min(); DateTime endDateTimesheetPeriods = projectOnlineODataService.GetODataTimesheetPeriods().Select(x => x.EndDate).Max(); DataFromDbViewModel dataFromDbViewModel = new DataFromDbViewModel { SyncSystems = syncSystemBusinessService.GetSyncSystemList(), ProjectServerSystemLinks = projectServerSystemLinkBusinessService.GetList() }; stagingBusinessService.RemoveDoneStagings(); dataFromDbViewModel.StagingsAll = stagingBusinessService.GetAllStagings(isWorklogs); dataFromDbViewModel.MasterWorklogs = masterWorklogBusinessService.GetActualMasterWorklogs(dataFromDbViewModel.StagingsAll, dataFromDbViewModel.SyncSystems, startDateTimesheetPeriods, endDateTimesheetPeriods); List <int> stagingIds = dataFromDbViewModel.StagingsAll.Select(x => x.StagingId).ToList(); //stagingBusinessService.SetStagingsRecordState(stagingIds, // isWorklogs ? ProjectServerConstants.RecordStateActual : ProjectServerConstants.RecordStateGeneral, // RecordStateConst.Pending); dataFromDbViewModel.CustomValuesAll = stagingBusinessService .GetCustomValues(stagingIds); List <VStagingFieldMappingValue> lastUpdateUsersCustomValues = dataFromDbViewModel.CustomValuesAll .Where(x => x.StagingId.HasValue && stagingIds.Contains(x.StagingId.Value) && x.EpmFieldName == ProjectServerConstants.LastUpdateUser) .ToList(); List <AssignmentInfo> assignees = dataFromDbViewModel.StagingsAll .Where(x => !String.IsNullOrEmpty(x.Assignee)) .Select(x => new AssignmentInfo { IssueKey = x.IssueKey, IssueId = x.IssueId, SystemId = x.SystemId, AuthorKey = x.Assignee }).ToList(); List <AssignmentInfo> lastUpdateUsers = (from staging in dataFromDbViewModel.StagingsAll join lu in lastUpdateUsersCustomValues on staging.StagingId equals lu.StagingId select new AssignmentInfo { IssueKey = staging.IssueKey, IssueId = staging.IssueId, SystemId = staging.SystemId, AuthorKey = lu.Value }).ToList(); List <AssignmentInfo> worklogUsers = (from staging in dataFromDbViewModel.StagingsAll join worklog in dataFromDbViewModel.MasterWorklogs on new { staging.SystemId, staging.IssueId } equals new { worklog.SystemId, worklog.IssueId } select new AssignmentInfo { IssueKey = staging.IssueKey, IssueId = staging.IssueId, SystemId = staging.SystemId, AuthorKey = worklog.AuthorKey }).ToList(); dataFromDbViewModel.Assignments = lastUpdateUsers.Union(assignees).Union(worklogUsers).Distinct(new AssignmentInfoComparer()).ToList(); foreach (AssignmentInfo assignmentInfo in dataFromDbViewModel.Assignments) { ODataResource resource = projectOnlineODataService.GetODataResource(assignmentInfo.AuthorKey); if (resource != null) { assignmentInfo.ResourceUid = resource.ResourceId; } } dataFromDbViewModel.Assignments = dataFromDbViewModel.Assignments.Where(x => x.ResourceUid != Guid.Empty).ToList(); //List<string> issueKeysCurrentLevel = dataFromDbViewModel.StagingsAll // .Where(x => x.IsSubTask && !String.IsNullOrEmpty(x.ParentIssueKey)) // .Select(x => x.ParentIssueKey).Distinct().ToList(); dataFromDbViewModel.ParentIssues = new List <Master>(); List <string> issueKeysCurrentLevel = dataFromDbViewModel.StagingsAll .Where(x => !String.IsNullOrEmpty(x.ParentIssueKey)) .Select(x => x.ParentIssueKey).Distinct().ToList(); List <Master> parentIssuesCurrentLevel = masterBusinessService.GetMasters(issueKeysCurrentLevel); dataFromDbViewModel.ParentIssues.AddRange(parentIssuesCurrentLevel); while (parentIssuesCurrentLevel.Count != 0) { issueKeysCurrentLevel = parentIssuesCurrentLevel .Where(x => !String.IsNullOrEmpty(x.ParentIssueKey)) .Select(x => x.ParentIssueKey).Distinct().ToList(); parentIssuesCurrentLevel = masterBusinessService.GetMasters(issueKeysCurrentLevel); dataFromDbViewModel.ParentIssues.AddRange(parentIssuesCurrentLevel); } return(dataFromDbViewModel); }
public ProjectServerSystemLinkBusinessService(ProjectOnlineODataService projectOnlineODataService, UnitOfWork unitOfWork) : base(unitOfWork) { this.projectOnlineODataService = projectOnlineODataService; }
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(); }