public void AddPlannedHoursToItem(string backlogItemUId, string roleUId, decimal hoursToAdd) { BacklogItem item = GetBacklogItem(backlogItemUId); if (item == null) { throw new WebFaultException <string>("Backlog item not found to replan hours", System.Net.HttpStatusCode.NotFound); } Project project = projectsService.GetProject(item.ProjectUId); // if is not a scrum master ignores it and return if (!project.HasPermission(authorizationService.SignedMemberProfile.MemberUId, PermissionSets.SCRUM_MASTER)) { return; } PlannedHour hours = item.CurrentPlannedHours.SingleOrDefault(h => h.RoleUId == roleUId); if (hours == null) { hours = new PlannedHour() { RoleUId = roleUId, BacklogItemUId = backlogItemUId, Hours = 0, PlanningNumber = project.CurrentPlanningNumber }; item.PlannedHours.Add(hours); } hours.Hours += hoursToAdd; if (hours.Hours < 0) { hours.Hours = 0; } backlogRepository.SaveBacklogItem(item); }
public void AddPlannedHoursToItem(string backlogItemUId, string roleUId, decimal hoursToAdd) { BacklogItem item = GetBacklogItem(backlogItemUId); if (item == null) throw new WebFaultException<string>("Backlog item not found to replan hours", System.Net.HttpStatusCode.NotFound); Project project = projectsService.GetProject(item.ProjectUId); // if is not a scrum master ignores it and return if (!project.HasPermission(authorizationService.SignedMemberProfile.MemberUId, PermissionSets.SCRUM_MASTER)) return; PlannedHour hours = item.CurrentPlannedHours.SingleOrDefault(h => h.RoleUId == roleUId); if (hours == null) { hours = new PlannedHour() { RoleUId = roleUId, BacklogItemUId = backlogItemUId, Hours = 0, PlanningNumber = project.CurrentPlanningNumber }; item.PlannedHours.Add(hours); } hours.Hours += hoursToAdd; if (hours.Hours < 0) hours.Hours = 0; backlogRepository.SaveBacklogItem(item); }
internal void DuplicateBacklogItemHoursSameProject(BacklogItem newItem, BacklogItem fromItem, int? sprintNumber) { newItem.PlannedHours = new List<PlannedHour>(); foreach (PlannedHour h in fromItem.CurrentPlannedHours) { if (Project.Roles.Any(r => r.RoleUId == h.RoleUId)) { PlannedHour hour = new PlannedHour { BacklogItemUId = newItem.BacklogItemUId, Hours = h.Hours, SprintNumber = sprintNumber, PlanningNumber = Project.CurrentPlanningNumber, RoleUId = h.RoleUId }; newItem.PlannedHours.Add(hour); } } }
internal void DuplicateBacklogItemHours(BacklogItem newItem, BacklogItem fromItem, int? sprintNumber) { newItem.PlannedHours = new List<PlannedHour>(); Role[] orderedRoles = Project.Roles.OrderBy(r => r.PermissionSet).ThenBy(r => r.RoleName).ThenBy(r => r.RoleShortName).ToArray(); for(int i=0; i<orderedRoles.Length && i<fromItem.PlannedHours.Count; i++) { PlannedHour h = fromItem.PlannedHours[i]; PlannedHour hour = new PlannedHour { BacklogItemUId = newItem.BacklogItemUId, Hours = h.Hours, SprintNumber = sprintNumber, PlanningNumber = Project.CurrentPlanningNumber, RoleUId = orderedRoles[i].RoleUId }; newItem.PlannedHours.Add(hour); } }
private void SetIdealHours() { idealHours = new List<PlannedHour>(); if (ItemSize != null && ItemSize.ItemSize != null && SuggestedHours!=null) { foreach (PlannedHour h in SuggestedHours) { PlannedHour i = new PlannedHour() { Role = h.Role, Hours = 0 }; if (ItemSize.ItemSize.SizeIdealHours != null) { SizeIdealHour ideal = ItemSize.ItemSize.SizeIdealHours.SingleOrDefault(ih => ih.RoleShortName.ToLower() == h.Role.RoleShortName.ToLower()); if (ideal != null) i.Hours = ideal.Hours * SizeFactor; } idealHours.Add(i); } } OnPropertyChanged("IdealHours"); }