import { HttpClient } from '../http-client'; import type { BaseResponse } from '../types/common'; import type { UserImportRequest, UserResponse, UserSearchRequest, UserSearchResponse, UserSetProjectRequest, UserSetTenantRequest, UserSetTenantsRequest, UserTenantRequest, UserUpdateRequest, UserUpdateRolesRequest } from '../types/user.types'; function normalizePageable(params: UserSearchRequest): UserSearchRequest { return { ...params, pageable: { pageNumber: params.pageable?.pageNumber ?? 0, pageSize: params.pageable?.pageSize ?? 20, sort: params.pageable?.sort ?? { orders: [] } } }; } class UserService { private http: HttpClient; constructor(http: HttpClient) { this.http = http; } async getById(userId: string): Promise { return this.http.requestAndValidate('/users/get-user-by-id', { method: 'POST', body: { userId } }); } async getByEmail(email: string): Promise { return this.http.requestAndValidate('/users/get-user-by-email', { method: 'POST', body: { email } }); } async search(params: UserSearchRequest = {}): Promise { return this.http.requestAndValidate('/users/search-users', { method: 'POST', body: normalizePageable(params) }); } async update(data: UserUpdateRequest): Promise { return this.http.requestAndValidate('/users/update-user', { method: 'POST', body: data }); } async updateRoles(data: UserUpdateRolesRequest): Promise { return this.http.requestAndValidate('/users/update-user-roles', { method: 'POST', body: data }); } async delete(userId: string): Promise { return this.http.requestAndValidate('/users/delete-user', { method: 'POST', body: { userId } }); } async enable(userId: string): Promise { return this.http.requestAndValidate('/users/enable-user', { method: 'POST', body: { userId } }); } async disable(userId: string): Promise { return this.http.requestAndValidate('/users/disable-user', { method: 'POST', body: { userId } }); } async importUser(data: UserImportRequest): Promise { return this.http.requestAndValidate('/users/import-user', { method: 'POST', body: data }); } async addToTenant(data: UserTenantRequest): Promise { return this.http.requestAndValidate('/users/add-user-to-tenant', { method: 'POST', body: data }); } async removeFromTenant(data: UserTenantRequest): Promise { return this.http.requestAndValidate('/users/remove-user-from-tenant', { method: 'POST', body: data }); } async setTenants(data: UserSetTenantsRequest): Promise { return this.http.requestAndValidate('/users/set-user-tenants', { method: 'POST', body: data }); } async setTenant(data: UserSetTenantRequest): Promise { return this.http.requestAndValidate('/users/set-tenant', { method: 'POST', body: data }); } async setProject(data: UserSetProjectRequest): Promise { return this.http.requestAndValidate('/users/set-project', { method: 'POST', body: data }); } } export { UserService };