private void CargoStorageByTypeVM_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add) { foreach (var item in e.NewItems) { KeyValuePair <Entity, PrIwObsList <Entity> > kvp = (KeyValuePair <Entity, PrIwObsList <Entity> >)item; ComponentSpecificDesignVM design = new ComponentSpecificDesignVM(kvp.Key, kvp.Value); DesignStore.Add(design); } } else if (e.Action == NotifyCollectionChangedAction.Remove) { foreach (var item in e.OldItems) { Entity key = (Entity)item; foreach (var vmitem in DesignStore.ToArray()) { if (vmitem.EntityID == key.Guid) { DesignStore.Remove(vmitem); break; } } } } OnPropertyChanged(nameof(HasComponents)); }
private void InitEntities() { foreach (var item in _storageDB.StoredEntities[TypeID]) { ComponentSpecificDesignVM design = new ComponentSpecificDesignVM(item.Key, item.Value); DesignStore.Add(design); } _storageDB.StoredEntities[TypeID].CollectionChanged += CargoStorageByTypeVM_CollectionChanged; OnPropertyChanged(nameof(HasComponents)); }
public async Task <IActionResult> CreateOrderItem([FromServices] DesignStore designStore, ProductDetailViewModel itemOrdered, IFormFile fileUpload, Int16 quantity) { // TODO: serverside validate quantity itemOrdered.Item.Quantity = quantity; // Processing determined by user radio button selection of Design Options if (itemOrdered.DesignOption == "designFile") { // TODO: add validation for file upload if (fileUpload != null) { using (var stream = fileUpload.OpenReadStream()) { var fileUrl = await designStore.SaveFile(stream); itemOrdered.Item.ItemFile = fileUrl; } } } // if customer chose template option, capture the data, validate and save to order item if (itemOrdered.DesignOption == "designTemplate") { List <TemplateData> templateDataList = new List <TemplateData>(); foreach (Field field in itemOrdered.Detail.TemplateFields.Fieldlist.Field) { // TODO: add simplied template object into ProductDetailsViewModel // TODO: perform validation on fields TemplateData data = new TemplateData { TemplateDataName = field.Htmlfieldname, TemplateDataValue = field.Fieldname }; templateDataList.Add(data); } itemOrdered.Item.TemplateData = templateDataList; } // TODO: add validation -- min/max and increment for quantity // Get all items out of session, convert back to ItemList, add new item, save back into session // allows for future extensibility to add multiple items -- currently, flow only allows one item per shipment/order List <Item> items = HttpContext.Session.GetJson <List <Item> >("Items") ?? new List <Item>(); HttpContext.Session.SetString("ShippingMethod", itemOrdered.DeliveryMethod); itemOrdered.Item.ItemSequenceNumber = items.Count() + 1; items.Add(itemOrdered.Item); HttpContext.Session.SetJson("Items", items); return(RedirectToAction("ShipmentData")); }