summaryrefslogtreecommitdiff
path: root/src/Result.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Result.jsx')
-rw-r--r--src/Result.jsx44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/Result.jsx b/src/Result.jsx
new file mode 100644
index 0000000..0ea4810
--- /dev/null
+++ b/src/Result.jsx
@@ -0,0 +1,44 @@
+import {useEffect, useState} from "react";
+import entry from "./Entry.jsx";
+
+function Result({listEntry, baseSalary}) {
+ const [totalOvertimePay, setTotalOvertimePay] = useState(0);
+
+ useEffect(() => {
+ setTotalOvertimePay(getOvertimePayTotal(listEntry, baseSalary));
+ }, [listEntry, baseSalary]);
+
+ return (
+ <div>
+ Totalnye: Rp{totalOvertimePay}
+ {listEntry.map((entry) => {
+ return (
+ <div key={entry.id}>
+ <p>{entry.date.format('DD MMMM YYYY')} dapetnya Rp{calculatePerDay(entry, baseSalary)}</p>
+ </div>
+ )
+ })}
+ </div>
+ )
+}
+
+function calculatePerDay(entry, baseSalary) {
+ const hourlyPay = baseSalary / 173;
+ const timeDiff = entry.finish.diff(entry.start, 'hour', true);
+ let multiplier = 1.5; // Jam pertama
+ if (timeDiff > 1) {
+ multiplier += (timeDiff - 1) * 2; // Jam jam berikutnya
+ }
+
+ return multiplier * hourlyPay;
+}
+
+function getOvertimePayTotal(listEntry, baseSalary) {
+ let total = 0;
+ listEntry.forEach((entry) => {
+ total += calculatePerDay(entry, baseSalary)
+ });
+ return total;
+}
+
+export default Result; \ No newline at end of file