File tree Expand file tree Collapse file tree 1 file changed +18
-11
lines changed
exercises/tiered_pricing/solutions/mperezi/src/main/java/tv/codely/checkout Expand file tree Collapse file tree 1 file changed +18
-11
lines changed Original file line number Diff line number Diff line change 11package tv .codely .checkout ;
22
3+ import java .util .Arrays ;
4+
35public class TieredPricing {
46
57 private enum Tier {
6- FIRST (299.0 ),
7- SECOND (239.0 ),
8- THIRD (219.0 );
8+ FIRST (299.0 , 1 , 2 ),
9+ SECOND (239.0 , 3 , 10 ),
10+ THIRD (219.0 , 11 , 25 );
911
1012 final double unitPrice ;
13+ final int startRange ;
14+ final int endRange ;
1115
12- Tier (double unitPrice ) {
16+ Tier (double unitPrice , int startRange , int endRange ) {
1317 this .unitPrice = unitPrice ;
18+ this .startRange = startRange ;
19+ this .endRange = endRange ;
20+ }
21+
22+ static Tier of (int subscriptions ) {
23+ return Arrays .stream (values ())
24+ .filter (tier -> subscriptions >= tier .startRange && subscriptions <= tier .endRange )
25+ .findFirst ()
26+ .orElseThrow (() -> new IllegalArgumentException ("Invalid number of subscriptions: " + subscriptions ));
1427 }
1528 }
1629
@@ -19,12 +32,6 @@ public double totalPrice(int subscriptions) {
1932 }
2033
2134 private Tier getTier (int subscriptions ) {
22- if (subscriptions < 3 ) {
23- return Tier .FIRST ;
24- }
25- if (subscriptions < 11 ) {
26- return Tier .SECOND ;
27- }
28- return Tier .THIRD ;
35+ return Tier .of (subscriptions );
2936 }
3037}
You can’t perform that action at this time.
0 commit comments