import { HttpClient, HttpErrorResponse, HttpHeaders, } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable, catchError, throwError } from 'rxjs'; import { ITransaction, IMerchantData, } from 'src/app/_interfaces/trafics/transaction/transaction'; import { environment } from 'src/environments/environment'; // @Injectable({ // providedIn: 'root', // }) // export class TransactionService { // username = 'admin'; // password = 'admin'; // private HtUrl = `${environment.apiBaseUrl}/api/tableau_bord/1`; // private TUrl = `${environment.apiBaseUrl}/transactions`; // httpOptions = { // headers: new HttpHeaders({ // 'Content-Type': 'application/json', // }), // }; // constructor(private httpClient: HttpClient) {} // // Get all transactions // getAll(): Observable { // const headers = new HttpHeaders({ // Accept: 'application/json', // 'Content-Type': 'application/json', // 'X-CSRFToken': // '6EZeWkpQaDPitcgEckosv48y2bLvYlFbv2heOldXY9EbfeGnwLGBjd0uclhLqt0n', // Authorization: 'Basic ' + btoa(`${this.username}:${this.password}`), // }); // return this.httpClient // .get(this.TUrl, { headers }) // .pipe(catchError(this.errorHandler)); // } // // Get merchant data for a table // getDataTable(): Observable { // const headers = new HttpHeaders({ // Accept: 'application/json', // 'Content-Type': 'application/json', // 'X-CSRFToken': // '6EZeWkpQaDPitcgEckosv48y2bLvYlFbv2heOldXY9EbfeGnwLGBjd0uclhLqt0n', // Authorization: 'Basic ' + btoa(`${this.username}:${this.password}`), // }); // return this.httpClient // .get(this.HtUrl, { headers }) // .pipe(catchError(this.errorHandler)); // } // // Create a new transaction // create(transaction: ITransaction): Observable { // const headers = new HttpHeaders({ // Accept: 'application/json', // 'Content-Type': 'application/json', // 'X-CSRFToken': // '6EZeWkpQaDPitcgEckosv48y2bLvYlFbv2heOldXY9EbfeGnwLGBjd0uclhLqt0n', // Authorization: 'Basic ' + btoa(`${this.username}:${this.password}`), // }); // return this.httpClient // .post(this.TUrl, transaction, { headers }) // .pipe(catchError(this.errorHandler)); // } // // Find a transaction by id // find(transaction_id: number): Observable { // const headers = new HttpHeaders({ // Accept: 'application/json', // 'Content-Type': 'application/json', // 'X-CSRFToken': // '6EZeWkpQaDPitcgEckosv48y2bLvYlFbv2heOldXY9EbfeGnwLGBjd0uclhLqt0n', // Authorization: 'Basic ' + btoa(`${this.username}:${this.password}`), // }); // const url = `${this.TUrl}/${transaction_id}`; // return this.httpClient // .get(url, { headers }) // .pipe(catchError(this.errorHandler)); // } // // Update an existing transaction // update( // transaction_id: number, // transaction: ITransaction // ): Observable { // const headers = new HttpHeaders({ // Accept: 'application/json', // 'Content-Type': 'application/json', // 'X-CSRFToken': // '6EZeWkpQaDPitcgEckosv48y2bLvYlFbv2heOldXY9EbfeGnwLGBjd0uclhLqt0n', // Authorization: 'Basic ' + btoa(`${this.username}:${this.password}`), // }); // const url = `${this.TUrl}/${transaction_id}`; // return this.httpClient // .put(url, transaction, { headers }) // .pipe(catchError(this.errorHandler)); // } // // Delete a transaction // delete(transaction_id: number): Observable { // const headers = new HttpHeaders({ // Accept: 'application/json', // 'Content-Type': 'application/json', // 'X-CSRFToken': // '6EZeWkpQaDPitcgEckosv48y2bLvYlFbv2heOldXY9EbfeGnwLGBjd0uclhLqt0n', // Authorization: 'Basic ' + btoa(`${this.username}:${this.password}`), // }); // const url = `${this.TUrl}/${transaction_id}`; // return this.httpClient // .delete(url, { headers }) // .pipe(catchError(this.errorHandler)); // } // // Error handler // private errorHandler(error: any) { // let errorMessage = ''; // if (error.error instanceof ErrorEvent) { // errorMessage = error.error.message; // } else { // errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`; // } // return throwError(() => new Error(errorMessage)); // } // } @Injectable({ providedIn: 'root', }) export class TransactionService { private username = 'admin'; private password = 'admin'; private baseURL = environment.apiBaseUrl; private HtUrl = `${this.baseURL}/api/tableau_bord/1`; private TUrl = `${this.baseURL}/transactions`; constructor(private httpClient: HttpClient) {} private getHeaders(): HttpHeaders { return new HttpHeaders({ Accept: 'application/json', 'Content-Type': 'application/json', 'X-CSRFToken': '6EZeWkpQaDPitcgEckosv48y2bLvYlFbv2heOldXY9EbfeGnwLGBjd0uclhLqt0n', Authorization: 'Basic ' + btoa(`${this.username}:${this.password}`), }); } getAll(): Observable { return this.httpClient .get(this.TUrl, { headers: this.getHeaders() }) .pipe(catchError(this.errorHandler)); } getDataTable(): Observable { return this.httpClient .get(this.HtUrl, { headers: this.getHeaders() }) .pipe(catchError(this.errorHandler)); } create(transaction: ITransaction): Observable { return this.httpClient .post(this.TUrl, transaction, { headers: this.getHeaders(), }) .pipe(catchError(this.errorHandler)); } find(transaction_id: number): Observable { const url = `${this.TUrl}/${transaction_id}`; return this.httpClient .get(url, { headers: this.getHeaders() }) .pipe(catchError(this.errorHandler)); } update( transaction_id: number, transaction: ITransaction ): Observable { const url = `${this.TUrl}/${transaction_id}`; return this.httpClient .put(url, transaction, { headers: this.getHeaders() }) .pipe(catchError(this.errorHandler)); } delete(transaction_id: number): Observable { const url = `${this.TUrl}/${transaction_id}`; return this.httpClient .delete(url, { headers: this.getHeaders() }) .pipe(catchError(this.errorHandler)); } private errorHandler(error: HttpErrorResponse) { let errorMessage = ''; if (error.error instanceof ErrorEvent) { errorMessage = `Client-side error: ${error.error.message}`; } else { switch (error.status) { case 403: errorMessage = "Accès refusé. Vérifiez vos informations d'authentification."; break; case 404: errorMessage = 'Ressource non trouvée'; break; case 500: errorMessage = 'Erreur interne du serveur'; break; default: errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`; } } return throwError(() => new Error(errorMessage)); } }