Ejemplo n.º 1
0
        /// <summary>
        /// 套餐模板项映射
        /// </summary>
        /// <param name="packItem">套餐模板项领域模型</param>
        /// <param name="decorationPackInfos">套餐模板字典</param>
        /// <returns>套餐模板项数据传输对象</returns>
        public static DecorationPackItemInfo ToDTO(this DecorationPackItem packItem)
        {
            DecorationPackItemInfo packItemInfo = Transform <DecorationPackItem, DecorationPackItemInfo> .Map(packItem);

            //packItemInfo.DecorationPackInfo = decorationPackInfos == null ? null : decorationPackInfos[packItem.PackId];
            return(packItemInfo);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 套餐模板项映射
        /// </summary>
        /// <param name="packItem">套餐模板项领域模型</param>
        /// <param name="packs">套餐模板字典</param>
        /// <returns>套餐模板项数据传输对象</returns>
        public static DecorationPackItemInfo ToDTO(this DecorationPackItem packItem, IDictionary <Guid, DecorationPack> packs)
        {
            DecorationPackItemInfo packItemInfo = Transform <DecorationPackItem, DecorationPackItemInfo> .Map(packItem);

            DecorationPack pack = packs[packItem.PackId];

            packItemInfo.DecorationPackInfo = pack.ToDTO(new List <DecorationPackScheme>());
            packItemInfo.PackSpaceName      = pack.Spaces.Single(x => x.Id == packItem.PackSpaceId).Name;


            return(packItemInfo);
        }
Ejemplo n.º 3
0
        public void ReOnShelfDecorationPackCraft(Guid craftEntityId)
        {
            IEnumerable <Guid> packItemIds = this._repMediator.DecorationPackCraftRep.FindPackItemIds(craftEntityId);

            foreach (Guid packItemId in packItemIds)
            {
                DecorationPackItem  currentPackItem  = this._unitOfWork.Resolve <DecorationPackItem>(packItemId);
                DecorationPackCraft currentPackCraft = currentPackItem.GetPackCraft(craftEntityId);
                currentPackCraft.ReOnShelf();

                this._unitOfWork.RegisterSave(currentPackItem);
            }

            this._unitOfWork.UnitedCommit();
        }
Ejemplo n.º 4
0
        public void ReOnShelfDecorationPackSku(Guid skuId)
        {
            IEnumerable <Guid> packItemIds = this._repMediator.DecorationPackSkuRep.FindPackItemIds(skuId);

            foreach (Guid packItemId in packItemIds)
            {
                DecorationPackItem currentPackItem = this._unitOfWork.Resolve <DecorationPackItem>(packItemId);
                DecorationPackSku  currentPackSku  = currentPackItem.GetPackSku(skuId);
                currentPackSku.ReOnShelf();

                this._unitOfWork.RegisterSave(currentPackItem);
            }

            this._unitOfWork.UnitedCommit();
        }
        /// <summary>
        /// 克隆套餐模板
        /// </summary>
        /// <param name="sourcePackId">源套餐模板Id</param>
        /// <returns>新套餐模板Id</returns>
        private void CloneDecorationPack(Guid sourcePackId)
        {
            DecorationPack sourcePack = this._repMediator.DecorationPackRep.Single(sourcePackId);
            //套餐模板名称,版本号
            string version = this._svcMediator.NumberSvc.GeneratePackVersionNo(sourcePack.Id, "Decoration");

            //string packName = "备份套餐【" + sourcePack.Name + "】" + version;
            //验证
            //Assert.IsFalse(this._repMediator.DecorationPackRep.ExistsName(packName), "套餐模板名称已存在!");

            //注:此处代码是为了将导航属性加载出来
            Trace.WriteLine(sourcePack.Spaces.Count);

            //注:此处代码是为了将导航属性加载出来
            foreach (DecorationPackSpace space in sourcePack.Spaces)
            {
                //注:此处代码是为了将导航属性加载出来
                Trace.WriteLine(space.SpaceDetails.Count);
            }

            //声明套餐模板副本Id
            Guid clonedPackId = Guid.NewGuid();

            //声明套餐模板空间Id映射关系字典
            IDictionary <Guid, Guid> spaceMaps = new Dictionary <Guid, Guid>();

            #region # 克隆套餐模板、套餐模板空间;设置源套餐Id,版本号;修改套餐名称;

            DecorationPack clonedPack = sourcePack.Clone <DecorationPack>();
            clonedPack.SetId(clonedPackId);
            //clonedPack.UpdateInfo(sourcePack.Name);
            clonedPack.SetSourcePackIdAndVersion(sourcePackId, version, true);
            var cloneArticles = new List <Article>();
            var packArticles  = this._repMediator.ArticleRepository.GetArticlesByPackId(sourcePackId).ToList();
            foreach (var article in packArticles.Where(s => s.SpaceId == null))
            {
                Article cloneArticle = article.Clone <Article>();
                cloneArticle.SetId(Guid.NewGuid());
                cloneArticle.SetPackId(clonedPackId);
                cloneArticles.Add(cloneArticle);
            }
            //套餐模板空间Id重新赋值
            foreach (DecorationPackSpace space in clonedPack.Spaces)
            {
                Guid newPackSpaceId = Guid.NewGuid();
                spaceMaps.Add(space.Id, newPackSpaceId);
                space.SetId(newPackSpaceId);
                foreach (DecorationPackSpaceDetail spaceDetail in space.SpaceDetails)
                {
                    spaceDetail.SetId(Guid.NewGuid());
                }
                var spaceArticles = packArticles.Where(s => s.SpaceId == space.Id);
                foreach (var spaceArticle in spaceArticles)
                {
                    Article cloneArticle = spaceArticle.Clone <Article>();
                    cloneArticle.SetId(Guid.NewGuid());
                    cloneArticle.SetPackId(clonedPackId);
                    cloneArticles.Add(cloneArticle);
                }
            }

            this._unitOfWork.RegisterAdd(clonedPack);
            if (cloneArticles.Any())
            {
                this._unitOfWork.RegisterAddRange(cloneArticles);
            }

            #endregion

            #region # 克隆套餐模板项

            //IEnumerable<DecorationPackItem> packItems = this._repMediator.DecorationPackItemRep.FindByPack(sourcePackId, null);
            IEnumerable <DecorationPackItem> packItems = this._unitOfWork.GetItemsByPackSku(sourcePackId);

            foreach (DecorationPackItem packItem in packItems)
            {
                //注:此处代码是为了将导航属性加载出来
                //Trace.WriteLine(packItem.PackSkus.Count);
                //Trace.WriteLine(packItem.PackCraftEntities.Count);

                //克隆套餐模板项
                DecorationPackItem clonedPackItem = packItem.Clone <DecorationPackItem>();
                clonedPackItem.SetId(Guid.NewGuid());
                clonedPackItem.SetPackId(clonedPackId);
                clonedPackItem.SetPackSpaceId(spaceMaps[clonedPackItem.PackSpaceId]);
                clonedPackItem.SetIsClone();

                //重新为Id赋值
                foreach (DecorationPackSku packSku in clonedPackItem.PackSkus)
                {
                    packSku.SetId(Guid.NewGuid());
                }
                foreach (DecorationPackCraft packCraft in clonedPackItem.PackCraftEntities)
                {
                    packCraft.SetId(Guid.NewGuid());
                }

                this._unitOfWork.RegisterAdd(clonedPackItem);
            }

            #endregion

            #region # 克隆套餐模板推荐项

            //IEnumerable<DecorationPackItem> packItems = this._repMediator.DecorationPackItemRep.FindByPack(sourcePackId, null);
            IEnumerable <DecorationPackRecommendedItem> packRecommendedItems = this._unitOfWork.GetRecommendedItemsByPack(sourcePackId);

            foreach (DecorationPackRecommendedItem packRecommendedItem in packRecommendedItems)
            {
                //注:此处代码是为了将导航属性加载出来
                //Trace.WriteLine(packItem.PackSkus.Count);
                //Trace.WriteLine(packItem.PackCraftEntities.Count);

                //克隆套餐模板项
                DecorationPackRecommendedItem clonedPackRecommendedItem = packRecommendedItem.Clone <DecorationPackRecommendedItem>();
                clonedPackRecommendedItem.SetId(Guid.NewGuid());
                clonedPackRecommendedItem.SetPackId(clonedPackId);
                clonedPackRecommendedItem.SetPackSpaceId(spaceMaps[clonedPackRecommendedItem.PackSpaceId]);
                clonedPackRecommendedItem.SetIsClone();

                //重新为Id赋值
                foreach (DecorationPackRecommendedSku packSku in clonedPackRecommendedItem.PackRecommendedSkus)
                {
                    packSku.SetId(Guid.NewGuid());
                }
                this._unitOfWork.RegisterAdd(clonedPackRecommendedItem);
            }

            #endregion

            #region # 克隆套餐模板方案

            IEnumerable <DecorationPackScheme> packSchemes = this._repMediator.DecorationPackSchemeRep.FindByPack(sourcePackId);

            foreach (DecorationPackScheme packScheme in packSchemes)
            {
                //注:此处代码是为了将导航属性加载出来
                Trace.WriteLine(packScheme.SchemeSpaces.Count);

                //克隆套餐模板方案
                DecorationPackScheme clonedPackScheme = packScheme.Clone <DecorationPackScheme>();
                clonedPackScheme.SetId(Guid.NewGuid());
                clonedPackScheme.SetPackId(clonedPackId);

                foreach (DecorationPackSchemeSpace schemeSpace in clonedPackScheme.SchemeSpaces)
                {
                    schemeSpace.SetId(Guid.NewGuid());
                    schemeSpace.SetPackSpaceId(spaceMaps[schemeSpace.PackSpaceId]);
                }

                this._unitOfWork.RegisterAdd(clonedPackScheme);
            }

            #endregion

            #region # 克隆套餐关联大包/定制

            IEnumerable <DecorationPack_BalePack> decorationPackBalePacks =
                this._repMediator.DecorationPack_BalePackRep.FindByDecorationPack(sourcePackId);

            foreach (DecorationPack_BalePack decorationPackBalePack in decorationPackBalePacks)
            {
                DecorationPack_BalePack clonedDecorationPackBalePack = decorationPackBalePack.Clone <DecorationPack_BalePack>();
                clonedDecorationPackBalePack.SetId(Guid.NewGuid());
                clonedDecorationPackBalePack.SetDecorationPackId(clonedPackId);
                this._unitOfWork.RegisterAdd(clonedDecorationPackBalePack);
            }
            #endregion

            this._unitOfWork.Commit();
        }