import UserServiceInterface from './UserServiceInterface'; import User from '../entity/User'; import BaseEntityService from '../../common/services/BaseEntityService/BaseEntityService'; import UserClientInterface from '../clients/UserClientInterface'; import UserAdapterInterface from '../adapter/UserAdapterInterface'; import HTTPRequest from '../../Request/entity/HTTPRequest'; import RequestPromise from '../../common/DTO/RequestPromise'; import BaseRequest from '../../Request/BaseRequest/entity/BaseRequest'; import UserRoleType from '../enums/UserRoleType'; import SendNotificationType from '../../common/enums/SendNotificationType'; export default class UserService extends BaseEntityService implements UserServiceInterface { protected client: UserClientInterface; protected adapter: UserAdapterInterface; constructor(client: UserClientInterface, transformer: UserAdapterInterface) { super(client, transformer); this.client = client; this.adapter = transformer; } getBookings(request: BaseRequest, user_id: string): RequestPromise { const httpRequest = new HTTPRequest(); httpRequest.queryString = request.getQueryString(); httpRequest.data = { ...httpRequest.data, user_id, }; const requestPromise = this.client.getBookings(httpRequest); return new RequestPromise( requestPromise.requestId, new Promise((resolve, reject) => { requestPromise.promise.then((response: any) => { try { resolve( this.adaptPagination(response.data), ); } catch (e) { reject(e); } }) }), ); } changeRole(user_id: string, role: UserRoleType): RequestPromise { const httpRequest = new HTTPRequest(); httpRequest.data = { ...httpRequest.data, user_id, role, }; return this.client.changeRole(httpRequest); } changePassword(user_id: string, password: string): RequestPromise { const httpRequest = new HTTPRequest(); httpRequest.data = { ...httpRequest.data, user_id, password, }; return this.client.changePassword(httpRequest); } sendSms(user_id: string, message: string): RequestPromise { const httpRequest = new HTTPRequest(); httpRequest.data = { ...httpRequest.data, user_id, message_type: SendNotificationType.SEND_NOTIFICATION_TYPE_SMS, message, }; return this.client.sendSms(httpRequest); } sendEmail(user_id: string, message: string): RequestPromise { const httpRequest = new HTTPRequest(); httpRequest.data = { ...httpRequest.data, user_id, message_type: SendNotificationType.SEND_NOTIFICATION_TYPE_EMAIL, message, }; return this.client.sendEmail(httpRequest); } }