package com.yh.saas.plugin.operation.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.winsea.svc.base.base.entity.CommonCompany;
import com.winsea.svc.base.base.entity.CommonTenant;
import com.winsea.svc.base.base.util.DataResult;
import com.winsea.svc.base.plugin.entity.TenantService;
import com.yh.saas.plugin.operation.qo.TenantQO;

import java.text.ParseException;
import java.util.List;

/**
 * 租户服务
 * 
 * @author SunTianjun
 */
public interface IOperationTenantService {

	/**
	 * 创建租户
	 * 
	 * @param tenant 租户信息
	 * @return 租户ID
	 */
	String create(CommonTenant tenant);

	/**
	 * 修改租户信息
	 * 
	 * @param tenant 租户信息
	 */
	void changeInfo(CommonTenant tenant);

	/**
	 * 修改试用租户信息
	 *
	 * @param tenant 租户信息
	 */
	void changeTrialInfo(CommonTenant tenant) throws ParseException;

	/**
	 * 启用
	 * 
	 * @param tenantId 租户ID
	 */
	void enable(String tenantId);

	/**
	 * 禁用
	 * 
	 * @param tenantId 租户ID
	 */
	void disable(String tenantId);

	/**
	 * 模糊搜索租户
	 * 
	 * @param keyword         搜索关键字
	 * @param pageAndSortInfo 分页排序信息
	 * @return 租户分页列表
	 */
	Page<CommonTenant> search(String keyword, Page<CommonTenant> pageAndSortInfo);

	/**
	 * 分页查询试用租户
	 *
	 * @return 租户分页列表
	 */
	Page<CommonTenant> getTrialList(TenantQO tenantQO) throws ParseException;

	/**
	 *
	 * @param tenantName 租户名称
	 * @param tenantId 租户id
	 * @param compSimpleName 公司简称
	 * @return 是否相同
	 */
	Boolean checkoutTenantName(String tenantName, String tenantId, String compSimpleName);

	/**
	 * 获取租户详情
	 * @param tenantId 租户id
	 * @return 返回对象
	 */
	CommonTenant getTenantDetail(String tenantId) throws ParseException;

	/**
	 * 获取 租户已购服务可编辑的表单
	 * @param tenantId 租户id
	 * @return 返回服务
	 */
    List<TenantService> getTenantService(String tenantId);

	/**
	 * 验证用户信息
	 */
	 DataResult CheckTenantUnique(CommonTenant tenant);

	/**
	 * 更新用户信息
	 */
	void updateCommonTenantById(CommonTenant tenant);

	/**
	 * 新增用户
	 */
	void saveCommonTenant(CommonTenant tenant);

	void change(CommonCompany commonCompany);
}
