summaryrefslogtreecommitdiff
path: root/src/main/java/ca/mokhan/assignment1/BonusOnSavings.java
diff options
context:
space:
mode:
authormokha <mokha@cisco.com>2019-05-05 19:25:48 -0600
committermokha <mokha@cisco.com>2019-05-05 19:25:48 -0600
commit46e409f3ca33ec3c7546d0589301c2a4f967c10a (patch)
tree55ed5a3297517719af1856f8fd0fa848dd4b94b5 /src/main/java/ca/mokhan/assignment1/BonusOnSavings.java
parentc66b9591c81f93e3966050cc7c88981018e9b542 (diff)
collapse assignment1 dir
Diffstat (limited to 'src/main/java/ca/mokhan/assignment1/BonusOnSavings.java')
-rw-r--r--src/main/java/ca/mokhan/assignment1/BonusOnSavings.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main/java/ca/mokhan/assignment1/BonusOnSavings.java b/src/main/java/ca/mokhan/assignment1/BonusOnSavings.java
new file mode 100644
index 0000000..41090ec
--- /dev/null
+++ b/src/main/java/ca/mokhan/assignment1/BonusOnSavings.java
@@ -0,0 +1,36 @@
+package ca.mokhan.assignment1;
+
+public class BonusOnSavings {
+ double annualRate = 0.0;
+ double quarterlyRate = 0.0;
+
+ public BonusOnSavings() {
+ this(0.03, 0.05);
+ }
+
+ public BonusOnSavings(double quarterlyRate, double annualRate) {
+ this.quarterlyRate = quarterlyRate;
+ this.annualRate = annualRate;
+ }
+
+ public double computeBonus(double monthlyCommitment, double q1, double q2, double q3, double q4) {
+ double quarterlyTarget = monthlyCommitment * 3;
+ double annualTarget = monthlyCommitment * 12;
+
+ return this.quarterlyBonus(quarterlyTarget, q1)
+ + this.quarterlyBonus(quarterlyTarget, q2)
+ + this.quarterlyBonus(quarterlyTarget, q3)
+ + this.quarterlyBonus(quarterlyTarget, q4)
+ + this.annualBonus(annualTarget, q1 + q2 + q3 + q4);
+ }
+
+ private double quarterlyBonus(double target, double actual) {
+ return (actual >= target) ? actual * this.quarterlyRate : 0.0;
+ }
+
+ private double annualBonus(double target, double actual) {
+ if (actual < target) return 0.0;
+
+ return (actual * this.annualRate) + ((actual - target) * 0.25);
+ }
+}