import { Response } from '@angular/http'; import { Observable } from 'rxjs'; import { AuthHttp } from 'angular2-jwt'; import { LeadComment } from './lead-comment.model'; import { LeadCommentSerializer } from './lead-comment.serializer'; import { LeadCommentConverter } from './lead-comment.converter'; import { LeadCommentCollection } from './lead-comment.collection'; import { LeadCommentCollectionConverter } from './lead-comment.collection.converter'; import { UrlParamBuilderService } from '../service/url-param-builder.service'; import { IErrorHandler } from '../error/error-handler.interface'; import { ApiPathComponent } from '../api-path-component'; export class LeadCommentService { public constructor( private authHttp: AuthHttp, private leadCommentConverter: LeadCommentConverter, private collectionConverter: LeadCommentCollectionConverter, private serializer: LeadCommentSerializer, private baseUrl: string, private urlParamBuilderService: UrlParamBuilderService, private errorHandler: IErrorHandler ) {} public getMany(leadId: string, filters?: {[key: string]: any}, sort?: string[], page?: number, limit?: number): Observable { const url: string = this.baseUrl + '/' + ApiPathComponent.leads + '/' + leadId + '/' + ApiPathComponent.comments + '?' + this.urlParamBuilderService.build(filters, sort, page, limit) ; return this.authHttp.get(url) .catch((error?: any) => this.errorHandler.handle(error)) .map((res: Response) => this.collectionConverter.toCollection(res.json())); } public getOne(leadId: string, userId: string): Observable { const url: string = this.baseUrl + '/' + ApiPathComponent.leads + '/' + leadId + '/' + ApiPathComponent.comments + '/' + userId; return this.authHttp.get(url) .catch((error?: any) => this.errorHandler.handle(error)) .map((res: Response) => this.leadCommentConverter.toOne(res.json())); } public create(leadId: string, leadComment: LeadComment): Observable { const url: string = this.baseUrl + '/' + ApiPathComponent.leads + '/' + leadId + '/' + ApiPathComponent.comments; return this.authHttp.post(url, this.serializer.serialize(leadComment)) .catch((error?: any) => this.errorHandler.handle(error)) .map((res: Response) => this.leadCommentConverter.toOne(res.json())); } public update(leadId: string, leadComment: LeadComment): Observable { const url: string = this.baseUrl + '/' + ApiPathComponent.leads + '/' + leadId + '/' + ApiPathComponent.comments + '/' + leadComment.id; return this.authHttp.put(url, this.serializer.serialize(leadComment)) .catch((error?: any) => this.errorHandler.handle(error)) .map((res: Response) => this.leadCommentConverter.toOne(res.json())); } public delete(leadId: string, commentId: string): Observable { const url: string = this.baseUrl + '/' + ApiPathComponent.leads + '/' + leadId + '/' + ApiPathComponent.comments + '/' + commentId; return this.authHttp.delete(url) .catch((error?: any) => this.errorHandler.handle(error)) .map(() => undefined); } }