package com.data.menu;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.biznow.ordernow.ApplicationState;
import com.biznow.ordernow.model.MyOrderItem;
import com.biznow.ordernow.model.Order;
import com.biznow.ordernow.model.OrderNowConstants;
import com.biznow.ordernow.model.OrderStatus;
import com.parse.ParseInstallation;
import com.util.OrderNowUtilities;
/**
*
* @author Rohit Class to wrap Server CustomerOrder object along with fields
* required for App UI View
*/
public class CustomerOrderWrapper implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private ArrayList<MyOrderItem> myOrderItemList;
private String orderNote;
private Order orderId;
private boolean resturantacknowledgement = false;
public CustomerOrderWrapper(ArrayList<MyOrderItem> myOrderItemList, String orderNote) {
super();
this.myOrderItemList = myOrderItemList;
this.orderNote = orderNote;
}
public CustomerOrder getCustomerOrder(ApplicationState applicationContext) {
OrderDish orderDish;
Map<String, OrderDish> dishes = new HashMap<String, OrderDish>();
for (MyOrderItem myOrderItem : myOrderItemList) {
if (myOrderItem.getMetaData() != null) {
orderDish = new OrderDish(myOrderItem.getQuantity(), myOrderItem.getMetaData().get(OrderNowConstants.TEXT_COMMENT), myOrderItem.getMetaData().get(OrderNowConstants.SPICE_LEVEL));
} else {
orderDish = new OrderDish(myOrderItem.getQuantity());
}
// Clean Dish Ingredient if present
if (myOrderItem.getFoodMenuItem().isItemCustomizable()) {
orderDish.setSelectedOptions(myOrderItem.getFoodMenuItem().getCurrentSelectedIngredients());
ApplicationState.cleanDishSelectedIngredients(applicationContext, myOrderItem.getFoodMenuItem().getItemName());
}
dishes.put(myOrderItem.getFoodMenuItem().getDishId(), orderDish);
}
String restaurantId = OrderNowUtilities.getKeyFromSharedPreferences(applicationContext.getApplicationContext(), OrderNowConstants.KEY_ACTIVE_RESTAURANT_ID);
String restaurantName = OrderNowUtilities.getKeyFromSharedPreferences(
applicationContext.getApplicationContext(), OrderNowConstants.KEY_ACTIVE_RESTAURANT_NAME);
CharSequence text = ParseInstallation.getCurrentInstallation().getObjectId();
String tableId = OrderNowUtilities.getKeyFromSharedPreferences(applicationContext.getApplicationContext(), OrderNowConstants.KEY_ACTIVE_TABLE_ID);
CustomerOrder customerOrder = new CustomerOrder(dishes, restaurantId, restaurantName, text.toString(), tableId, orderNote);
return customerOrder;
}
public ArrayList<MyOrderItem> getMyOrderItemList() {
return myOrderItemList;
}
public void setMyOrderItemList(ArrayList<MyOrderItem> myOrderItemList) {
this.myOrderItemList = myOrderItemList;
}
public void modifyItemStatus(OrderStatus orderStatus, List<String> unAvailableItems) {
for (MyOrderItem myOrderItem : myOrderItemList) {
OrderStatus newStatus = OrderStatus.NULL;
OrderStatus itemCurrentStatus = myOrderItem.getItemStatus();
if (orderStatus == OrderStatus.ModifiedOrder && unAvailableItems != null) {
if (!unAvailableItems.contains(myOrderItem.getFoodMenuItem().getDishId())) {
newStatus = itemCurrentStatus.newStatus(OrderStatus.Accepted);
} else {
newStatus = itemCurrentStatus.newStatus(orderStatus);
}
} else {
newStatus = itemCurrentStatus.newStatus(orderStatus);
}
myOrderItem.setItemStatus(newStatus);
}
if(orderStatus == OrderStatus.Accepted || orderStatus == OrderStatus.ModifiedOrder || orderStatus == OrderStatus.Complete) {
setResturantacknowledgement(true);
}
}
public Order getOrder() {
return orderId;
}
public void setOrder(Order orderId) {
this.orderId = orderId;
}
public boolean hasResturantacknowledged() {
return resturantacknowledgement;
}
public void setResturantacknowledgement(boolean resturantacknowledgement) {
this.resturantacknowledgement = resturantacknowledgement;
}
}