private void OnRemovedClientsFromChat(object sender, RemovedClientsFromChatEventArgs container) { Dictionary <string, bool> infoClientsAtChatForVM = new Dictionary <string, bool>(); foreach (var item in container.Clients) { if (_handlerConnection.InfoClientsAtChat.TryGetValue(item, out bool activityClient)) { infoClientsAtChatForVM.Add(item, activityClient); } } RemovedClientsFromChat?.Invoke(this, new RemovedClientsFromChatVmEventArgs(container.NameOfRemover, container.NumberChat, infoClientsAtChatForVM)); }
public async void OnRemovedClientsFromChat(object sender, RemovedClientsFromChatEventArgs container) { if (_cachedClientProperies.TryGetValue(container.NameOfRemover, out ClientProperties clientProperties) && InfoChats.TryGetValue(container.NumberChat, out InfoChat infoChat)) { if (container.NameOfRemover == infoChat.OwnerChat) { List <Guid> idClientsForRemoveChat = new List <Guid>();//Создание списка id для рассылки им сообщений List <string> NamesForChange = container.Clients; await Task.Run(() => CreateClientListForChangeInfoChat(ref NamesForChange, container.NumberChat, ref idClientsForRemoveChat)); var SendMessageForRemoveChat = Task.Run(() => _server.Send(idClientsForRemoveChat, Container.GetContainer(nameof(RemoveChatResponse), new RemoveChatResponse(container.NameOfRemover, container.NumberChat)))); InfoChat bufferForUpdate = infoChat; foreach (var item in container.Clients) { infoChat.NameOfClients.Remove(item); } List <Guid> idClientsForRemovedClient = new List <Guid>(); await Task.Run(() => AddNamesForMail(infoChat.NameOfClients, ref idClientsForRemovedClient)); var SendMessageChangeClientList = Task.Run(() => _server.Send(idClientsForRemovedClient, Container.GetContainer(nameof(RemoveClientFromChatResponse), new RemoveClientFromChatResponse(container.NameOfRemover, container.Clients, container.NumberChat))) ); InfoChats.TryUpdate(container.NumberChat, infoChat, bufferForUpdate); if (!await Task.Run(() => _data.RemoveClientFromChat(new RemoveClientFromChat { NumberChat = container.NumberChat, NameOfClients = container.Clients }))) { //Ошибка на удаление в БД } } } }