package com.yummynoodlebar.web.controller.fixture;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.yummynoodlebar.events.menu.AllMenuItemsEvent;
import com.yummynoodlebar.events.menu.MenuItemDetails;
import com.yummynoodlebar.events.orders.OrderCreatedEvent;
import com.yummynoodlebar.events.orders.OrderDetails;
import com.yummynoodlebar.events.orders.OrderDetailsEvent;
import com.yummynoodlebar.events.orders.OrderStatusDetails;
import com.yummynoodlebar.events.orders.OrderStatusEvent;
import com.yummynoodlebar.events.orders.RequestOrderDetailsEvent;
import com.yummynoodlebar.web.domain.MenuItem;
public class WebDataFixture {
public static final String CUSTOMER_NAME = "Best Customer";
public static final String NAME = "Yummy Noodles";
public static final String CHEF_SPECIAL = "Special ";
public static final String LOW_CAL = "Low cal ";
public static final BigDecimal COST = new BigDecimal("10.99");
public static final int MINUTES_TO_PREPARE = 5;
public static final String STATUS_RECEIVED = "RECEIVED";
public static OrderCreatedEvent newOrder(UUID id) {
return new OrderCreatedEvent(id, new OrderDetails());
}
public static RequestOrderDetailsEvent orderDetailsRequest(UUID id) {
return new RequestOrderDetailsEvent(id);
}
public static OrderDetailsEvent orderDetailsEvent(UUID id) {
return new OrderDetailsEvent(id, standardOrderDetails(id));
}
public static OrderDetails standardOrderDetails () {
return standardOrderDetails(UUID.randomUUID());
}
public static OrderDetails standardOrderDetails (UUID id) {
OrderDetails orderDetails = new OrderDetails(id);
orderDetails.setName(CUSTOMER_NAME);
return orderDetails;
}
public static OrderStatusEvent orderStatusEvent(UUID id) {
return new OrderStatusEvent(id, standardOrderStatusDetails(id));
}
public static OrderStatusDetails standardOrderStatusDetails(UUID orderId) {
return new OrderStatusDetails(orderId, UUID.randomUUID(), new Date(), STATUS_RECEIVED);
}
public static AllMenuItemsEvent allMenuItems() {
List<MenuItemDetails> menuItemDetails = new ArrayList<MenuItemDetails>();
menuItemDetails.add(standardMenuItemDetails());
menuItemDetails.add(standardMenuItemDetails(CHEF_SPECIAL + NAME));
menuItemDetails.add(standardMenuItemDetails(LOW_CAL + NAME));
return new AllMenuItemsEvent(menuItemDetails);
}
public static MenuItemDetails standardMenuItemDetails(String name) {
return new MenuItemDetails(UUID.randomUUID().toString(), name, COST, MINUTES_TO_PREPARE);
}
public static MenuItemDetails standardMenuItemDetails() {
return standardMenuItemDetails(NAME);
}
public static MenuItem standardWebMenuItem () {
return MenuItem.fromMenuDetails(standardMenuItemDetails());
}
}