// vim: set tw=80 ts=2 sw=2 sts=2 : import * as moment from 'moment'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Rx'; import { Restangular } from "ngx-restangular"; import { Operation } from './operation'; @Injectable() export class OperationService { constructor( private restangular: Restangular ) {} private all() { return this.restangular.all('operation'); } private one(id: number) { return this.restangular.one('operation', id); } formatDate(date: Date|string) { if(date instanceof Date) { return moment(date).format('YYYY-MM-DD'); } return date; } query( accountId: number, minDate: Date|string = null, maxDate: Date|string = null ): Observable { var dateRange: any = { account_id: accountId }; if(minDate) { dateRange.begin = this.formatDate(minDate); } if(maxDate) { dateRange.end = this.formatDate(maxDate); } return this.all().getList(dateRange); } get(id: number): Observable { return this.one(id).get(); } create(operation: Operation): Observable { return this.all().post(operation); } update(operation: Operation): Observable { return this.one(operation.id).post(null, operation); } delete(operation: Operation): Observable { return this.one(operation.id).remove(); } }