/*
 * @Author: zc
 * @Description: 用户
 * @version:
 * @Date: 2022-08-09 16:19:55
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2022-11-16 14:49:01
 */
import request from '/@/utils/request';
/**
 * @description: 获取当前用户下的菜单
 * @param {object} params
 * @return {*}
 */
export const getMenu = (params?: object) => {
	return request({
		url: '/api/v1/Home/get-my-auth-menu',
		method: 'get',
		params,
	});
};
/**
 * 修改密码
 * @param data
 */
export const changePwd = (data: object) => {
	return request({
		url: `/api/v1/User/change-pwd`,
		method: 'post',
		data,
	});
};
/**
 * 修改默认密码 （第一次登录进来修改）
 * @param data
 */
export const changeDefaultPwd = (data: object) => {
	return request({
		url: `/api/v1/User/change-default-pwd`,
		method: 'post',
		data,
	});
};
/**
 * 当前用户信息
 */
export const getUserInfo = () => {
	return request({
		url: `/api/v1/Home/myinfo`,
		method: 'get',
	});
};
/**
 * @description: 根据姓名模糊查询用户
 * @param {object} params
 * @return {*}
 */
export const queryUser = (params?: object) => {
	return request({
		url: '/api/v1/User/withOrg',
		method: 'get',
		params: params,
	});
};

/*  下面是话机状态操作 */
/**
 * 签入
 * @param data 分机编号 {
 *   "telNo": "string"
 * }
 * @returns 返回接口数据
 */
export const onDuty = (data: object) => {
	return request({
		url: `/api/v1/User/on-duty`,
		method: 'post',
		data,
	});
};
/**
 * 签出
 * @param data 分机编号
 * @returns 返回接口数据
 */
export const offDuty = (data?: string) => {
	return request({
		url: `/api/v1/User/off-duty`,
		method: 'post',
		data,
	});
};
/**
 * 挂断
 * @param val.callType 来电类型   0:内呼 1：外呼 3：来电
 * @param val.id 通话ID
 * @returns 返回接口数据
 */
export const hangupApi = (val: any) => {
	let url: string;
	switch (
		val.callType // 根据拨打类型调用不同接口
	) {
		case 0: // 分机呼分机 (强拆分机)
			url = '/api/v1/Pbx/clear-ext';
			break;
		case 1: //分机呼外部 (强拆去电)
			url = '/api/v1/Pbx/clear-outer';
			break;
		case 2: // 来电转分机 (强拆来电 暂无)
			url = '/api/v1/Pbx/clear-visitor';
			break;
		case 3: //来电 (强拆来电)
			url = '/api/v1/Pbx/clear-visitor';
			break;
		default:
			url = '/api/v1/Pbx/clear-ext';
			break;
	}
	return request({
		url,
		method: 'post',
		data: { callId: val.id },
	});
};
/**
 * 分机休息
 */
export const telRest = (data: object) => {
	return request({
		url: `/api/v1/Pbx/rest`,
		method: 'post',
		data,
	});
};
/**
 * 分机休息wex
 */
export const telRestAdd = (data: object) => {
	return request({
		url: `/api/v1/Pbx/rest-add`,
		method: 'post',
		data,
	});
};
/**
 * 分机休息wex 需要审核
 * @param {object}  params
 */
export const telRestProcess = (params?: object) => {
	return request({
		url: `/api/v1/Pbx/begin-rest`,
		method: 'get',
		params
	});
};

/**
 * 查询小修流程开启参数
 * @returns 返回接口数据
 */
export const restFlowStart = () => {
	return request({
		url: `/api/v1/Pbx/flow-start`,
		method: 'get',
	});
};
/**
 * 删除分机休息
 * @returns 返回接口数据
 */
export const restFlowDel= () => {
	return request({
		url: `/api/v1/Pbx/rest-del`,
		method: 'get',
	});
};
/**
 * 开始小修流程
 * @param {object} data
 * @returns 返回接口数据
 */
export const restFlowStartWex = (data:object) => {
	return request({
		url: `/api/v1/Pbx/rest-flow`,
		method: 'post',
		data
	});
};
/**
 * 分机结束休息
 */
export const telUnrest = () => {
	return request({
		url: `/api/v1/Pbx/un-rest`,
		method: 'put',
	});
};
/**
 * 分机结束休息wex
 */
export const telUnrestWex = () => {
	return request({
		url: `/api/v1/Pbx/un-rest-wex`,
		method: 'get',
	});
};
/**
 * 通话保持
 *  @param callId 通话id
 *  @returns 返回接口数据
 */
export const telHold = (callId: string) => {
	return request({
		url: `/api/v1/Pbx/hold?callId=${callId}`,
		method: 'put',
	});
};
/**
 * 结束保持
 *  @param callId 通话id
 *  @returns 返回接口数据
 */
export const telUnHold = (callId: string) => {
	return request({
		url: `/api/v1/Pbx/un-hold?callId=${callId}`,
		method: 'put',
	});
};
/**
 * 静音
 *  @returns 返回接口数据
 */
export const telMute = () => {
	return request({
		url: `/api/v1/Pbx/mute`,
		method: 'get',
	});
};
/**
 * 取消静音
 *  @returns 返回接口数据
 */
export const telUnMute = () => {
	return request({
		url: `/api/v1/Pbx/unmute`,
		method: 'get',
	});
};
/**
 * 来电转分机（转接）
 *  @param data
 *  @returns 返回接口数据
 */
export const visitorToTel = (data: object) => {
	return request({
		url: `/api/v1/Pbx/visitor-to-tel`,
		method: 'post',
		data,
	});
};
/**
 * 去电转分机（转接）
 *  @param data
 *  @returns 返回接口数据
 */
export const outerToTel = (data: object) => {
	return request({
		url: `/api/v1/Pbx/outer-to-tel`,
		method: 'post',
		data,
	});
};
/**
 * 来电转外部电话
 *  @param data
 *  @returns 返回接口数据
 */
export const visitorToOuter = (data: object) => {
	return request({
		url: `/api/v1/Pbx/visitor-to-outer`,
		method: 'post',
		data,
	});
};
/**
 * 去电转外部电话
 *  @param data
 *  @returns 返回接口数据
 */
export const outerToOuter = (data: object) => {
	return request({
		url: `/api/v1/Pbx/outer-to-outer`,
		method: 'post',
		data,
	});
};
/**
 * 分机拨打外部电话（外呼）
 *  @param data
 *  @returns 返回接口数据
 */
export const telToOuter = (data: object) => {
	return request({
		url: `/api/v1/Pbx/tel-to-outer`,
		method: 'post',
		data,
	});
};
/**
 * 分机呼分机（外呼）
 *  @param data
 *  @returns 返回接口数据
 */
export const telToTel = (data: object) => {
	return request({
		url: `/api/v1/Pbx/tel-to-tel`,
		method: 'post',
		data,
	});
};
/**
 * 三方会议
 * 先建立两方通话，然后调用保持通话接口，拨通第三方分机，然后再调用三方会议接口
 * 1. 分机 A 正在和 B 通话；
 * 2. 分机 A 把原通话呼叫保持；
 * 3. 分机 A 向 C 发起新的呼叫，并建立通话；
 * 4. 此时，使用该 API 能够实现以分机 A 为主持方建立 A、B、C 的三方会议。
 * @returns 返回接口数据
 * @param data {object}
 */
export const meeting = (data: object) => {
	return request({
		url: `/api/v1/Pbx/meeting`,
		method: 'post',
		data,
	});
};
/**
 * 语音评价
 *  @param {string} callId
 *  @returns 返回接口数据
 */
export const evaluateCall = (callId: string) => {
	return request({
		url: `/api/v1/Pbx/evaluate/${callId}`,
		method: 'get',
	});
};
