public void RebuildProductGroupMembership(ProductGroupItem productGroup) { BackgroundTask RebuildMembershipTask = new BackgroundTask(true); RebuildMembershipTask.IsProgressDialogIndeterminate = true; RebuildMembershipTask.DoWork += RebuildMembershipTask_DoWork; RebuildMembershipTask.TaskCompleted += RebuildMembershipTask_TaskCompleted; ProductGroupToUpdate = productGroup; RebuildMembershipTask.RunTaskAsync(); }
public void DiscoverGroupMembers(ProductGroupItem productGroup) { BackgroundTask DiscoverGroupMembersTask = new BackgroundTask(true); DiscoverGroupMembersTask.IsProgressDialogIndeterminate = true; DiscoverGroupMembersTask.DoWork += DiscoverGroupMembers_DoWork; DiscoverGroupMembersTask.TaskCompleted += DiscoverGroupMembersTask_TaskCompleted; ProductGroupToUpdate = productGroup; DiscoverGroupMembersTask.RunTaskAsync(); }
//------------------------------------------------------------------------------------ /// <summary> /// Once other higher priority background tasks are complete, check to see if it's /// time to kick off a refresh of the product group membership. /// </summary> //------------------------------------------------------------------------------------ void Handle_CommitmentStatusComputationComplete() { ProductGroupItem productGroup = Planner.Instance.CurrentProductGroup; DateTime lastUpdate = productGroup.MembersLastUpdated.Date; if (productGroup != null && lastUpdate < DateTime.Today) { UpdateStage = UpdateStages.DetectingMembersToAddOrDelete; BackgroundTask updateGroupMembersTask = new BackgroundTask(false); updateGroupMembersTask.DoWork += AddOrDeleteGroupMembersTask_DoWork; updateGroupMembersTask.TaskCompleted += AddOrDeleteGroupMembersTask_TaskCompleted; ProductGroupToUpdate = productGroup; updateGroupMembersTask.RunTaskAsync(); } }
void AddOrDeleteGroupMembersTask_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { ProductGroupItem productGroup = Planner.Instance.CurrentProductGroup; if (productGroup != null) { List <string> currentMemberAliases = productGroup.MemberAliases; Dictionary <string, MemberDescriptor> newMemberDescriptors = DiscoverProductGroupMemberDescriptors(ProductGroupToUpdate); NewMemberAliases = GetAliases(newMemberDescriptors); CurrentMembers.Clear(); AddedAliases.Clear(); NewMembers.Clear(); foreach (KeyValuePair <string, MemberDescriptor> kvp in newMemberDescriptors) { MemberDescriptor member = kvp.Value; CurrentMembers.Enqueue(member); GroupMemberItem groupMemberItem = Planner.Instance.ItemRepository.GetMemberByAlias(member.Member.Alias); if (!currentMemberAliases.Contains(member.Member.Alias) || groupMemberItem == null) { NewMembers.Enqueue(member); AddedAliases.Add(member.Member.Alias); } } DeletedAliases.Clear(); foreach (string alias in currentMemberAliases) { if (!NewMemberAliases.Contains(alias)) { DeletedAliases.Add(alias); } } } }
public Dictionary <string, MemberDescriptor> DiscoverProductGroupMemberDescriptors(ProductGroupItem productGroup) { return(DiscoverProductGroupMemberDescriptors(productGroup.DevManagerAlias, productGroup.TestManagerAlias, productGroup.GroupPMAlias)); }
public List <string> DiscoverProductGroupMemberAliases(ProductGroupItem productGroup) { Dictionary <string, MemberDescriptor> memberDescriptors = DiscoverProductGroupMemberDescriptors(productGroup); return(GetAliases(memberDescriptors)); }
void Handle_UpdateUI() { if (UpdateStage == UpdateStages.DetectingMembersToAddOrDeleteComplete) { if (NewMembers.Count > 0) { MemberDescriptor newMember = NewMembers.Dequeue(); UserInformation uiMember = newMember.Member; if (!GroupMemberExists(uiMember.Alias)) { GroupMemberItem newMemberItem = ScheduleStore.Instance.CreateStoreItem <GroupMemberItem>(ItemTypeID.GroupMember); newMemberItem.BeginSaveImmediate(); newMemberItem.Alias = uiMember.Alias; newMemberItem.Discipline = newMember.Discipline; newMemberItem.CapacityPerDay = Constants.AvgCapacityPerDay; newMemberItem.InitializeWithUserInformation(uiMember); newMemberItem.SaveImmediate(); } } else { UpdateStage = UpdateStages.AddingMembersComplete; } } else if (UpdateStage == UpdateStages.AddingMembersComplete) { ProductGroupItem productGroup = Planner.Instance.CurrentProductGroup; if (AddedAliases.Count > 0 || DeletedAliases.Count > 0) { if (productGroup != null && NewMemberAliases != null && NewMemberAliases.Count > 0) { productGroup.BeginSaveImmediate(); productGroup.MemberAliases = NewMemberAliases; productGroup.SaveImmediate(); } } productGroup.MembersLastUpdated = DateTime.Today; UpdateStage = UpdateStages.UpdatingProductGroupItemComplete; } else if (UpdateStage == UpdateStages.UpdatingProductGroupItemComplete) { if (CurrentMembers.Count > 0) { MemberDescriptor currentMember = CurrentMembers.Dequeue(); GroupMemberItem memberItem = Planner.Instance.ItemRepository.GetMemberByAlias(currentMember.Member.Alias); if (memberItem != null) { Planner.Instance.WriteToEventLog("Updating GroupMemberItem information: " + memberItem.DisplayName); memberItem.BeginSaveImmediate(); memberItem.InitializeWithUserInformation(currentMember.Member); memberItem.SaveImmediate(); } } else { UpdateStage = UpdateStages.UpdatingGroupMemberInformationComplete; } } else if (UpdateStage == UpdateStages.UpdatingGroupMemberInformationComplete) { Planner.Instance.WriteToEventLog("UpdatingGroupMemberInformationComplete"); UpdateStage = UpdateStages.UpdateCycleComplete; } }