/// <summary>
        /// Atualiza o PIN do usuário.
        /// </summary>
        /// <param name="msg"></param>
        public static void UpdateUserPin(NetIncomingMessage msg)
        {
            var id  = msg.ReadInt32();
            var pin = msg.ReadString();

            LoginPacket.UpdatePin(id, pin);
        }
        /// <summary>
        /// Atualiza o número de tentativas PIN.
        /// </summary>
        /// <param name="msg"></param>
        public static void UpdateUserPinAttempt(NetIncomingMessage msg)
        {
            var id    = msg.ReadInt32();
            var value = msg.ReadByte();

            LoginPacket.UpdatePinAttempt(id, value);
        }
        /// <summary>
        /// Altera o cash do usuário.
        /// </summary>
        /// <param name="msg"></param>
        public static void UpdateUserCash(NetIncomingMessage msg)
        {
            var id    = msg.ReadInt32();
            var value = msg.ReadInt32();

            LoginPacket.UpdateCash(id, value);
        }
        /// <summary>
        /// Adiciona um novo serviço à conta de usuário.
        /// </summary>
        /// <param name="msg"></param>
        public static void InsertUserService(NetIncomingMessage msg)
        {
            var accountID = msg.ReadInt32();
            var serviceID = msg.ReadInt32();
            var days      = msg.ReadInt32();

            LoginPacket.InsertUserService(accountID, serviceID, days);
        }
        /// <summary>
        /// Bloqueia o usuário por determinado tempo.
        /// </summary>
        /// <param name="msg"></param>
        public static void UpdateUserBan(NetIncomingMessage msg)
        {
            var id      = msg.ReadInt32();
            var minutes = msg.ReadInt16();
            var reason  = msg.ReadString();

            LoginPacket.UpdateBanAccount(id, minutes, reason);
        }
        /// <summary>
        /// Indica que o usuário se desconectou.
        /// </summary>
        /// <param name="msg"></param>
        public static void UpdateUserDisconnect(NetIncomingMessage msg)
        {
            var id       = msg.ReadInt32();
            var username = msg.ReadString();
            var ip       = msg.ReadString();

            Authentication.RemoveAccount(id);

            LoginPacket.UpdateUserDisconnect(id, ip);
        }
        /// <summary>
        /// Realiza a desconexão do usuário nos servidores.
        /// </summary>
        /// <param name="msg"></param>
        public static void DisconnectPlayer(NetIncomingMessage msg)
        {
            var account = msg.ReadString();
            var user    = Authentication.FindUserByAccount(account);

            if (user == null)
            {
                return;
            }

            Authentication.RemoveAccount(user.AccountID);
            LoginPacket.DisconnectPlayer(user.AccountID);
        }
        /// <summary>
        /// Indica que o usuário conectou ao world server.
        /// </summary>
        /// <param name="msg"></param>
        public static void UpdateUserStatus(NetIncomingMessage msg)
        {
            var accountID = msg.ReadInt32();
            var username  = msg.ReadString();
            var server    = Authentication.FindByConnection(msg.SenderConnection);
            int worldID   = 0;

            if (server != null)
            {
                worldID = server.ID;
            }

            Authentication.AddAccount(accountID, username, worldID);

            LoginPacket.UpdateUserConnected(accountID);
        }
        /// <summary>
        /// Verifica se o usuário está conectado em algum servidor.
        /// </summary>
        /// <param name="msg"></param>
        public static void IsUserConnected(NetIncomingMessage msg)
        {
            var account = msg.ReadString();
            var user    = Authentication.FindUserByAccount(account);
            var result  = false;

            if (user == null)
            {
                result = false;
            }
            else
            {
                result = (user?.AccountID == 0) ? false : true;
            }

            LoginPacket.ConnectedResult(msg.SenderConnection, result, account);
        }