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/protobuf/protobuf/rpc/error_pb'; import { ListMembersRequest, ListMembersResponse, GetMemberByUsernameRequest, GetMemberByUsernameResponse, GetMemberRequest, GetMemberResponse, SUBJECT_LIST_MEMBERS, SUBJECT_GET_MEMBER, SUBJECT_GET_MEMBER_BY_USERNAME, UpdateMemberRequest, UpdateMemberResponse, SUBJECT_UPDATE_MEMBER, CreateMemberResponse, CreateMemberRequest, SUBJECT_CREATE_MEMBER, } from 'app/modules/protobuf/c2se/backend/member_pb'; import { Pagination } from 'app/modules/protobuf/protobuf/pagination/pagination_pb'; import { MemberModel } from 'app/modules/protobuf/models/member/member_pb'; @Injectable({ providedIn: 'root', }) export class MemberService { /** * Constructor */ constructor(private __natsService: NatsService) {} // ----------------------------------------------------------------------------------------------------- // @ Accessors // ----------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------- // @ Public methods // ----------------------------------------------------------------------------------------------------- listMembers(req?: ListMembersRequest): Promise { return new Promise((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( 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 { return new Promise((resolve, reject) => { let req = new GetMemberRequest(); req.setId(id); this.__natsService .request( 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 { return new Promise( (resolve, reject) => { let req = new GetMemberByUsernameRequest(); this.__natsService .request( SUBJECT_GET_MEMBER_BY_USERNAME, req.serializeBinary(), GetMemberByUsernameResponse.deserializeBinary ) .then((result) => { resolve(result); }) .catch((e: Error) => { console.log('failed', e); reject(e); }); } ); } updateMember( id: string, siteId: string, memberLevelId: string, password: string, mobilePhoneNumber: string ): Promise { return new Promise((resolve, reject) => { let req = new UpdateMemberRequest(); req.setId(id); if (!!siteId) { req.setSiteId(siteId); } if (!!memberLevelId) { req.setMemberLevelId(memberLevelId); } if (!!password) { req.setPassword(password); } if (!!mobilePhoneNumber) { req.setMobilePhoneNumber(mobilePhoneNumber); } this.__natsService .request( 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); }); }); } // siteId: 8429a7ab-b9de-400b-a209-28ff46e22bec // classId: 4b014ef5-3bab-4413-aaf9-b0040a70ec77 // levelId: c56231ac-2120-4a81-a30a-5d41fafb6c57 createMember(req: CreateMemberRequest): Promise { return new Promise((resolve, reject) => { this.__natsService .request( 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); }); }); } }