Skip to content

Instantly share code, notes, and snippets.

@justinramel
Created December 30, 2015 16:56
Show Gist options
  • Save justinramel/76d06f44af4fe3665fda to your computer and use it in GitHub Desktop.
Save justinramel/76d06f44af4fe3665fda to your computer and use it in GitHub Desktop.
import {Dates} from './dates';
import {RatesService} from '../pages/rates/rates.service';
import {TransactionsService} from '../pages/transactions/transactions.service';
import * as _ from 'lodash';
export class Calculate {
constructor() {
this.dates = new Dates();
this.ratesService = new RatesService();
this.transactionsService = new TransactionsService();
}
today(date = new Date()) {
let d = this.dates.createDate(date);
return this.sumRange([d,d]);
}
week(date = new Date()) {
var w = this.dates.startAndEndOfWeek(date);
return this.sumRange(w);
}
month(date = new Date()) {
let m = this.dates.startAndEndOfMonth(date);
return this.sumRange(m);
}
year(date = new Date()) {
let y = this.dates.startAndEndOfYear(date);
return this.sumRange(y);
}
sumRange(range) {
return this.ratesService.calculateDailyRate().then(dailyRate => {
return this.transactionsService.range(range).then(all => {
let totalIn = _.chain(all).filter({direction: 'In'}).map('amount').sum().value();
let totalOut = _.chain(all).filter({direction: 'Out'}).map('amount').sum().value();
let totalDailyRate = this.dates.numberOfDaysInRange(range) * dailyRate;
return (totalDailyRate + totalIn) - totalOut;
});
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment