public bool CanJoinExistingSession(BSLCompanyServer objCoServer)
        {
            if (this.TUsers.Count == 0)
            {
                throw new Exception("BSLUser must be populated before calling CanJoinExistingSession.");
            }

            BSLCompany objCompany       = GetCompany();
            short      maxCollaborators = objCompany.TCompanies[0].numCollaborators;
            short      numLicenses      = objCompany.TCompanies[0].numLicenses;

            int numCurrentSessions = 0;
            int numCurrentUsers    = 0;

            objCompany.GetCurrentSessionStats(TUsers[0].userName, TUsers[0].password,
                                              ref numCurrentSessions, ref numCurrentUsers);

            if (numCurrentUsers >= numLicenses)
            {
                return(false);
            }

            if (objCoServer.GetNumCurrentUsers(TUsers[0].userName, TUsers[0].password) >= maxCollaborators)
            {
                return(false);
            }

            return(true);
        }
        public bool CanStartNewSession()
        {
            if (this.TUsers.Count == 0)
            {
                throw new Exception("BSLUser must be populated before calling CanStartNewSession.");
            }

            BSLCompany objCompany            = GetCompany();
            short      maxConcurrentSessions = objCompany.TCompanies[0].numConcurrentSessions;
            short      numLicenses           = objCompany.TCompanies[0].numLicenses;

            int numCurrentSessions = 0;
            int numCurrentUsers    = 0;

            objCompany.GetCurrentSessionStats(TUsers[0].userName, TUsers[0].password,
                                              ref numCurrentSessions, ref numCurrentUsers);

            if ((numCurrentSessions >= maxConcurrentSessions) ||
                (numCurrentUsers >= numLicenses))
            {
                return(false);
            }

            return(true);
        }