import UserClientInterface from './UserClientInterface'; import BaseEntityClient from '../../common/clients/BaseEntityClient'; import HTTPRequest from '../../Request/entity/HTTPRequest'; import RequestPromise from '../../common/DTO/RequestPromise'; export default class UserClient extends BaseEntityClient implements UserClientInterface { protected GET_BOOKINGS_PATH = `${this.getBasepath()}/:id/journeys`; protected SEND_SMS_PATH = `${this.getBasepath()}/:id/notify`; protected SEND_EMAIL_PATH = `${this.getBasepath()}/:id/notify`; protected CHANGE_ROLE_PATH = `${this.getBasepath()}/:id/role`; protected CHANGE_PASSWORD_PATH = `${this.getBasepath()}/:id/password`; protected getSmsPath(user_id: string): string { return this.SEND_SMS_PATH.replace(':id', user_id); } protected getEmailPath(user_id: string): string { return this.SEND_EMAIL_PATH.replace(':id', user_id); } protected getChangeRolePath(user_id: string): string { return this.CHANGE_ROLE_PATH.replace(':id', user_id); } protected getChangePasswordPath(user_id: string): string { return this.CHANGE_PASSWORD_PATH.replace(':id', user_id); } getBasepath() { return '/users'; } getBookingsPath(user_id: number): string { return this.GET_BOOKINGS_PATH; } getBookings(httpRequest: HTTPRequest): RequestPromise { httpRequest.url = this.getBookingsPath(httpRequest.data.user_id) + httpRequest.queryString; return super.get(httpRequest); } changeRole(httpRequest: HTTPRequest): RequestPromise { httpRequest.url = this.getChangeRolePath(httpRequest.data.user_id); return super.post(httpRequest); } changePassword(httpRequest: HTTPRequest): RequestPromise { httpRequest.url = this.getChangePasswordPath(httpRequest.data.user_id); return super.post(httpRequest); } sendEmail(httpRequest: HTTPRequest): RequestPromise { httpRequest.url = this.getSmsPath(httpRequest.data.user_id); delete httpRequest.data.user_id; return super.post(httpRequest); } sendSms(httpRequest: HTTPRequest): RequestPromise { httpRequest.url = this.getEmailPath(httpRequest.data.user_id); delete httpRequest.data.user_id; return super.post(httpRequest); } }