Advertisement
Guest User

base.service

a guest
Dec 8th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.45 KB | None | 0 0
  1. import { Injectable } from "@angular/core";
  2. import { HttpClient, HttpRequest, HttpEventType, HttpErrorResponse } from '@angular/common/http';
  3. import { HttpUtilsService } from '../metronic/core/_base/crud';
  4. import { FilterGroups } from '../models/filters';
  5. import { Observable, throwError } from 'rxjs';
  6. import { Paginate } from '../models/paginate.model';
  7. import { map } from 'rxjs/internal/operators/map';
  8. import { catchError } from 'rxjs/operators';
  9.  
  10. @Injectable()
  11. export class BaseService<TModel> {
  12.     constructor(protected http: HttpClient,
  13.         protected httpUtils: HttpUtilsService) { }
  14.  
  15.     protected request<T = any>(req: HttpRequest<T>) {
  16.         switch (req.method.toLowerCase()) {
  17.             case 'PUT':
  18.             case 'POST':
  19.                 req.headers.append('Content-Type','application/json')
  20.                 break;
  21.  
  22.             default:
  23.                 break;
  24.         }
  25.         return this.http.request<T>(req).pipe(
  26.             map(event => {
  27.                 switch (event.type) {
  28.                     case HttpEventType.Response:
  29.                         return event.body as T;
  30.                     default:
  31.                         return event;
  32.                 }
  33.             }),
  34.             catchError(this.handleError)
  35.         )
  36.         //.toPromise()
  37.         ;
  38.     }
  39.  
  40.     private handleError(error: HttpErrorResponse) {
  41.         if (error.error instanceof ErrorEvent) {
  42.             // A client-side or network error occurred. Handle it accordingly.
  43.             console.error('An error occurred:', error.error.message);
  44.         } else {
  45.             // The backend returned an unsuccessful response code.
  46.             // The response body may contain clues as to what went wrong,
  47.             console.error(
  48.                 `Backend returned code ${error.status}, ` +
  49.                 `body was: ${error.error}`);
  50.         }
  51.         // return an observable with a user-facing error message
  52.         return throwError(
  53.             'Something bad happened; please try again later.');
  54.     };
  55.  
  56.     protected getByFilterHandler(url: string, filters: FilterGroups<TModel>, page: number, limit: number): Observable<Paginate<TModel>> {
  57.  
  58.         if (page && page > 0) {
  59.             page = page - 1;
  60.         }
  61.  
  62.         let _params = 'page=' + page.toString();
  63.         _params += '&resultsPerPage=' + limit.toString();
  64.  
  65.         return this.http.post<Paginate<TModel>>(url, { method: 'POST', body: filters, search: _params });
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement