private VirtualProductViewModel MapVirtualProductToVm(Core.Entities.Commerce.Inventory.IVirtualProduct prod) { var materials = m_materialRepository.GetMaterialsByVirtualProductId(prod.Id); var result = new VirtualProductViewModel(prod); result.MaterialEntries.AddRange(materials.Select(m => new MaterialCompositionInfo(m.Material) { UnitId = m.Unit.Id, UnitSymbol = m.Unit.Symbol, Amount = m.Amount, CompositionId = m.CompositionId ?? -1 })); return(result); }
private List <MappableItemViewModel> LoadMappables() { var allItems = m_virtualProductRepository.GetMappableItems().ToList(); var result = new List <MappableItemViewModel>(allItems.Count); foreach (var item in allItems) { IErp erp = null; if (item.ErpId != null) { erp = m_erpRepository.GetErp(item.ErpId.Value); } var model = MappableItemViewModel.Create(item, erp); result.Add(model); foreach (var virtualProduct in m_virtualProductRepository.GetVirtualProducts(item.ErpId, item.ErpProductId, item.ItemName)) { if (model.AssignedVirtualProducts.All(existing => existing.VirtualProductId != virtualProduct.Id)) { var vpvm = new VirtualProductViewModel(virtualProduct); var virtualProductComponents = m_materialRepository.GetMaterialsByVirtualProductId(vpvm.VirtualProductId).ToList(); var materialsSb = new StringBuilder(); foreach (var materialComponent in virtualProductComponents) { materialComponent.Material.Print(materialsSb, " "); } vpvm.MaterialsText = materialsSb.ToString(); model.AssignedVirtualProducts.Add(vpvm); } } } return(result); }