/* eslint-disable prettier/prettier */ import { HttpClient, HttpErrorResponse, HttpHeaders, } from '@angular/common/http'; import { tap } from 'rxjs/operators'; import { Injectable } from '@angular/core'; import { Observable, catchError, throwError } from 'rxjs'; import { IService } from 'src/app/_interfaces/servives/service'; import { environment } from 'src/environments/environment'; @Injectable({ providedIn: 'root', }) export class ServiceService { private username = 'admin'; private password = 'admin'; private SUrl = `${environment.apiBaseUrl}/services/`; //private UUrl = `${environment.apiBaseUrl}/services/{service_id}/`; private baseUrl = `${environment.apiBaseUrl}/services`; 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 services getServices(): Observable { return this.http.get(this.SUrl, { headers: this.getHeaders() }); } // Get a single service by id getServiceById(service_id: number): Observable { const url = `${this.baseUrl}/${service_id}`; return this.http.get(url, { headers: this.getHeaders() }); } // Create a new service createService(service: IService): Observable { const serviceData = JSON.stringify(service); console.log('service:==>', serviceData); console.log('service:===========>', serviceData); console.log('Données envoyées pour créer le service...'); return this.http .post(this.SUrl, serviceData, { headers: this.getHeaders() }) .pipe(catchError(this.errorHandler)); } updateService(service: IService): Observable { const serviceData = { service_id: service.service_id, nom_service: service.nom_service, description: service.description, marchand: service.marchand, }; const url = `${this.baseUrl}/${service.service_id}/`; return this.http .put(url, serviceData, { headers: this.getHeaders() }) .pipe( tap((updatedService: IService) => { console.log('Service 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('Service 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); }) ); } deleteService(service_id: number): Observable { const url = `${this.baseUrl}/${service_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 service:', 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); } }