import { inject, Injectable } from '@angular/core'; import { ApiService, LabelValue } from 'codefoxui'; import { map, Observable } from 'rxjs'; import { Configuration, InitResponse, LoginRequest, Permission, UserData, UserEditor, UserGroupEditor } from 'src/app/interfaces'; @Injectable({ providedIn: 'root' }) export class LocalApiService { apiService: ApiService = inject(ApiService); // CONFIGURATIONS getConfiguration(): Observable { return this.apiService.getFileText("#assets/config.json").pipe( map(configuration => JSON.parse(configuration)) ); } // INIT init(): Observable { return this.apiService.get("init"); } // LOGIN login(loginRequest: LoginRequest): Observable<{ userData: UserData }> { return this.apiService.post('user/login', loginRequest); } // LOGOUT logout(): Observable<{}> { return this.apiService.delete("user/logout"); } // USERS createUser(request: UserEditor): Observable<{}> { return this.apiService.post('users', request); } getUser(id: number): Observable<{ userEditor: UserEditor }> { return this.apiService.get('users/' + id); } updateUser(id: number, request: UserEditor): Observable<{}> { return this.apiService.patch('users/' + id, request); } deleteUser(id: number): Observable<{}> { return this.apiService.delete('users/' + id); } // USERGROUPS createUserGroup(request: UserGroupEditor): Observable<{}> { return this.apiService.post('usergroups', request); } getUserGroup(id: number): Observable<{ userGroupEditor: UserGroupEditor }> { return this.apiService.get('usergroups/' + id); } updateUserGroup(id: number, request: UserGroupEditor): Observable<{}> { return this.apiService.patch('usergroups/' + id, request); } deleteUserGroup(id: number): Observable<{}> { return this.apiService.delete('usergroups/' + id); } // PERMISSIONS getPermissions(): Observable<{ permissions: Permission[] }> { return this.apiService.get('permissions'); } // GET LIST getList(endPoint: string): Observable[]> { return this.apiService.get<{ items: LabelValue[] }>(endPoint).pipe(map(({ items }) => items)); } }