from core.models.SubscriptionPlan import SubscriptionPlan
from core.models.session.SessionConnection import SessionConnection
from core.models.system.SystemConnection import SystemConnection
from core.services.WebServiceApiService import WebServiceApiService
from typing import Union, Optional


class SubscriptionPlanController:

    @staticmethod
    def get(connection: Union[SessionConnection, SystemConnection], duration: int):
        return SubscriptionPlan.find(connection, duration)

    @staticmethod
    def get_all(connection: Optional[Union[SessionConnection, SystemConnection]] = None):
        return SubscriptionPlan.all(connection)

    @staticmethod
    def _sync(proxies: Optional[dict] = None):

        subscription_plans = WebServiceApiService.get_subscription_plans(proxies)

        SubscriptionPlan.truncate()
        SubscriptionPlan.save_many(subscription_plans)