public void RehydrateOrderItem(OrderItemModel model) { currentOrderItemId = model.Id; quantityButton.Enabled = false; positions.Clear(); components.Clear(); variationId = model.VariationId; FragmentRoute route = svc.SelectVariation(model.VariationId); if (route == FragmentRoute.Components) { foreach (OrderItemComponentModel component in model.ComponentModels) { components.Add(component.ComponentId, component); if (component.HasComponents) { editedComponents.Add(component); } } positions.Add(new VariationPosition() { PosType = PositionType.Components, Id = model.VariationId }); } VariationModel newModel = new VariationModel(model.VariationId); int parentId = newModel.ParentId; while (newModel.ParentId != 0) { positions.Insert(0, new VariationPosition() { PosType = PositionType.Variations, Id = newModel.ParentId }); newModel = new VariationModel(newModel.ParentId); } thisPosition = positions.Count - 1; if (route == FragmentRoute.Components) { DisplayComponents(model.VariationId, true, ComponentListMode.Variation); } else { confirmButton.Visibility = ViewStates.Visible; DisplayVariations(parentId); } currentDiscountId = model.DiscountId; DiscountModel discountModel = svc.GetDiscountModel(currentDiscountId); discountText.Text = discountModel.Description; currentInOutId = model.InOutStatus; if (currentInOutId == 1) { inOutText.Text = "Eat In"; } else { inOutText.Text = "Take Away"; } Show(); }
private void VariationsList_ItemClick(object sender, AdapterView.ItemClickEventArgs e) { if (container is CurrentOrderLayout) { if (positions.Count - 1 > thisPosition) { if ((int)e.Id != positions[thisPosition + 1].Id) { orderItemOverriden = true; positions.RemoveRange(thisPosition + 1, positions.Count - thisPosition - 1); components.Clear(); } else { ++thisPosition; if (positions[thisPosition].PosType == PositionType.Variations) { if (currentOrderItemId != 0 && positions.Count - 1 == thisPosition && !orderItemOverriden) { confirmButton.Visibility = ViewStates.Visible; } else { confirmButton.Visibility = ViewStates.Invisible; } DisplayVariations((int)e.Id); } else { DisplayComponents((int)e.Id, true, ComponentListMode.Variation); } return; } } else if (positions.Count - 1 == thisPosition && (int)e.Id != positions[thisPosition].Id) { orderItemOverriden = true; confirmButton.Visibility = ViewStates.Invisible; } FragmentRoute thisRoute = svc.SelectVariation((int)e.Id); switch (thisRoute) { default: { CurrentOrderLayout thisLayout = (CurrentOrderLayout)container; OrderFragment orderFragment = thisLayout.OrderFragment; OrderItemModel model = GetOrderItemModel((int)e.Id, orderFragment); UpdateOrder(orderFragment, model, false); Reset(); break; } case FragmentRoute.Variations: { ++thisPosition; DisplayVariations((int)e.Id); positions.Add(new VariationPosition() { PosType = PositionType.Variations, Id = (int)e.Id }); break; } case FragmentRoute.Components: { ++thisPosition; DisplayComponents((int)e.Id, false, ComponentListMode.Variation); positions.Add(new VariationPosition() { PosType = PositionType.Components, Id = (int)e.Id }); break; } } } }