예제 #1
0
        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);
        }
예제 #2
0
        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);
        }