/* eslint-disable prettier/prettier */ import { HttpHeaders, HttpClient, HttpErrorResponse, } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable, catchError, tap, throwError } from 'rxjs'; import { IUtilisateur } from 'src/app/_interfaces/utilisateur/user'; import { environment } from 'src/environments/environment'; @Injectable({ providedIn: 'root', }) export class UserService { private apiUrl = `${environment.apiBaseUrl}/users/`; private baseUrl = `${environment.apiBaseUrl}/users`; private username = 'admin'; private password = 'admin'; private getHeaders(): HttpHeaders { return new HttpHeaders({ Accept: 'application/json', 'Content-Type': 'application/json', 'X-CSRFToken': '6EZeWkpQaDPitcgEckosv48y2bLvYlFbv2heOldXY9EbfeGnwLGBjd0uclhLqt0n', Authorization: 'Basic ' + btoa(`${this.username}:${this.password}`), }); } constructor(private http: HttpClient) {} // Get all user getAllUsers(): Observable { return this.http.get(this.apiUrl, { headers: this.getHeaders(), }); } // Get a single users by id getServiceById(id: number): Observable { const url = `${this.apiUrl}${id}`; return this.http.get(url, { headers: this.getHeaders() }); } toto = 'bonjour'; // Create a new users createUser(users: IUtilisateur): Observable { const userDate = users; console.log('datausers:==>', userDate); console.log('Données envoyées pour créer le users...'); return this.http .post(this.apiUrl, userDate, { headers: this.getHeaders() }) .pipe(catchError(this.errorHandler)); } updateUser(users: IUtilisateur): Observable { const userData = { id: users.id, first_name: users.first_name, last_name: users.last_name, password: users.password, profile_photo: users.profile_photo, role: users.role, username: users.username, }; const url = `${this.baseUrl}/${users.id}/`; return this.http .put(url, userData, { headers: this.getHeaders() }) .pipe( tap((updatedService: IUtilisateur) => { console.log('Utilisateur mis à jour avec succès:', updatedService); // Vous pouvez ajouter d'autres actions à effectuer en cas de succès ici }), catchError((error: HttpErrorResponse) => { if (error.status === 404) { console.error( 'Utilisateur non trouvé. Impossible de mettre à jour.' ); } else if (error.status === 400) { console.error( 'Requête invalide. Veuillez vérifier les données envoyées.' ); } else if (error.status === 500) { console.error( 'Erreur interne du serveur. Veuillez réessayer ultérieurement.' ); } else { console.error("Une erreur inattendue s'est produite:", error); } return throwError(error); }) ); } deleteUser(id: number): Observable { const url = `${this.apiUrl}/${id}`; return this.http.delete(url, { headers: this.getHeaders() }); } // eslint-disable-next-line @typescript-eslint/no-explicit-any private errorHandler(error: any): Observable { //console.error('Erreur lors de la création du users:', error); let errorMessage = ''; if (error.error instanceof ErrorEvent) { errorMessage = `Erreur côté client: ${error.error.message}`; } else { errorMessage = `Code d'erreur: ${error.status}\nMessage: ${error.message}`; } return throwError(errorMessage); } }