2019-09-18 15:02:21 +09:00
|
|
|
import { Injectable } from '@angular/core';
|
2019-09-25 14:06:26 +09:00
|
|
|
import { ProtocolService } from '@ucap-webmessenger/protocol';
|
|
|
|
import { Observable } from 'rxjs';
|
2019-09-25 16:13:24 +09:00
|
|
|
import { take, map, takeWhile } from 'rxjs/operators';
|
2019-09-25 14:06:26 +09:00
|
|
|
import {
|
|
|
|
AuthRequest,
|
|
|
|
AuthResponse,
|
|
|
|
encodeAuth,
|
|
|
|
decodeAuth
|
|
|
|
} from '../models/auth';
|
|
|
|
import {
|
|
|
|
SVC_TYPE_QUERY_DATA,
|
2019-09-25 16:13:24 +09:00
|
|
|
SSVC_TYPE_QUERY_AUTH_REQ,
|
|
|
|
SSVC_TYPE_QUERY_DEPT_REQ,
|
|
|
|
SSVC_TYPE_QUERY_DEPT_RES,
|
|
|
|
SSVC_TYPE_QUERY_DEPT_DATA,
|
|
|
|
SSVC_TYPE_QUERY_DEPT_USER_RES,
|
|
|
|
SSVC_TYPE_QUERY_DEPT_USER_DATA,
|
|
|
|
SSVC_TYPE_QUERY_DEPT_USER_REQ
|
2019-09-25 14:06:26 +09:00
|
|
|
} from '../types/service';
|
2019-09-25 16:13:24 +09:00
|
|
|
import {
|
|
|
|
DeptRequest,
|
|
|
|
DeptResponse,
|
|
|
|
encodeDept,
|
|
|
|
decodeDept,
|
|
|
|
decodeDeptData,
|
|
|
|
DeptData
|
|
|
|
} from '../models/dept';
|
|
|
|
import {
|
|
|
|
encodeDeptUser,
|
|
|
|
decodeDeptUser,
|
|
|
|
decodeDeptUserData,
|
|
|
|
DeptUserRequest,
|
|
|
|
DeptUserData,
|
|
|
|
DeptUserResponse
|
|
|
|
} from '../models/dept-user';
|
2019-09-18 15:02:21 +09:00
|
|
|
|
|
|
|
@Injectable({
|
|
|
|
providedIn: 'root'
|
|
|
|
})
|
|
|
|
export class QueryProtocolService {
|
2019-09-25 14:06:26 +09:00
|
|
|
constructor(private protocolService: ProtocolService) {}
|
|
|
|
|
|
|
|
public auth(req: AuthRequest): Observable<AuthResponse> {
|
|
|
|
return this.protocolService
|
|
|
|
.call(SVC_TYPE_QUERY_DATA, SSVC_TYPE_QUERY_AUTH_REQ, ...encodeAuth(req))
|
|
|
|
.pipe(
|
|
|
|
take(1),
|
|
|
|
map(res => decodeAuth(res))
|
|
|
|
);
|
|
|
|
}
|
2019-09-25 16:13:24 +09:00
|
|
|
|
|
|
|
public dept(req: DeptRequest): Observable<DeptResponse | DeptData> {
|
|
|
|
return this.protocolService
|
|
|
|
.call(SVC_TYPE_QUERY_DATA, SSVC_TYPE_QUERY_DEPT_REQ, ...encodeDept(req))
|
|
|
|
.pipe(
|
|
|
|
takeWhile(res => SSVC_TYPE_QUERY_DEPT_RES !== res.subServiceType, true),
|
|
|
|
map(res => {
|
|
|
|
if (SSVC_TYPE_QUERY_DEPT_DATA === res.subServiceType) {
|
|
|
|
return { ...decodeDeptData(res), Type: SSVC_TYPE_QUERY_DEPT_DATA };
|
|
|
|
}
|
|
|
|
|
|
|
|
return { ...decodeDept(res), Type: SSVC_TYPE_QUERY_DEPT_RES };
|
|
|
|
})
|
|
|
|
);
|
|
|
|
}
|
|
|
|
public deptUser(
|
|
|
|
req: DeptUserRequest
|
|
|
|
): Observable<DeptUserResponse | DeptUserData> {
|
|
|
|
return this.protocolService
|
|
|
|
.call(
|
|
|
|
SVC_TYPE_QUERY_DATA,
|
|
|
|
SSVC_TYPE_QUERY_DEPT_USER_REQ,
|
|
|
|
...encodeDeptUser(req)
|
|
|
|
)
|
|
|
|
.pipe(
|
|
|
|
takeWhile(
|
|
|
|
res => SSVC_TYPE_QUERY_DEPT_USER_RES !== res.subServiceType,
|
|
|
|
true
|
|
|
|
),
|
|
|
|
map(res => {
|
|
|
|
if (SSVC_TYPE_QUERY_DEPT_USER_DATA === res.subServiceType) {
|
|
|
|
return {
|
|
|
|
...decodeDeptUserData(res),
|
|
|
|
Type: SSVC_TYPE_QUERY_DEPT_USER_DATA
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
...decodeDeptUser(res),
|
|
|
|
Type: SSVC_TYPE_QUERY_DEPT_USER_RES
|
|
|
|
};
|
|
|
|
})
|
|
|
|
);
|
|
|
|
}
|
2019-09-18 15:02:21 +09:00
|
|
|
}
|