package com.palmnest.service.virtProject;

import com.palmnest.application.bean.AppResultDto;
import com.palmnest.application.dto.WebPageResultDto;
import com.palmnest.application.dto.input.VirtualInputDto;
import com.palmnest.application.dto.output.VirAccountDto;
import com.palmnest.model.property.VirtualArchitecture;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

public interface VirtualArchService {
	/**
	 * 获取企业账号和密码
	 *
	 * @param virId
	 * @param type  1获取账号及密码2获取密码
	 * @return
	 */
	public Map<String, Object> getAccount(int virId, int type);

	/**
	 * 删除企业账号
	 *
	 * @param virId
	 * @return
	 */
	public String deleteAccount(String virId, String isEnable, String userId);
//	/**
//	 * 保存或修改账号和密码
//	 * @param id
//	 * @param account 企业账号
//	 * @param password 密码
//	 * @param userId 登录用户
//	 * @return
//	 */
//	public String saveAccount(VirUserAccountInputDto virUserDto,String userId);

	/**
	 * 保存或修改账号和密码
	 *
	 * @param id
	 * @param account  企业账号
	 * @param password 密码
	 * @param userId   登录用户
	 * @return
	 */
	public String saveAccount(String orgId, int virId, String account, String password, String userId);

	/**
	 * 修改免费时长等
	 *
	 * @param id
	 * @param settleType    结算方式
	 * @param freeLenTime   月度免费时长
	 * @param remainderTime 剩余时长
	 * @param userId        登录用户
	 * @return
	 */
	public String updateVirFreeTime(int id, String settleType, String freeLenTime, String remainderTime, String userId, String virPermId);

	/**
	 * 企业账号登录
	 *
	 * @param openId
	 * @param account
	 * @param password
	 * @return
	 */
	public AppResultDto accLogin(String orgId, String openId, String account, String password) throws Exception;

	/**
	 * 获取企业用户信息
	 *
	 * @param openId
	 * @param organizationId
	 * @return
	 * @throws Exception
	 */
	public AppResultDto getUserInfo(String openId, String organizationId, String userId) throws Exception;

	public VirAccountDto getUser(String openId, String organizationId, String userMobile) throws Exception;

	public VirAccountDto getVirAccountBy(Long virAccountId);

	/**
	 * 导入企业信息
	 *
	 * @param ins
	 * @param buildId
	 * @return
	 * @throws Exception
	 */
	public Map<String, Object> importVirtualInfo(InputStream ins, String buildId) throws Exception;

	/**
	 * 保存导入的企业
	 *
	 * @param list
	 * @param userId
	 * @return
	 * @throws Exception
	 */
	public String saveImpVirtualInfo(List<VirtualInputDto> list, String userId, String pre_id) throws Exception;

	/**
	 * 根据房间号获取楼层房间号统称
	 *
	 * @param roomIds
	 * @return
	 */
	public String getFloorAndRoom(String roomIds);

	/**
	 * 同步企业信息(根据开始时间获取开始时间到当前时间内的企业信息)
	 *
	 * @param startTime
	 * @return
	 */
	public AppResultDto synchroCompanyData(String startTime);

	//同步会议室审核角色
	public AppResultDto synchroMeetingRole(String clientNo);

	/**
	 * 同步楼层信息(根据开始时间获取开始时间到当前时间内的企业信息)
	 *
	 * @param startTime
	 * @return
	 */
	public AppResultDto synchroFloorData(String startTime);

	VirtualArchitecture findById(int id);


	/**
	 * 企业数据统计
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @param pageSize
	 * @param pageNo
	 * @return
	 */
	WebPageResultDto getVirtualDataByInfo(String orgId, int dateType, String date, String endDate, int pageSize, int pageNo);

	/**
	 * 导出企业数据统计报表
	 *
	 * @param orgId
	 * @param dateType
	 * @param date
	 * @param endDate
	 * @return
	 */
	AppResultDto exportVirtualStatistics(String orgId, Integer dateType, String date, String endDate);

	/**
	 * 代理企业数据统计
	 *
	 * @param pageSize
	 * @param pageNo
	 * @return
	 */
	WebPageResultDto getVirtualArchAgent(int pageSize, int pageNo);
}
