85 lines
2.4 KiB
TypeScript
Raw Normal View History

2019-09-26 14:43:31 +09:00
import {
ProtocolRequest,
ProtocolResponse,
ProtocolEncoder,
PacketBody,
PacketBodyValue,
ProtocolDecoder,
ProtocolMessage,
BodyStringDivider,
2019-10-10 12:14:01 +09:00
ProtocolStream,
decodeProtocolMessage
2019-09-26 14:43:31 +09:00
} from '@ucap-webmessenger/protocol';
2019-10-07 10:08:14 +09:00
import { StatusCode } from '@ucap-webmessenger/core';
2019-09-26 14:43:31 +09:00
import {
TerminalStatusInfo,
TerminalStatusNumber
} from '../types/terminal-status.type';
2019-10-07 10:08:14 +09:00
import { StatusInfo } from '../models/status-info';
import { StatusBulkInfo } from '../models/status-bulk-info';
import { WorkStatusType } from '../types/work-status.type';
2019-09-26 14:43:31 +09:00
export interface BulkInfoRequest extends ProtocolRequest {
2019-10-02 18:09:39 +09:00
/** DivCD(s) */
2019-09-26 14:43:31 +09:00
divCd: string;
2019-10-02 18:09:39 +09:00
/** 사용자SEQ(n)[] */
2019-09-26 14:43:31 +09:00
userSeqs: number[];
}
export interface BulkInfoData extends ProtocolStream {
2019-10-02 18:09:39 +09:00
/** DivCD(s) */
2019-09-26 14:43:31 +09:00
divCd: string;
2019-10-02 18:09:39 +09:00
/** {상태정보Bulk}... */
2019-09-26 14:43:31 +09:00
statusBulkInfos: StatusBulkInfo[];
}
export interface BulkInfoResponse extends ProtocolResponse {
2019-10-02 18:09:39 +09:00
/** DivCD(s) */
2019-09-26 14:43:31 +09:00
divCd: string;
}
export const encodeBulkInfo: ProtocolEncoder<BulkInfoRequest> = (
req: BulkInfoRequest
) => {
const bodyList: PacketBody[] = [];
bodyList.push({ type: PacketBodyValue.String, value: req.divCd });
req.userSeqs.forEach(userSeq => {
bodyList.push({ type: PacketBodyValue.Integer, value: userSeq });
});
return bodyList;
};
export const decodeBulkInfo: ProtocolDecoder<BulkInfoResponse> = (
message: ProtocolMessage
) => {
2019-10-10 12:14:01 +09:00
return decodeProtocolMessage(message, {
2019-09-26 14:43:31 +09:00
divCd: message.bodyList[0]
2019-10-10 12:14:01 +09:00
} as BulkInfoResponse);
2019-09-26 14:43:31 +09:00
};
export const decodeBulkInfoData: ProtocolDecoder<BulkInfoData> = (
message: ProtocolMessage
) => {
const statusBulkInfos: StatusBulkInfo[] = [];
message.bodyList.slice(1).forEach(statusBulkInfo => {
const info = statusBulkInfo.split(BodyStringDivider);
statusBulkInfos.push({
2019-09-27 15:11:53 +09:00
userSeq: Number(info[0]),
pcStatus: info[1] as StatusCode,
phoneStatus: info[2] as StatusCode,
mobileStatus: info[3] as StatusCode,
conferenceStatus: info[4] as StatusCode,
statusMessage: info[5],
mobileConferenceStatus: info[6] as StatusCode,
imessengerStatus: info[7] as StatusCode,
terminalStatus: info[8] as TerminalStatusInfo,
terminalStatusNumber: Number(info[9]) as TerminalStatusNumber,
workstatus: info[10] as WorkStatusType
2019-09-26 14:43:31 +09:00
});
});
2019-10-10 12:14:01 +09:00
return decodeProtocolMessage(message, {
2019-09-26 14:43:31 +09:00
divCd: message.bodyList[0],
statusBulkInfos
2019-10-10 12:14:01 +09:00
} as BulkInfoData);
2019-09-26 14:43:31 +09:00
};