forked from alexandreaquiles/the_rental_example
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Customer.java
64 lines (53 loc) · 1.99 KB
/
Customer.java
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.aquiles.alexandre;
import java.util.ArrayList;
import java.util.Collection;
public class Customer {
private String name;
private Collection<Rental> rentals;
public Customer(String name) {
super();
rentals = new ArrayList<Rental>();
this.name = name;
}
public String getName() {
return name;
}
public void addRental(Rental rental) {
rentals.add(rental);
}
public String statement() {
double totalAmount = 0;
int frequentRenterPoints = 0;
String result = "Rental record for " + getName() + "\n";
for (Rental rental : rentals) {
double thisAmount = 0;
switch (rental.getMovie().getPriceCode()) {
case REGULAR:
thisAmount += 2;
if (rental.getDaysRented() > 2)
thisAmount += (rental.getDaysRented() - 2) * 1.5;
break;
case NEW_RELEASE:
thisAmount += rental.getDaysRented() * 3;
break;
case CHILDRENS:
thisAmount += 1.5;
if (rental.getDaysRented() > 3)
thisAmount += (rental.getDaysRented() - 3) * 1.5;
break;
}
//add frequent renter points
frequentRenterPoints++;
//add bonus for a two day new release rental
if (rental.getMovie().getPriceCode() == Movie.PriceCode.NEW_RELEASE && rental.getDaysRented() > 1)
frequentRenterPoints++;
//show figures for this rental
result += "\t" + rental.getMovie().getTitle() + "\t" + String.valueOf(thisAmount) + "\n";
totalAmount += thisAmount;
}
//add footer lines
result += "Amount owed is " + String.valueOf(totalAmount) + "\n";
result += "You earned " + String.valueOf(frequentRenterPoints) + " frequent renter points";
return result;
}
}