import { Injectable } from '@angular/core'; import { Http, Response, Headers, RequestOptions } from '@angular/http'; import { Contato } from './contato'; import { Observable } from 'rxjs/Observable'; @Injectable() export class ContatoService { private url = 'http://localhost:2301/administrativo/cpd/contato'; private filtro : Contato = new Contato(); constructor(private http: Http) {} // altera ou inclui Contato update(contato : Contato): Observable { let body = JSON.stringify(contato); if(!contato.id){ return this.http.post(this.url, body) .map(response => response.json()) .catch(this.handleError); }else{ return this.http.put(this.url + "/" + contato.id , body) .map(response => response.json()) .catch(this.handleError); } } // deleta Contato deletar(contato : Contato): Observable { return this.http.delete(this.url + "/" + contato.id) .map(response => response.json()) .catch(this.handleError); } // lista todos (sem filtro) listar(): Observable { return this.http.get(this.url) .map(response => response.json()) .catch(this.handleError); } // filtra filtrar(filtro : Contato): Observable { let novaUrl = this.url + "/\?filter={"; let colocaVirgula = false; if(filtro.nome){ novaUrl += "denominacao__contains:\"" + filtro.nome + "\""; colocaVirgula = true; } if(filtro.cargo){ if(colocaVirgula){ novaUrl += ", "; } novaUrl += "questionario:\"" + filtro.cargo + "\""; } novaUrl += "}"; return this.http.get(novaUrl) .map(response => response.json()) .catch(this.handleError); } // recupera por id getId(id : number): Observable { return this.http.get(this.url + "/" + id) .map(this.extractObjectData) .catch(this.handleError); } // extrai lista da resposta http private extractListData(res: Response) { let body = res.json(); return body as Contato[] ; } // extrai objeto da resposta http private extractObjectData(res: Response) { let body = res.json(); return body as Contato ; } // manipula erros da resposta http private handleError (error: Response | any) { let errMsg: string; if (error instanceof Response) { const body = error.json() || ''; const err = body.message || JSON.stringify(body); console.log(`${error.status} - ${error.statusText || ''} ${err}`); errMsg = err; } else { errMsg = error.message ? error.message : error.toString(); } console.error(errMsg); return Observable.throw(errMsg); } }