-
Notifications
You must be signed in to change notification settings - Fork 240
/
index.js
50 lines (44 loc) · 1.59 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const { readFileSync } = require('fs');
function gerarFaturaStr (fatura, pecas) {
let totalFatura = 0;
let creditos = 0;
let faturaStr = `Fatura ${fatura.cliente}\n`;
const formato = new Intl.NumberFormat("pt-BR",
{ style: "currency", currency: "BRL",
minimumFractionDigits: 2 }).format;
for (let apre of fatura.apresentacoes) {
const peca = pecas[apre.id];
let total = 0;
switch (peca.tipo) {
case "tragedia":
total = 40000;
if (apre.audiencia > 30) {
total += 1000 * (apre.audiencia - 30);
}
break;
case "comedia":
total = 30000;
if (apre.audiencia > 20) {
total += 10000 + 500 * (apre.audiencia - 20);
}
total += 300 * apre.audiencia;
break;
default:
throw new Error(`Peça desconhecia: ${peca.tipo}`);
}
// créditos para próximas contratações
creditos += Math.max(apre.audiencia - 30, 0);
if (peca.tipo === "comedia")
creditos += Math.floor(apre.audiencia / 5);
// mais uma linha da fatura
faturaStr += ` ${peca.nome}: ${formato(total/100)} (${apre.audiencia} assentos)\n`;
totalFatura += total;
}
faturaStr += `Valor total: ${formato(totalFatura/100)}\n`;
faturaStr += `Créditos acumulados: ${creditos} \n`;
return faturaStr;
}
const faturas = JSON.parse(readFileSync('./faturas.json'));
const pecas = JSON.parse(readFileSync('./pecas.json'));
const faturaStr = gerarFaturaStr(faturas, pecas);
console.log(faturaStr);