import {
    JobPriceType,
} from '../model/jobTpl';

export const evenRound = (num: number, decimalPlaces: number) => {
  const d = decimalPlaces || 0;
  const m = Math.pow(10, d);
  const n = +(d ? num * m : num).toFixed(8); // Avoid rounding errors
  const i = Math.floor(n);
  const f = n - i;
  const e = 1e-8; // Allow for rounding errors in f
  const r = (f > 0.5 - e && f < 0.5 + e) ?
        ((i % 2 === 0) ? i : i + 1) : Math.round(n);
  return d ? r / m : r;
};

export const jobPriceCalcStrategies = new Map([
  [JobPriceType.fixed, (vol: number, jobTpl: any): number => {
    return jobTpl.price;
  }],
  [JobPriceType.hourly, (vol: number, jobTpl: any): number => {
    return (vol / jobTpl.volPerHour) * jobTpl.price;
  }],
    // TODO: implement custom price calculation
  [JobPriceType.custom, (vol: number, jobTpl: any): number => {
    return jobTpl.price;
  }],
]);
