Esempio n. 1
0
        private void GotoMainMenuRequestHandler()
        {
            var request = new GoToMainMenuRequest();

            request.Sender = UserName;

            responseHandlers.Add(request.Id, GotoMainMenuResponseHandler);
            SendMessageAesEncrypted(request, serverKey);

            while (responseHandlers.ContainsKey(request.Id))
            {
            }
        }
Esempio n. 2
0
        private void GoToMainMenuHandler(string requestInJson)
        {
            GoToMainMenuRequest request = JsonSerializer.Deserialize <GoToMainMenuRequest>(requestInJson);

            var response = new ShowUsersInChatResponse
            {
                RequestId = request.Id
            };

            try
            {
                User user = server.UserRepository.GetByName(request.Sender);

                if (user == null)
                {
                    throw new UserNotFoundException(request.Sender);
                }

                if (user.State != UserState.InChat && user.State != UserState.Authorized)
                {
                    throw new NotEnoughRightsException(request.Sender, user.State, ClientAction.GoToMainMenu);
                }

                user.CurrentChat.RemoveUser(user.Name);
                user.CurrentChat = null;
                user.State       = UserState.Authorized;
                response.Code    = StatusCode.Ok;

                SendMessageAesEncrypted(response, ClientAesKey);
            }
            catch (NedoGramException nedoGramException)
            {
                response.Message = nedoGramException.Message;
                response.Code    = StatusCode.ClientError;

                SendMessageAesEncrypted(response, ClientAesKey);

                Console.WriteLine($"{request.Action}: {request.Sender} - {nedoGramException.Message}");
            }
            catch (Exception systemException)
            {
                response.Message = "Internal error";
                response.Code    = StatusCode.ServerError;

                SendMessageAesEncrypted(response, ClientAesKey);

                Console.WriteLine($"{request.Action}: {request.Sender} - {systemException.Message}");
            }
        }