Skip to content

Instantly share code, notes, and snippets.

@emanoelqueiroz
Last active November 29, 2017 18:37
Show Gist options
  • Save emanoelqueiroz/451f1470932ad3bb72e3d81d2fb0e4d3 to your computer and use it in GitHub Desktop.
Save emanoelqueiroz/451f1470932ad3bb72e3d81d2fb0e4d3 to your computer and use it in GitHub Desktop.
Código Preciso
var dataDb = [{
id: 1,
dataIni: new Date('2017-01-20'),
dataFin: new Date('2017-01-24'),
val: 50
},
{
id: 2,
dataIni: new Date('2017-01-25'),
dataFin: new Date('2017-02-08'),
val: 100
}
];
function lastDay(month, year) {
let d = new Date(year, month, 0);
return d.getDate();
}
function cleanDatesVal(arr) {
let objs = [];
for (let i = 0; i < arr.length; i++) {
let obj = {};
let dataIniDays = arr[i].dataIni.getDate() + 1;
let dataFinDays = arr[i].dataFin.getDate() + 1;
let dataIniMonth = arr[i].dataIni.getMonth() + 1;
let dataFinMonth = arr[i].dataFin.getMonth() + 1;
let dataIniYear = arr[i].dataIni.getFullYear();
let dataFinYear = arr[i].dataFin.getFullYear();
if (dataIniMonth !== dataFinMonth) {
let lastDayVal = lastDay(dataIniMonth, dataIniYear);
let dayUntilFinal = (lastDayVal - dataIniDays) + 1;
let diasToSave = dayUntilFinal + dataFinDays;
let finalVal = (arr[i].val / diasToSave) * dayUntilFinal;
obj['id'] = arr[i].id;
obj['dias'] = dayUntilFinal;
obj['val'] = finalVal;
objs.push(obj);
continue;
}
obj['id'] = arr[i].id;
obj['dias'] = (dataFinDays - dataIniDays) + 1;
obj['val'] = arr[i].val;
objs.push(obj);
}
return objs;
}
function getFinalVal(arr) {
let val = 0;
for (let i = 0; i < arr.length; i++) {
val += arr[i].val;
}
return val.toFixed(2);
}
var objs = cleanDatesVal(dataDb);
console.log(`---------------------------------`);
console.log(`Valor Final: ${getFinalVal(objs)}`);
console.log(`---------------------------------`);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment