212 lines
6.2 KiB
TypeScript

import { Injectable } from '@angular/core';
import { NatsService } from 'app/core/nats/services/nats.service';
import * as nats from 'nats.ws';
import { Error } from 'app/modules/proto/protobuf/rpc_pb';
import {
ListMembersRequest,
ListMembersResponse,
GetMemberByUsernameRequest,
GetMemberByUsernameResponse,
GetMemberRequest,
GetMemberResponse,
UpdateMemberRequest,
UpdateMemberResponse,
CreateMemberResponse,
CreateMemberRequest,
UpdateMemberForPasswordRequest,
UpdateMemberForPasswordResponse,
UpdateMemberForStateRequest,
UpdateMemberForStateResponse,
} from 'app/modules/proto/c2se/member_pb';
import {
SUBJECT_LIST_MEMBERS,
SUBJECT_GET_MEMBER,
SUBJECT_GET_MEMBER_BY_USERNAME,
SUBJECT_UPDATE_MEMBER,
SUBJECT_CREATE_MEMBER,
} from 'app/modules/proto/c2se/backend/member_pb';
import { Pagination } from 'app/modules/proto/protobuf/pagination_pb';
@Injectable({
providedIn: 'root',
})
export class MemberService {
/**
* Constructor
*/
constructor(private __natsService: NatsService) {}
// -----------------------------------------------------------------------------------------------------
// @ Accessors
// -----------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------
// @ Public methods
// -----------------------------------------------------------------------------------------------------
listMembers(req?: ListMembersRequest): Promise<ListMembersResponse.Result> {
return new Promise<ListMembersResponse.Result>((resolve, reject) => {
if (!req) {
req = new ListMembersRequest();
}
if (!req.hasPagination()) {
let paging = new Pagination();
paging.setPageSize(10);
paging.setPage(0);
req.setPagination(paging);
}
this.__natsService
.request<ListMembersResponse.Result>(
SUBJECT_LIST_MEMBERS,
req.serializeBinary(),
ListMembersResponse.deserializeBinary
)
.then((result) => {
console.log('success', result, result.getMembersList());
resolve(result);
})
.catch((e: Error) => {
console.log('failed', e);
reject(e);
});
});
}
getMember(id: string): Promise<GetMemberResponse.Result> {
return new Promise<GetMemberResponse.Result>((resolve, reject) => {
let req = new GetMemberRequest();
req.setId(id);
this.__natsService
.request<GetMemberResponse.Result>(
SUBJECT_GET_MEMBER,
req.serializeBinary(),
GetMemberResponse.deserializeBinary
)
.then((result) => {
console.log('success', result, result.getMember());
resolve(result);
})
.catch((e: Error) => {
console.log('failed', e);
reject(e);
});
});
}
getMemberByUsername(): Promise<GetMemberByUsernameResponse.Result> {
return new Promise<GetMemberByUsernameResponse.Result>(
(resolve, reject) => {
let req = new GetMemberByUsernameRequest();
this.__natsService
.request<GetMemberByUsernameResponse.Result>(
SUBJECT_GET_MEMBER_BY_USERNAME,
req.serializeBinary(),
GetMemberByUsernameResponse.deserializeBinary
)
.then((result) => {
resolve(result);
})
.catch((e: Error) => {
console.log('failed', e);
reject(e);
});
}
);
}
updateMember(req: UpdateMemberRequest): Promise<UpdateMemberResponse.Result> {
return new Promise<UpdateMemberResponse.Result>((resolve, reject) => {
this.__natsService
.request<UpdateMemberResponse.Result>(
SUBJECT_UPDATE_MEMBER,
req.serializeBinary(),
UpdateMemberResponse.deserializeBinary
)
.then((result) => {
console.log('updateMember Result: ', result);
resolve(result);
})
.catch((e: Error) => {
console.log('failed', e);
reject(e);
});
});
}
updateMemberForPassword(
req: UpdateMemberForPasswordRequest
): Promise<UpdateMemberForPasswordResponse.Result> {
return new Promise<UpdateMemberForPasswordResponse.Result>(
(resolve, reject) => {
this.__natsService
.request<UpdateMemberForPasswordResponse.Result>(
SUBJECT_UPDATE_MEMBER,
req.serializeBinary(),
UpdateMemberForPasswordResponse.deserializeBinary
)
.then((result) => {
console.log('updateMemberForPassword Result: ', result);
resolve(result);
})
.catch((e: Error) => {
console.log('failed', e);
reject(e);
});
}
);
}
updateMemberForState(
req: UpdateMemberForStateRequest
): Promise<UpdateMemberForStateResponse.Result> {
return new Promise<UpdateMemberForStateResponse.Result>(
(resolve, reject) => {
this.__natsService
.request<UpdateMemberForStateResponse.Result>(
SUBJECT_UPDATE_MEMBER,
req.serializeBinary(),
UpdateMemberForStateResponse.deserializeBinary
)
.then((result) => {
console.log('updateMemberForState Result: ', result);
resolve(result);
})
.catch((e: Error) => {
console.log('failed', e);
reject(e);
});
}
);
}
// siteId: 8429a7ab-b9de-400b-a209-28ff46e22bec
// classId: 4b014ef5-3bab-4413-aaf9-b0040a70ec77
// levelId: c56231ac-2120-4a81-a30a-5d41fafb6c57
createMember(req: CreateMemberRequest): Promise<CreateMemberResponse.Result> {
return new Promise<CreateMemberResponse.Result>((resolve, reject) => {
this.__natsService
.request<CreateMemberResponse.Result>(
SUBJECT_CREATE_MEMBER,
req.serializeBinary(),
CreateMemberResponse.deserializeBinary
)
.then((result) => {
console.log('createMember Result: ', result);
resolve(result);
})
.catch((e: Error) => {
console.log('failed', e);
reject(e);
});
});
}
}