Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable } from "@angular/core";
- import { HttpClient, HttpRequest, HttpEventType, HttpErrorResponse } from '@angular/common/http';
- import { HttpUtilsService } from '../metronic/core/_base/crud';
- import { FilterGroups } from '../models/filters';
- import { Observable, throwError } from 'rxjs';
- import { Paginate } from '../models/paginate.model';
- import { map } from 'rxjs/internal/operators/map';
- import { catchError } from 'rxjs/operators';
- @Injectable()
- export class BaseService<TModel> {
- constructor(protected http: HttpClient,
- protected httpUtils: HttpUtilsService) { }
- protected request<T = any>(req: HttpRequest<T>) {
- switch (req.method.toLowerCase()) {
- case 'PUT':
- case 'POST':
- req.headers.append('Content-Type','application/json')
- break;
- default:
- break;
- }
- return this.http.request<T>(req).pipe(
- map(event => {
- switch (event.type) {
- case HttpEventType.Response:
- return event.body as T;
- default:
- return event;
- }
- }),
- catchError(this.handleError)
- )
- //.toPromise()
- ;
- }
- private handleError(error: HttpErrorResponse) {
- if (error.error instanceof ErrorEvent) {
- // A client-side or network error occurred. Handle it accordingly.
- console.error('An error occurred:', error.error.message);
- } else {
- // The backend returned an unsuccessful response code.
- // The response body may contain clues as to what went wrong,
- console.error(
- `Backend returned code ${error.status}, ` +
- `body was: ${error.error}`);
- }
- // return an observable with a user-facing error message
- return throwError(
- 'Something bad happened; please try again later.');
- };
- protected getByFilterHandler(url: string, filters: FilterGroups<TModel>, page: number, limit: number): Observable<Paginate<TModel>> {
- if (page && page > 0) {
- page = page - 1;
- }
- let _params = 'page=' + page.toString();
- _params += '&resultsPerPage=' + limit.toString();
- return this.http.post<Paginate<TModel>>(url, { method: 'POST', body: filters, search: _params });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement