コード例 #1
0
ファイル: OptionRepository.cs プロジェクト: wncoder/core
        /// <summary>
        ///     Merge products options
        /// </summary>
        /// <param name="productBvin">Product unique identifier</param>
        /// <param name="subitems"><see cref="OptionList" /> instance</param>
        public void MergeList(string productBvin, OptionList subitems)
        {
            var storeId = Context.CurrentStore.Id;

            // Set Base Key Field
            foreach (var item in subitems)
            {
                item.StoreId = storeId;

                if (string.IsNullOrEmpty(item.Bvin))
                {
                    item.Bvin = Guid.NewGuid().ToString();
                }
            }

            var productGuid = DataTypeHelper.BvinToGuid(productBvin);
            var result      = MergeList(subitems,
                                        po => po.hcc_ProductXOption.Where(pxo => pxo.ProductBvin == productGuid).Count() > 0);

            var created = subitems.Where(i => !result.OldValues.Select(ov => ov.Bvin).Contains(i.Bvin)).ToList();
            var deleted = result.OldValues.Where(ov => !subitems.Select(i => i.Bvin).Contains(ov.Bvin)).ToList();

            foreach (var item in created)
            {
                optionCrosses.AddOptionToProduct(productBvin, item.Bvin);
            }

            foreach (var item in deleted)
            {
                optionCrosses.RemoveOptionFromProduct(productBvin, item.Bvin);
            }
        }
コード例 #2
0
ファイル: OptionSelectionList.cs プロジェクト: wncoder/core
        public decimal GetWeightAdjustmentForSelections(OptionList allOptions)
        {
            decimal result = 0;

            foreach (var selection in this)
            {
                var subSelections = selection.SelectionData.Split(',');

                result += allOptions
                          .Where(o => o.Items != null)
                          .Sum(o => o.Items
                               .Where(oi => subSelections.Contains(OptionSelection.CleanBvin(oi.Bvin)))
                               .Sum(oi => oi.WeightAdjustment)
                               );
            }

            return(result);
        }