Created
November 30, 2020 12:37
-
-
Save RenatoFranca/51e74b536c69cfa373affdc27588db25 to your computer and use it in GitHub Desktop.
Revisions
-
RenatoFranca created this gist
Nov 30, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,154 @@ // Angular import { Injectable } from '@angular/core'; import { Http, Response, Headers, RequestOptions } from '@angular/http'; import { URLSearchParams } from '@angular/http'; import { Observable } from 'rxjs/Observable'; import { environment } from '../../environments/environment'; import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/map'; // Entidades import { Grupo } from '../_models/grupo'; @Injectable() export class GrupoService { // Variáveis gerais headers: Headers; options: RequestOptions; token = environment.prefix + 'token'; private paginaUrl = environment.apiUrl + '/grupos'; /** * Construtor * * @param http */ constructor(private http: Http) { }// end constructor() /** * Converte o retorno da API para json * * @param res * @returns {any|{}} */ extractData(res: Response) { const body = res.json(); return body || { }; }// end extractData() /** * Adiciona um grupo * * @param {string} nome * * @returns {Observable<any | {}>} */ adicionar(nome: string, permissoes: any) { const body = new URLSearchParams(); body.set('nome', nome); body.set('permissoes', permissoes); const headers = new Headers(); headers.append('token', localStorage.getItem(this.token)); const options = new RequestOptions({ headers: headers }); return this.http.post(this.paginaUrl, body, options) .map(this.extractData); }// end adicionar() /** * Deleta um grupo * * @param {string} slug * * @returns {Observable<Grupo>} */ deletar(slug:string): Observable<Grupo> { const headers = new Headers(); headers.append('token', localStorage.getItem(this.token)); const options = new RequestOptions({ headers: headers }); return this.http.delete(this.paginaUrl + '/' + slug, options) .map(this.extractData); }// end deletar() /** * Edita um grupo * * @param {string} nome * @param {string} slug * * @returns {Observable<any | {}>} */ editar(id: number, nome: string, permissoes: any, slug: string) { console.log(slug); const body = new URLSearchParams(); body.set('id', id.toString()); body.set('nome', nome); body.set('permissoes', permissoes); body.set('slug', slug); const headers = new Headers(); headers.append('token', localStorage.getItem(this.token)); const options = new RequestOptions({ headers: headers }); return this.http.put(this.paginaUrl + '/' + slug, body, options) .map(this.extractData); }// end editar() /** * Consulta um grupo * * @param slug * @returns {Observable<R>} */ ler(slug: string): Observable<Grupo> { return this.http.get(this.paginaUrl + '/' + slug) .map(this.extractData) .catch(this.handleError); }// end ler() /** * Lista os grupos * * @param {number} quantidade * @param {string} ordem * @param {number} pagina * * @returns {Observable<Grupo[]>} */ listar(quantidade: number = 10, ordem: string = 'desc', pagina: number = 1): Observable<Grupo[]> { return this.http.get(this.paginaUrl + '?ordem=' + ordem + '&quantidade=' + quantidade + '&pagina=' + pagina) .map(this.extractData) .catch(this.handleError); }// end listar() /** * Consulta o total de grupos cadastrados * * @returns {Observable<Grupo[]>} */ lerTotal(): Observable<Grupo[]> { return this.http.get(this.paginaUrl + '?total') .map(this.extractData) .catch(this.handleError); }// end lerTotal() /** * Manipula os erros e retorna um json * * @param error * @returns {any} */ private handleError (error: Response | any) { let errMsg: string; if (error instanceof Response) { const body = error.json() || ''; const err = body.error || JSON.stringify(body); errMsg = `${error.status} - ${error.statusText || ''} ${err}`; } else { errMsg = error.message ? error.message : error.toString(); } return Observable.throw(errMsg); }// end handleError() }// end GrupoService