import {ErrorHandler, Injectable, Injector} from "@angular/core";
import {HttpErrorResponse} from "@angular/common/http";
import {MatSnackBar} from "@angular/material/snack-bar";
import * as _ from 'underscore';

@Injectable()
export class DefaultErrorHandler implements ErrorHandler {

  constructor(private injector: Injector) {
  }

  handleError(err: any): void {
    if (_.has(err, 'promise')) {
      err = err.rejection;
    }
    if (err instanceof HttpErrorResponse) {
      let snackBar = this.injector.get(MatSnackBar);
      switch (err.status) {
        case 401:
        case 403:
          snackBar.open(err.status + ". Ошибка авторизации " + err.statusText);
          break;
        case 500:
          snackBar.open("500. Произошла внутренняя ошибка сервера ");
          break;
        case 504:
          snackBar.open("504. Сервер не отвечает");
          break;
        default:
          snackBar.open(err.status + ". Неизвестная ошибка при входе в систему " + err.statusText);
      }

    } else {
      console.error("DefaultErrorHandler: ", err);
    }

  }
}
