Example #1
0
        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));
        }
Example #2
0
        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
                    })))
                    {
                        //Ошибка на удаление в БД
                    }
                }
            }
        }