| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | 
							- from extensions.ext_database import db
 
- from models.account import Tenant
 
- from models.provider import Provider, ProviderType
 
- class WorkspaceService:
 
-     @classmethod
 
-     def get_tenant_info(cls, tenant: Tenant):
 
-         tenant_info = {
 
-             'id': tenant.id,
 
-             'name': tenant.name,
 
-             'plan': tenant.plan,
 
-             'status': tenant.status,
 
-             'created_at': tenant.created_at,
 
-             'providers': [],
 
-             'in_trail': False,
 
-             'trial_end_reason': 'using_custom'
 
-         }
 
-         # Get providers
 
-         providers = db.session.query(Provider).filter(
 
-             Provider.tenant_id == tenant.id
 
-         ).all()
 
-         # Add providers to the tenant info
 
-         tenant_info['providers'] = providers
 
-         custom_provider = None
 
-         system_provider = None
 
-         for provider in providers:
 
-             if provider.provider_type == ProviderType.CUSTOM.value:
 
-                 if provider.is_valid and provider.encrypted_config:
 
-                     custom_provider = provider
 
-             elif provider.provider_type == ProviderType.SYSTEM.value:
 
-                 if provider.is_valid:
 
-                     system_provider = provider
 
-         if system_provider and not custom_provider:
 
-             quota_used = system_provider.quota_used if system_provider.quota_used is not None else 0
 
-             quota_limit = system_provider.quota_limit if system_provider.quota_limit is not None else 0
 
-             if quota_used >= quota_limit:
 
-                 tenant_info['trial_end_reason'] = 'trial_exceeded'
 
-             else:
 
-                 tenant_info['in_trail'] = True
 
-                 tenant_info['trial_end_reason'] = None
 
-         return tenant_info
 
 
  |