package com.yummynoodlebar.persistence.domain;
import com.yummynoodlebar.events.orders.OrderDetails;
import org.springframework.beans.BeanUtils;
import java.util.*;
public class Order {
private final Date dateTimeOfSubmission;
private Map<String, Integer> orderItems;
private final UUID key;
private OrderStatus status;
private List<OrderStatus> statusHistory;
private String name;
private String address1;
private String postcode;
public Order(final Date dateTimeOfSubmission) {
this.key = UUID.randomUUID();
this.dateTimeOfSubmission = dateTimeOfSubmission;
statusHistory = new ArrayList<OrderStatus>();
}
public void addStatus(OrderStatus newStatus) {
statusHistory.add(newStatus);
status = newStatus;
}
public OrderStatus getStatus() {
return status;
}
public Date getDateTimeOfSubmission() {
return dateTimeOfSubmission;
}
public UUID getKey() {
return key;
}
public void setOrderItems(Map<String, Integer> orderItems) {
if (orderItems == null) {
this.orderItems = Collections.emptyMap();
} else {
this.orderItems = Collections.unmodifiableMap(orderItems);
}
}
public Map<String, Integer> getOrderItems() {
return orderItems;
}
public OrderDetails toOrderDetails() {
OrderDetails details = new OrderDetails();
BeanUtils.copyProperties(this, details);
return details;
}
public static Order fromOrderDetails(OrderDetails orderDetails) {
Order order = new Order(orderDetails.getDateTimeOfSubmission());
BeanUtils.copyProperties(orderDetails, order);
return order;
}
public List<OrderStatus> getStatusHistory() {
return statusHistory;
}
public void setStatusHistory(List<OrderStatus> statusHistory) {
this.statusHistory = statusHistory;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress1() {
return address1;
}
public void setAddress1(String address1) {
this.address1 = address1;
}
public String getPostcode() {
return postcode;
}
public void setPostcode(String postcode) {
this.postcode = postcode;
}
public void setStatus(OrderStatus status) {
this.status = status;
}
}