public void CreateSimilarProduct(ProductGroupMaintainSimilarProductVM data, EventHandler <RestClientEventArgs <CreateSimilerProductRsp> > callback)
 {
     _restClient.Create(CreateSimilarProductRelativeUrl, CovertProductGroupMaintainSimilarProductVMToProductGroupEntity(data), callback);
 }
        private ProductGroup CovertProductGroupMaintainSimilarProductVMToProductGroupEntity(ProductGroupMaintainSimilarProductVM data)
        {
            var productGroup = new ProductGroup
            {
                SysNo       = data.MainPageVM.ProductGroupSysNo,
                ProductList = new List <ProductInfo>(),
                OperateUser = new UserInfo
                {
                    SysNo           = CPApplication.Current.LoginUser.UserSysNo,
                    UserDisplayName = CPApplication.Current.LoginUser.DisplayName
                },
                CompanyCode  = CPApplication.Current.CompanyCode,
                LanguageCode = ConstValue.BizLanguageCode
            };

            data.SelectedProduct.Where(p => p.IsChecked).ForEach(p =>
            {
                var product                = new ProductInfo();
                product.PromotionTitle     = new LanguageContent(String.Empty);
                product.ProductConsignFlag = VendorConsignFlag.Sell;
                product.ProductStatus      = ProductStatus.InActive_UnShow;
                product.ProductPOInfo      = new ProductPOInfo();
                product.ProductPayType     = ProductPayType.MoneyOnly;
                product.Merchant           = new Merchant {
                    SysNo = 1
                };                                            //泰隆优选商品
                product.OperateUser = new UserInfo
                {
                    SysNo           = CPApplication.Current.LoginUser.UserSysNo,
                    UserDisplayName = CPApplication.Current.LoginUser.DisplayName
                };
                product.CompanyCode      = CPApplication.Current.CompanyCode;
                product.LanguageCode     = ConstValue.BizLanguageCode;
                product.ProductPriceInfo = new ProductPriceInfo
                {
                    BasicPrice                = 999999,
                    CashRebate                = 0,
                    CurrentPrice              = 999999,
                    DiscountAmount            = 0,
                    MaxCountPerDay            = 1,
                    MinCountPerOrder          = 1,
                    PayType                   = ProductPayType.MoneyOnly,
                    Point                     = 0,
                    ProductRankPrice          = new List <ProductRankPriceInfo>(),
                    ProductWholeSalePriceInfo = new List <ProductWholeSalePriceInfo>(),
                    UnitCost                  = 999999,
                    UnitCostWithoutTax        = 999999,
                    VirtualPrice              = Math.Round(Convert.ToDecimal(p.VirtualPrice), 2)
                };
                product.ProductWarrantyInfo = new ProductWarrantyInfo
                {
                    HostWarrantyDay    = 0,
                    IsNoExtendWarranty = true,
                    OfferVATInvoice    = OfferVATInvoice.Yes,
                    PartWarrantyDay    = 0,
                    ServiceInfo        = String.Empty,
                    ServicePhone       = String.Empty,
                    Warranty           = new LanguageContent(String.Empty),
                    WarrantyShow       = WarrantyShow.No
                };

                product.ProductBasicInfo = new ProductBasicInfo
                {
                    Attention        = new LanguageContent(String.Empty),
                    IsAccessoryShow  = ProductIsAccessoryShow.No,
                    IsTakePicture    = ProductIsTakePicture.No,
                    IsVirtualPic     = ProductIsVirtualPic.No,
                    Keywords         = new LanguageContent(String.Empty),
                    LongDescription  = new LanguageContent(String.Empty),
                    Note             = String.Empty,
                    PackageList      = new LanguageContent(String.Empty),
                    Performance      = String.Empty,
                    PhotoDescription = new LanguageContent(String.Empty),
                    ProductBrandInfo = new BrandInfo {
                        SysNo = data.MainPageVM.BasicInfoVM.ProductGroupBrand.SysNo
                    },
                    ProductBriefAddition = new LanguageContent(String.Empty),
                    ProductBriefTitle    = new LanguageContent(p.ProductTitle),
                    ProductCategoryInfo  = new CategoryInfo {
                        SysNo = data.MainPageVM.BasicInfoVM.ProductGroupCategory.SysNo
                    },
                    ProductDimensionInfo = new ProductDimensionInfo {
                        Height = 0, Length = 0, Weight = 0, Width = 0
                    },
                    ProductInfoFinishStatus = ProductInfoFinishStatus.No,
                    ProductLink             = String.Empty,
                    ProductModel            = new LanguageContent(p.ProductModel),
                    ProductProperties       = ConvertPropertyValueListVMToProductPropertyList(p.PropertyValueList),
                    ProductTitle            = new LanguageContent(p.ProductTitle),
                    ShortDescription        = new LanguageContent(String.Empty),
                    UPCCode     = p.UPCCode,
                    BMCode      = p.BMCode,
                    ProductType = ProductType.Normal,
                    TradeType   = TradeType.Internal//泰隆银行默认为国内商品
                };
                product.OrginCode = p.CountryCode;
                productGroup.ProductList.Add(product);
            });
            return(productGroup);
        }
        public ProductGroupMaintainAddSimilarProduct()
        {
            InitializeComponent();

            (new ProductCreateFacade()).GetProductCountryList((obj, arg) =>
            {
                if (arg.FaultsHandle())
                {
                    return;
                }
                CountryList = arg.Result;
            });
            _vm = new ProductGroupMaintainSimilarProductVM();

            new ProductGroupFacade().GetProductList(_vm.MainPageVM.ProductListVM.ProductGroupProductVMList
                                                    .Select(p => p.ProductSysNo).ToList(), (o, a) =>
            {
                if (a.FaultsHandle())
                {
                    return;
                }
                _vm.GroupProductList = a.Result;
                new ProductGroupFacade().GetPropertyValueInfoByPropertySysNoList(
                    _vm.MainPageVM.PropertyVM.ProductGroupSettings
                    .Where(setting => setting.ProductGroupProperty.SysNo != 0).Select(p => p.ProductGroupProperty.SysNo)
                    .ToList(), (obj, args) =>
                {
                    if (args.FaultsHandle())
                    {
                        return;
                    }
                    _vm.MainPageVM.PropertyVM.ProductGroupSettings.ForEach(setting =>
                    {
                        if (args.Result.ContainsKey(setting.ProductGroupProperty.SysNo) &&
                            args.Result[setting.ProductGroupProperty.SysNo].Count > 0)
                        {
                            var selectGroupProperty = new SelectGroupProperty
                            {
                                Property = new PropertyVM
                                {
                                    SysNo        = setting.ProductGroupProperty.SysNo,
                                    PropertyName = setting.ProductGroupProperty.PropertyName
                                }
                            };
                            args.Result[setting.ProductGroupProperty.SysNo]
                            .ForEach(property =>
                            {
                                if (property.SysNo.HasValue)
                                {
                                    selectGroupProperty.SelectedPropertyValueList.Add(
                                        new SelectedPropertyValue
                                    {
                                        IsChecked = _vm.GroupProductList
                                                    .Any(p => p.ProductBasicInfo.ProductProperties
                                                         .Any(value => value.Property.SysNo == property.SysNo)),
                                        PropertyValue = new PropertyValueVM
                                        {
                                            SysNo            = property.SysNo.Value,
                                            ValueDescription = property.ValueDescription.Content
                                        }
                                    });
                                }
                            });
                            _vm.SelectGroupPropertyValue.Add(selectGroupProperty);
                        }
                    });



                    if (_vm.SelectGroupPropertyValue.Count > 0)
                    {
                        _vm.SelectGroupPropertyValue[0].SelectedPropertyValueList.ForEach(i =>
                        {
                            var control = new CheckBox();
                            var binding = new Binding
                            {
                                Source = i,
                                Path   = new PropertyPath("IsChecked"),
                                Mode   = BindingMode.TwoWay
                            };
                            control.SetBinding(ToggleButton.IsCheckedProperty, binding);
                            control.IsEnabled = !i.IsChecked;
                            control.Content   = i.PropertyValue.ValueDescription;
                            control.Click    += (CheckBoxClick);
                            FirstPropertyList.Children.Add(control);
                        });


                        dgProductList.Columns.Insert(1, new DataGridTextColumn
                        {
                            Header  = _vm.SelectGroupPropertyValue[0].Property.PropertyName,
                            Binding = new Binding("PropertyValueList[0].ValueDescription")
                        });
                    }

                    if (_vm.SelectGroupPropertyValue.Count > 1)
                    {
                        _vm.SelectGroupPropertyValue[1].SelectedPropertyValueList.ForEach(i =>
                        {
                            var control = new CheckBox();
                            var binding = new Binding
                            {
                                Source = i,
                                Path   = new PropertyPath("IsChecked"),
                                Mode   = BindingMode.TwoWay
                            };
                            control.SetBinding(ToggleButton.IsCheckedProperty, binding);
                            control.IsEnabled = !i.IsChecked;
                            control.Content   = i.PropertyValue.ValueDescription;
                            control.Click    += (CheckBoxClick);
                            SecondPropertyList.Children.Add(control);
                        });

                        dgProductList.Columns.Insert(2, new DataGridTextColumn
                        {
                            Header  = _vm.SelectGroupPropertyValue[1].Property.PropertyName,
                            Binding = new Binding("PropertyValueList[1].ValueDescription")
                        });
                    }
                    BuildProductList();
                    DataContext = _vm;
                });
            });
        }