from core.models.SubscriptionPlan import SubscriptionPlan from core.models.session.SessionProfile import SessionProfile from core.models.system.SystemProfile import SystemProfile from core.observers.ConnectionObserver import ConnectionObserver from core.services.WebServiceApiService import WebServiceApiService from typing import Union class SubscriptionController: @staticmethod def get(billing_code: str, connection_observer: ConnectionObserver = None): from core.controllers.ConnectionController import ConnectionController return ConnectionController.with_preferred_connection(billing_code, task=WebServiceApiService.get_subscription, connection_observer=connection_observer) @staticmethod def create(subscription_plan: SubscriptionPlan, profile: Union[SessionProfile, SystemProfile], connection_observer: ConnectionObserver = None): from core.controllers.ConnectionController import ConnectionController if profile.location: return ConnectionController.with_preferred_connection( subscription_plan.id, profile.location.id, task=WebServiceApiService.post_subscription, connection_observer=connection_observer ) else: return ConnectionController.with_preferred_connection( subscription_plan.id, operator_id=profile.connection.operator_id, task=WebServiceApiService.post_subscription, connection_observer=connection_observer ) from core.controllers.ConnectionController import ConnectionController if profile.location: return ConnectionController.with_preferred_connection( subscription_plan.id, profile.location.id, task=WebServiceApiService.post_subscription, connection_observer=connection_observer ) else: return ConnectionController.with_preferred_connection( subscription_plan.id, task=WebServiceApiService.post_subscription, connection_observer=connection_observer ) from core.controllers.ConnectionController import ConnectionController if profile.location: # Para WireGuard (con location) return ConnectionController.with_preferred_connection( subscription_plan.id, profile.location.id, task=WebServiceApiService.post_subscription, connection_observer=connection_observer ) else: return ConnectionController.with_preferred_connection( subscription_plan.id, task=WebServiceApiService.post_subscription, connection_observer=connection_observer )