private void StartGroupChat()
        {
            bool      end        = false;
            GroupChat group      = null;
            var       clientGuid = _data.ClientsConnectedInServer.GetGuid(_client);

            try
            {
                SendAllClientGroups(clientGuid);

                string dataReceived = _requests.GetStringMessage(_client);
                if (dataReceived == "0")
                {
                    _logger.LogInformation("client dont want to enter chat in any group");
                }
                else
                {
                    group = _data.AllGroupsChat.GetGroupsChat().Where(g => g.Name == dataReceived).First();
                    _logger.LogInformation($"client {clientGuid} enter to group chat {group.Name}");
                    _data.AllGroupsChat.AddClientConnected(group, _client);
                    SendMessagesHistory(group);

                    while (!end)
                    {
                        dataReceived = _requests.GetStringMessage(_client);

                        if (dataReceived == "0")
                        {
                            MessageRequest messageRequest = new MessageRequest(MessageKey.Exit, "0");
                            _requests.SendModelMessage(_client, messageRequest);

                            ClientOutOfGroup(group);
                            _data.AllGroupsChat.RemoveClientUnConnected(group, _client);
                            end = true;
                        }
                        else
                        {
                            string message = $"{clientGuid} send:  {dataReceived}";
                            SendMessageToEachClient(group, message);
                        }
                    }
                }
            }
            catch (Exception)
            {
                end = true;
                _data.AllGroupsChat.RemoveClientUnConnected(group, _client);
                ChatUtils.RemoveClientWhenOut(_client, clientGuid, _data);
            }


            _logger.LogInformation("client out chat");
        }
Ejemplo n.º 2
0
        private void StartGlobalChat()
        {
            bool end        = false;
            var  clientGuid = _data.ClientsInGlobalChat.GetClient(_client);

            SendMessagesHistory();
            SendAllAboutEnter(clientGuid);

            while (!end)
            {
                try
                {
                    string dataReceivedType = _requests.GetStringMessage(_client);

                    if (dataReceivedType == "0")
                    {
                        _data.ClientsInGlobalChat.Remove(clientGuid);
                        SendAllAboutExist(clientGuid);
                        end = true;
                    }
                    else
                    {
                        if (dataReceivedType == MessageType.STRING.ToString())
                        {
                            string dataReceived = _requests.GetStringMessage(_client);
                            SendAllStringMessage(clientGuid, dataReceived);
                        }
                        else if (dataReceivedType == MessageType.PIC.ToString())
                        {
                            _requests.GetPictureMessage(_client);
                            SendAllPicMessage(clientGuid);
                        }
                        else
                        {
                            _data.ClientsInGlobalChat.Remove(clientGuid);
                            SendAllAboutExist(clientGuid);
                            end = true;
                        }
                    }
                }
                catch (Exception)
                {
                    end = true;
                    ChatUtils.RemoveClientWhenOut(_client, clientGuid, _data);
                    _data.ClientsInGlobalChat.Remove(clientGuid);
                }
            }
        }
        public void StartManagerSettings()
        {
            Guid clientGuid = _data.ClientsConnectedInServer.GetGuid(_client);

            try
            {
                AllGroupsManagedByClient(clientGuid);
                string    dataReceived = _requests.GetStringMessage(_client);
                GroupChat oldGroupChat = null;

                if (dataReceived == "0")
                {
                    _logger.LogInformation($"client dont want to enter manager settings to any group");
                }
                else
                {
                    oldGroupChat = SendGroup(dataReceived);
                    SendAllConecctedClients(clientGuid);

                    GroupChat newGroupChat = WaitToGetGroupFromClient();
                    AddGroup(newGroupChat, oldGroupChat, clientGuid);
                    _logger.LogInformation($"client {clientGuid} change settings group {newGroupChat.Name}");
                }
            }
            catch (Exception)
            {
                ChatUtils.RemoveClientWhenOut(_client, clientGuid, _data);
            }
        }
Ejemplo n.º 4
0
        private void LeaveGroup()
        {
            var clientGuid = _data.ClientsConnectedInServer.GetGuid(_client);

            try
            {
                SendAllClientGroups(clientGuid);

                string dataReceived = _requests.GetStringMessage(_client);

                if (dataReceived == "0")
                {
                    _logger.LogInformation($"client {clientGuid} dont want to leave any group");
                }
                else
                {
                    RemoveParticipantFromGroup(dataReceived, clientGuid);
                    RemoveManagerFromGroup(dataReceived, clientGuid);

                    _logger.LogInformation($"client {clientGuid} leave group {dataReceived}");
                }
            }
            catch (Exception)
            {
                ChatUtils.RemoveClientWhenOut(_client, clientGuid, _data);
            }
        }
        private void StartPrivateChat()
        {
            Guid clientGuid = _data.ClientsConnectedInServer.GetGuid(_client);
            Guid guidToSend;

            try
            {
                SendAllClientsConnected(clientGuid);

                string    dataReceived = _requests.GetStringMessage(_client);
                TcpClient clientSend;

                Guid.TryParse(dataReceived, out guidToSend);

                if (_data.ClientsConnectedInServer.Clients.TryGetValue(guidToSend, out clientSend))
                {
                    bool end = false;
                    AddPrivateChat(clientGuid, guidToSend);
                    SendMessagesHistory(clientGuid, guidToSend);

                    while (!end)
                    {
                        dataReceived = _requests.GetStringMessage(_client);

                        if (dataReceived == "0")
                        {
                            ExistChat(clientGuid, guidToSend);
                            end = true;
                        }
                        else
                        {
                            SendMessage(dataReceived, clientGuid, guidToSend, clientSend);
                        }
                    }
                }
                else
                {
                    string message = $"fail";
                    ChatUtils.SandStringMessage(_client, _requests, message);
                }
            }
            catch (Exception)
            {
                ChatUtils.RemoveClientWhenOut(_client, clientGuid, _data);
            }
        }
        public void Run()
        {
            _requests.SendStringMessage(_client, ClientOptions.PRIVATE_CHAT.ToString());

            try
            {
                string messageRecive;
                messageRecive = _requests.GetStringMessage(_client);
                _system.Write(messageRecive);

                string messageToSend = _system.ReadString();
                _requests.SendStringMessage(_client, messageToSend);
                messageRecive = _requests.GetStringMessage(_client);

                if (messageRecive == "success")
                {
                    endConnection = false;
                    Thread ctThread = new Thread(GetMessage);
                    ctThread.Start();

                    while (!endConnection)
                    {
                        _system.Write("enter message, if you wand to exist chat enter: 0");
                        string message = _system.ReadString();

                        if (message == "0")
                        {
                            endConnection = true;
                        }
                        _requests.SendStringMessage(_client, message);
                    }
                }
                else
                {
                    _system.Write("you enter guid that not exist");
                }
            }
            catch (Exception e)
            {
            }
        }
Ejemplo n.º 7
0
        private void GetClientChoice()
        {
            while (true)
            {
                if (!_client.Connected)
                {
                    break;
                }
                else
                {
                    try
                    {
                        string        dataReceived = _requests.GetStringMessage(_client);
                        ClientOptions choice;

                        if (Enum.TryParse(dataReceived, out choice))
                        {
                            switch (choice)
                            {
                            case ClientOptions.GLOBAL_CHAT:
                                _data.ClientsInGlobalChat.Add(_data.ClientsConnectedInServer.GetGuid(_client), _client);
                                Thread globalChat = _clientOptionsFactory.AddClientOptions(ClientOptions.GLOBAL_CHAT, _data, _client, _logger, _requests).Run();
                                globalChat.Join();
                                break;

                            case ClientOptions.PRIVATE_CHAT:
                                Thread privateChat = _clientOptionsFactory.AddClientOptions(ClientOptions.PRIVATE_CHAT, _data, _client, _logger, _requests).Run();
                                privateChat.Join();
                                break;

                            case ClientOptions.CREATE_GROUP_CHAT:
                                Thread CreateGroupChat = _clientOptionsFactory.AddClientOptions(ClientOptions.CREATE_GROUP_CHAT, _data, _client, _logger, _requests).Run();
                                CreateGroupChat.Join();
                                break;

                            case ClientOptions.GROUP_CHAT:
                                Thread EnterGroupChat = _clientOptionsFactory.AddClientOptions(ClientOptions.GROUP_CHAT, _data, _client, _logger, _requests).Run();
                                EnterGroupChat.Join();
                                break;

                            case ClientOptions.MANAGER_SETTINGS:
                                Thread managerSettings = _clientOptionsFactory.AddClientOptions(ClientOptions.MANAGER_SETTINGS, _data, _client, _logger, _requests).Run();
                                managerSettings.Join();
                                break;

                            case ClientOptions.LEAVE_GROUP_CHAT:
                                Thread leavrGroupChat = _clientOptionsFactory.AddClientOptions(ClientOptions.LEAVE_GROUP_CHAT, _data, _client, _logger, _requests).Run();
                                leavrGroupChat.Join();
                                break;

                            default:
                                break;
                            }
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
            }
        }