package com.ai.da.service;

import com.ai.da.mapper.primary.entity.SubscriptionPlan;
import com.ai.da.model.dto.SubscriptionPlanDTO;
import com.ai.da.model.dto.SubscriptionPlanPageQuery;
import com.ai.da.model.dto.UpdateSubscriptionPlanDTO;
import com.ai.da.model.vo.SubscriptionPlanVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface SubscriptionPlanService extends IService<SubscriptionPlan> {

    void createPlan(SubscriptionPlanDTO subscriptionPlanDTO);

    void updatePlan(UpdateSubscriptionPlanDTO updateDTO);

    List<SubscriptionPlan> searchByOrganizationIdAndStatus(SubscriptionPlanPageQuery subscriptionPlanPageQuery);

    IPage<SubscriptionPlanVO> searchByPage(SubscriptionPlanPageQuery subscriptionPlanPageQuery);

    void deletePlan(Long id);

    void switchSubscriptionPlan(Long subscriptionPlanId, Long adminAccId);

    void switchSubAccSubscriptionPlan(Long subscriptionPlanId, Long subAccId);

    void activeSubscriptionPlan();

    void expireSubscription();
}
