accountant-ui/src/operations/operation.service.ts
2017-07-30 16:22:44 +02:00

70 lines
1.4 KiB
TypeScript

// 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<Operation[]> {
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<Operation> {
return this.one(id).get();
}
create(operation: Operation): Observable<Operation> {
return this.all().post(operation);
}
update(operation: Operation): Observable<Operation> {
return this.one(operation.id).post(null, operation);
}
delete(operation: Operation): Observable<Operation> {
return this.one(operation.id).remove();
}
}