void RebuildMembershipTask_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { BackgroundTask task = e.Argument as BackgroundTask; task.ReportProgress(0, "Updating Product Group Membership:", "Re-building the list of all the members of your team..."); Dictionary <string, MemberDescriptor> memberDescriptors = DiscoverProductGroupMemberDescriptors(ProductGroupToUpdate); foreach (KeyValuePair <string, MemberDescriptor> kvp in memberDescriptors) { MemberDescriptor member = kvp.Value; UserInformation uiMember = member.Member; if (!GroupMemberExists(uiMember.Alias)) { task.ReportProgress(0, "Adding New Team Member:", uiMember.Alias); GroupMemberItem newMember = ScheduleStore.Instance.CreateStoreItem <GroupMemberItem>(ItemTypeID.GroupMember); newMember.Alias = uiMember.Alias; newMember.Discipline = member.Discipline; newMember.CapacityPerDay = Constants.AvgCapacityPerDay; newMember.InitializeWithUserInformation(uiMember); newMember.SaveNewItem(); } } ProductGroupToUpdate.MemberAliases = GetAliases(memberDescriptors); }
//------------------------------------------------------------------------------------ /// <summary> /// Returns a sorted list of all product group members, including an entry for Active /// and Closed, appropriate for a list of AssignedTo members. /// </summary> //------------------------------------------------------------------------------------ public AsyncObservableCollection <GroupMemberItem> GetAssignableGroupMembers() { if (m_assignableMembers == null) { m_assignableMembers = GroupMemberItems.ToCollection(); SortMembersByDisplayName(m_assignableMembers); m_assignableMembers.Insert(0, GroupMemberItem.GetDummyActiveMember()); m_assignableMembers.Insert(1, GroupMemberItem.GetDummyExternalTeamMember()); } return(m_assignableMembers); }
public void AddMember(CustomerDTO customer) { if (Members.Any(x => x.Customer.GlobalId == customer.GlobalId)) { BAMessageBox.ShowError("Error_CustomerGroupDetailsViewModel_AddMember_AlreadyInGroup".TranslateInstructor()); return; } var viewModel = new GroupMemberItem(customer); Members.Add(viewModel); ValidateMembers(); ValidateCustomers(); }
public void FromBytes(byte[] buffer, int index) { try { int count = BitConverter.ToInt32(buffer, index); index += 4; for (int i = 0; i < count; ++i) { GroupMemberItem item = new GroupMemberItem(); item.FromBytes(buffer, index, out int length); index += length; Members.Add(item); } } catch { } }
void CreateDiscoveredGroupMembers_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { BackgroundTask task = e.Argument as BackgroundTask; string parentProductGroupItemKey = task.TaskArgs as string; foreach (MemberDescriptor member in DiscoveredGroupMembers) { UserInformation uiMember = member.Member; if (!GroupMemberExists(uiMember.Alias)) { task.ReportProgress(0, "Adding New Team Member:", uiMember.Alias); GroupMemberItem newMember = ScheduleStore.Instance.CreateStoreItem <GroupMemberItem>(ItemTypeID.GroupMember); newMember.ParentProductGroupKey = parentProductGroupItemKey; newMember.Alias = uiMember.Alias; newMember.Discipline = member.Discipline; newMember.CapacityPerDay = Constants.AvgCapacityPerDay; newMember.InitializeWithUserInformation(uiMember); newMember.SaveNewItem(); } } }
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 bool GroupMemberExists(string alias) { GroupMemberItem member = Planner.Instance.ItemRepository.GetMemberByAlias(alias); return(member != null); }
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; } }