/*
 * @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';
/**
 * 修改密码
 * @param data
 */
export function changePwd(data: object) {
    return request({
        url: `/api/v1/User/change-pwd`,
        method: 'post',
        data
    });
}
/**
 * 当前用户信息
 * @param 
 */
export function getUserInfo() {
    return request({
        url: `/api/v1/Home/myinfo`,
        method: 'get'
    });
}
/**
 * 获取当前用户所有按钮
 * @param 
 */
export function getBtns() {
    return request({
        url: `/api/v1/Home/get-my-auth-button`,
        method: 'get'
    });
}
/**
 * @description: 获取所有分机列表
 * @param {object} params
 * @return {*}
 */
export const getTelsList = (params?: object) => {
    return request({
        url: '/api/v1/Tel/tels-frequency',
        method: 'get',
        params: params,
    });
};
/**
 * @description: 获取当前用户分机列表
 * @param {object} params
 * @return {*}
 */
export const getTelList = (params?: object) => {
    return request({
        url: '/api/v1/Tel/tel-frequency',
        method: 'get',
        params: params,
    });
};
/**
 * @description: 根据姓名模糊查询用户
 * @param {object} params
 * @return {*}
 */
export const queryUser = (params?: object) => {
    return request({
        url: '/api/v1/User/withOrg',
        method: 'get',
        params: params,
    });
};

/*  下面是话机状态操作 */
/**
 * 签入
 * @param telNo 分机编号
 * @returns 返回接口数据
 */
export function onDuty(telNo: string) {
    return request({
        url: `/api/v1/User/on-duty/${telNo}`,
        method: 'post',
    });
}
/**
 * 签出
 * @param data 分机编号
 * @returns 返回接口数据
 */
export function offDuty(data?: string) {
    return request({
        url: `/api/v1/User/off-duty`,
        method: 'post',
        data: data
    });
}
/**
 * 挂断 
 * @param val.callType 来电类型 
 * @param val.id 通话ID
 * @returns 返回接口数据
 */
export function 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-ext';
            break;
        case 2: // 来电转分机 (强拆来电)
            url = '/api/v1/Pbx/clear-visitor';
            break;
        case 3: //来电 (强拆来电)
            url = '/api/v1/Pbx/clear-ext';
            break;
        default:
            url = '/api/v1/Pbx/clear-ext';
            break;
    }
    return request({
        url,
        method: 'post',
        data:{callId:val.id}
    });
}
/**
 * 分机休息
 */
export function telRest(data:object) {
    return request({
        url: `/api/v1/Pbx/rest`,
        method: 'post',
        data
    });
}
/**
 * 
 * @param  查询小修流程开启参数
 * @returns 返回接口数据
 */
export function restFlowStart() {
    return request({
        url: `/api/v1/Pbx/flow-start`,
        method: 'get'
    });
}
/**
 * 分机结束休息
 */
export function telUnrest() {
    return request({
        url: `/api/v1/Pbx/un-rest`,
        method: 'put'
    });
}
/**
 * 通话保持
 *  @param callId 通话id
 *  @returns 返回接口数据
 */
export function telHold(callId: string) {
    return request({
        url: `/api/v1/Pbx/hold?callId=${callId}`,
        method: 'put'
    });
}
/**
 * 结束保持
 *  @param callId 通话id
 *  @returns 返回接口数据
 */
export function telUnhold(callId: string) {
    return request({
        url: `/api/v1/Pbx/un-hold?callId=${callId}`,
        method: 'put'
    });
}
/**
 * 静音
 *  @param 
 *  @returns 返回接口数据
 */
export function telMute() {
    return request({
        url: `/api/v1/Pbx/mute`,
        method: 'get'
    });
}
/**
 * 取消静音
 *  @param 
 *  @returns 返回接口数据
 */
export function telUnMute() {
    return request({
        url: `/api/v1/Pbx/unmute`,
        method: 'get'
    });
}
/**
 * 来电转分机（转接）
 *  @param data 
 *  @returns 返回接口数据
 */
export function visitorToTel(data: object) {
    return request({
        url: `/api/v1/Pbx/visitor-to-tel`,
        method: 'post',
        data
    });
}
/**
 * 分机拨打外部电话（外呼）
 *  @param data 
 *  @returns 返回接口数据
 */
export function telToOuter(data: object) {
    return request({
        url: `/api/v1/Pbx/tel-to-outer`,
        method: 'post',
        data
    });
}
/**
 * 分机呼分机（外呼）
 *  @param data 
 *  @returns 返回接口数据
 */
export function telToTel(data: object) {
    return request({
        url: `/api/v1/Pbx/tel-to-tel`,
        method: 'post',
        data
    });
}
/**
 * 来电转外部电话（呼叫转移）
 *  @param data 
 *  @returns 返回接口数据
 */
export function visitorToOuter(data: object) {
    return request({
        url: `/api/v1/Pbx/visitor-to-outer`,
        method: 'post',
        data
    });
}
/**
 * 三方会议
 * 先建立两方通话，然后调用保持通话接口，拨通第三方分机，然后再调用三方会议接口
 * 1. 分机 A 正在和 B 通话；
 * 2. 分机 A 把原通话呼叫保持；
 * 3. 分机 A 向 C 发起新的呼叫，并建立通话；
 * 4. 此时，使用该 API 能够实现以分机 A 为主持方建立 A、B、C 的三方会议。
 * @param telNo  发起会议的分机号
 * @returns 返回接口数据
 */
export function meeting(data: object) {
    return request({
        url: `/api/v1/Pbx/meeting`,
        method: 'post',
        data
    });
}