import {EventEmitter, Output} from '@angular/core';
import {HttpErrorResponse} from '@angular/common/http';
import {Observable, throwError} from 'rxjs';

export class ApiBase {
	@Output() errorEvent: EventEmitter<any> = new EventEmitter(true);

	protected handleError<T>(operation = 'operation', result?: T) {
		return (error: HttpErrorResponse): Observable<T> => {
			console.log("HANDLE ERROR", error.status)
			// console.error(`${operation} failed henry: ${error.message}`);
			let msg: any = [];
			let status = error.status;
			//if(!error.status){
			//	return throwError(null);
			//}
			if (error.status === 401) {
				msg[0] = 'Usuario y/o contraseña incorrecta, intente de nuevo';
				//status = error.status;
			} else if (error.status === 403) {
				msg[0] = 'No cuentas con los suficientes permisos.';
				//status = error.status;
			} else if (error.status === 422) {
				let i = 0;
				for (let e of error.error.errors) {
					msg[i] = e;
					i++;
				}
				//status = 'warning-snackbar';
			} else if (error.status === 404) {
				msg[0] = 'La ruta no se encuentra disponible.';
				//status = 'error-snackbar';
			} else {
				msg[0] = 'Algo salió mal, intente de nuevo';
				//status = 'error-snackbar';
			}
			let info = {msg: msg, status: status, error: error.error.error};
			console.log('MENSAJE=> ', info);

			this.errorEvent.emit(info);

			return throwError(msg);
		};
	}


}
