package com.bocloud.ims.interfaces.resource.azure.prices;

import com.bocloud.cmp.params.azure.AzureListPriceParams;
import com.bocloud.common.model.BocloudResult;
import com.bocloud.common.model.GridBean;
import com.bocloud.common.model.Pager;
import com.bocloud.common.model.RequestContext;
import com.bocloud.ims.entity.resource.azure.price.AzureResourcePrice;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @Company: 博云 www.bocloud.com
 * @ClassName: AzurePriceService
 * @Description:
 * @author: zhenpingLi/李振平
 * @date: 2021/1/6 15:15
 */
public interface AzurePriceService {


    /**
     * 列表
     *
     * @param pager
     * @param context
     * @return
     */
    BocloudResult<GridBean<AzureResourcePrice>> list(Pager pager, RequestContext context);

    /**
     * 创建
     *
     * @param entityParams
     * @param context
     * @return
     */
    BocloudResult create(AzureResourcePrice entityParams, RequestContext context);

    /**
     * 删除
     *
     * @param id
     * @param context
     * @return
     */
    BocloudResult remove(Long id, RequestContext context);

    /**
     * 修改
     *
     * @param entityParams
     * @param context
     * @return
     */
    BocloudResult modify(AzureResourcePrice entityParams, RequestContext context);

    /**
     * 批量导入
     *
     * @param prices
     * @return
     */
    BocloudResult importCreate(List<AzureResourcePrice> prices);


    /**
     * 批量删除
     *
     * @param params
     * @param context
     * @return
     */
    BocloudResult batchRemove(String params, RequestContext context);

    /**
     * 导出下载模板
     *
     * @param response
     * @return
     */
    void downloadTemplate(HttpServletResponse response);

    //通过api方式获取LIST价格

    /**
     * 获取虚拟机规格计费，通过api方式
     *
     * @param params
     * @return
     */
    BocloudResult flavors(AzureListPriceParams params);

    /**
     * 获取磁盘计费，通过api方式
     *
     * @param params
     * @return
     */
    BocloudResult volumes(AzureListPriceParams params);

    /**
     * 获取EIP计费，通过api方式
     *
     * @param params
     * @return
     */
    BocloudResult eips(AzureListPriceParams params);

    /**
     * 获取redis定价，通过api方式
     *
     * @param params
     * @return
     */
    BocloudResult redis(AzureListPriceParams params);

    /**
     * 获取mysql存储定价，通过api方式
     *
     * @param params
     * @return
     */
    BocloudResult mysqlStorage(AzureListPriceParams params);

    /**
     * 获取mysql vcore定价，通过api方式
     *
     * @param params
     * @return
     */
    BocloudResult mysqlVcore(AzureListPriceParams params);


}