Ejemplo n.º 1
0
        /// <summary>
        /// InitialNavigation转换成PresentAreaNavigation
        /// </summary>
        public PresentAreaNavigation AsPresentAreaNavigation()
        {
            PresentAreaNavigation presentAreaNavigation = new PresentAreaNavigation()
            {
                NavigationId = this.NavigationId,
                ParentNavigationId = this.ParentNavigationId,
                Depth = this.Depth,
                PresentAreaKey = this.PresentAreaKey,
                ResourceName = this.ResourceName,
                NavigationUrl = this.NavigationUrl,
                UrlRouteName = this.UrlRouteName,
                RouteDataName = this.RouteDataName,
                ApplicationId = this.ApplicationId,
                NavigationType = this.NavigationType,
                NavigationText = this.NavigationText,
                NavigationTarget = this.NavigationTarget,
                ImageUrl = this.ImageUrl,
                DisplayOrder = this.DisplayOrder,
                OnlyOwnerVisible = this.OnlyOwnerVisible,
                IsLocked = this.IsLocked,
                IsEnabled = this.IsEnabled,
                OwnerId = 0,
                IconName = this.IconName

            };

            return presentAreaNavigation;
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 递归获取parentInitialNavigation所有子InitialNavigation
 /// </summary>
 private void RecursiveGetChildren(IEnumerable<PresentAreaNavigation> allPresentAreaNavigations, PresentAreaNavigation parentPresentAreaNavigation, ref List<PresentAreaNavigation> allDescendants)
 {
     IEnumerable<PresentAreaNavigation> children = allPresentAreaNavigations.Where(n => n.ParentNavigationId == parentPresentAreaNavigation.NavigationId);
     if (children.Count() > 0)
     {
         allDescendants.AddRange(children);
         foreach (var child in children)
         {
             RecursiveGetChildren(allPresentAreaNavigations, child, ref allDescendants);
         }
     }
 }
Ejemplo n.º 3
0
        public PresentAreaNavigation AsPresentAreaNavigation()
        {
            PresentAreaNavigation presentAreaNavigation = null;

            if (Id==0)
            {
                presentAreaNavigation = new PresentAreaNavigation();
                presentAreaNavigation.ResourceName = string.Empty;
                presentAreaNavigation.NavigationUrl = NavigationUrl;
                presentAreaNavigation.RouteDataName = string.Empty;
                presentAreaNavigation.UrlRouteName = string.Empty;
            }
            else
            {
                presentAreaNavigation = new NavigationService().GetPresentAreaNavigation(Id);
            }

            presentAreaNavigation.NavigationText = NavigationText;
            presentAreaNavigation.ImageUrl = ImageUrl;
            presentAreaNavigation.NavigationUrl = NavigationUrl!=null?NavigationUrl:string.Empty;
            presentAreaNavigation.NavigationTarget = NavigationTarget;
            if (!presentAreaNavigation.IsLocked)
            {
                presentAreaNavigation.IsEnabled = IsEnabled;
            }
            presentAreaNavigation.PresentAreaKey = PresentAreaKeysOfBuiltIn.UserSpace;
            if (NavigationType == NavigationType.AddedByOwner)
            {
                presentAreaNavigation.NavigationType = NavigationType.AddedByOwner;
            }
            presentAreaNavigation.OwnerId = UserContext.CurrentUser.UserId;

            Random rd=new Random();
            string rdStr=null;
            for (int i = 0; i < 8; i++)
            {
             rdStr+=rd.Next(9).ToString();
            }
            presentAreaNavigation.NavigationId = int.Parse(rdStr);

            return presentAreaNavigation;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 删除导航
        /// </summary>
        private void DeletePresentAreaNavigation(PresentAreaNavigation presentAreaNavigation)
        {
            if (presentAreaNavigation == null)
                return;

            List<PresentAreaNavigation> presentAreaNavigationsForDelete = new List<PresentAreaNavigation>();

            IEnumerable<PresentAreaNavigation> descendants = GetDescendants(presentAreaNavigation);
            if (descendants.Count() > 0)
                presentAreaNavigationsForDelete.AddRange(descendants);

            presentAreaNavigationsForDelete.Add(presentAreaNavigation);

            EventBus<PresentAreaNavigation>.Instance().OnBatchBefore(presentAreaNavigationsForDelete, new CommonEventArgs(EventOperationType.Instance().Delete(), presentAreaNavigation.ApplicationId));
            foreach (var presentAreaNavigationForDelete in presentAreaNavigationsForDelete)
            {
                presentAreaNavigationRepository.Delete(presentAreaNavigationForDelete);
            }
            EventBus<PresentAreaNavigation>.Instance().OnBatchAfter(presentAreaNavigationsForDelete, new CommonEventArgs(EventOperationType.Instance().Delete(), presentAreaNavigation.ApplicationId));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 把PresentAreaNavigation解析成Navigation
        /// </summary>
        /// <remarks>
        /// NavigationType = NavigationType.Application的PresentAreaNavigation需要与相应的InitialNavigation合并
        /// </remarks>
        /// <param name="presentAreaNavigation">PresentAreaNavigation</param>
        protected Navigation ParseNavigation(PresentAreaNavigation presentAreaNavigation)
        {
            if (presentAreaNavigation == null)
                return null;

            Navigation nav = new Navigation()
            {
                OwnerId = presentAreaNavigation.OwnerId,
                NavigationText = presentAreaNavigation.NavigationText,
                NavigationTarget = presentAreaNavigation.NavigationTarget,
                ImageUrl = presentAreaNavigation.ImageUrl,
                IconName = presentAreaNavigation.IconName,
                DisplayOrder = presentAreaNavigation.DisplayOrder
            };

            InitialNavigation initialNavigation = null;
            if (presentAreaNavigation.IsLocked)
            {
                initialNavigation = initialNavigationRepository.Get(presentAreaNavigation.NavigationId);
                if (initialNavigation == null)
                    return null;

                nav.NavigationId = initialNavigation.NavigationId;
                nav.ParentNavigationId = initialNavigation.ParentNavigationId;
                nav.Depth = initialNavigation.Depth;
                nav.PresentAreaKey = initialNavigation.PresentAreaKey;
                nav.ApplicationId = initialNavigation.ApplicationId;
                nav.ResourceName = initialNavigation.ResourceName;
                nav.IconName = initialNavigation.IconName;
                nav.NavigationUrl = initialNavigation.NavigationUrl;
                nav.UrlRouteName = initialNavigation.UrlRouteName;
                nav.RouteDataName = initialNavigation.RouteDataName;
                nav.OnlyOwnerVisible = initialNavigation.OnlyOwnerVisible;
                nav.NavigationType = initialNavigation.NavigationType;
                nav.IsLocked = true;
            }
            else
            {
                nav.NavigationId = presentAreaNavigation.NavigationId;
                nav.ParentNavigationId = presentAreaNavigation.ParentNavigationId;
                nav.Depth = presentAreaNavigation.Depth;
                nav.PresentAreaKey = presentAreaNavigation.PresentAreaKey;
                nav.ApplicationId = presentAreaNavigation.ApplicationId;
                nav.ResourceName = presentAreaNavigation.ResourceName;
                nav.IconName = presentAreaNavigation.IconName;
                nav.NavigationUrl = presentAreaNavigation.NavigationUrl;
                nav.UrlRouteName = presentAreaNavigation.UrlRouteName;
                nav.RouteDataName = presentAreaNavigation.RouteDataName;
                nav.OnlyOwnerVisible = presentAreaNavigation.OnlyOwnerVisible;
                nav.NavigationType = presentAreaNavigation.NavigationType;
                nav.IsLocked = presentAreaNavigation.IsLocked;
            }

            #region 设置IsEnabled
            if (presentAreaNavigation.NavigationType == NavigationType.Application)
            {
                ApplicationBase app = ApplicationService.Get(presentAreaNavigation.ApplicationId);
                if (app == null)
                    return null;

                if (!app.IsEnabled)
                {
                    nav.IsEnabled = false;
                    return nav;
                }
            }

            if (presentAreaNavigation.NavigationType == NavigationType.Application || presentAreaNavigation.NavigationType == NavigationType.PresentAreaInitial)
            {
                if (initialNavigation != null && !initialNavigation.IsEnabled)
                {
                    nav.IsEnabled = false;
                    return nav;
                }
            }

            nav.IsEnabled = presentAreaNavigation.IsEnabled;
            return nav;
            #endregion
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 更新导航
        /// </summary>
        /// <param name="presentAreaNavigation">PresentAreaNavigation</param>
        public void UpdatePresentAreaNavigation(PresentAreaNavigation presentAreaNavigation)
        {
            if (presentAreaNavigation == null)
                return;

            EventBus<PresentAreaNavigation>.Instance().OnBefore(presentAreaNavigation, new CommonEventArgs(EventOperationType.Instance().Update(), presentAreaNavigation.ApplicationId));
            presentAreaNavigationRepository.Update(presentAreaNavigation);
            EventBus<PresentAreaNavigation>.Instance().OnAfter(presentAreaNavigation, new CommonEventArgs(EventOperationType.Instance().Update(), presentAreaNavigation.ApplicationId));

            EntityData.ForType(typeof(PresentAreaNavigation)).RealTimeCacheHelper.IncreaseAreaVersion("OwnerId", presentAreaNavigation.OwnerId);
            EntityData.ForType(typeof(Navigation)).RealTimeCacheHelper.IncreaseAreaVersion("OwnerId", presentAreaNavigation.OwnerId);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 获取parentPresentAreaNavigation的后代
        /// </summary>
        /// <param name="parentPresentAreaNavigation">PresentAreaNavigation</param>
        /// <returns>返回parentPresentAreaNavigation的所有后代集合</returns>
        public IEnumerable<PresentAreaNavigation> GetDescendants(PresentAreaNavigation parentPresentAreaNavigation)
        {
            List<PresentAreaNavigation> descendants = new List<PresentAreaNavigation>();
            IEnumerable<PresentAreaNavigation> presentAreaNavigationsOfPresentArea = GetPresentAreaNavigations(parentPresentAreaNavigation.PresentAreaKey, parentPresentAreaNavigation.OwnerId);
            RecursiveGetChildren(presentAreaNavigationsOfPresentArea, parentPresentAreaNavigation, ref  descendants);

            return descendants;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 添加呈现区域实例导航
        /// </summary>
        /// <param name="presentAreaNavigation">PresentAreaNavigation</param>
        /// <exception cref="ArgumentNullException">presentAreaNavigation为空时</exception>
        /// <exception cref="ArgumentException">presentAreaNavigation的NavigationType不是<see cref="NavigationType"/>.AddedByOwner时</exception>
        /// <exception cref="ArgumentException">该PresentAreaNavigation此呈现区域实例已经创建时</exception>
        /// <returns>返回创建的PresentAreaNavigation的Id</returns>
        public long CreatePresentAreaNavigation(PresentAreaNavigation presentAreaNavigation)
        {
            if (presentAreaNavigation == null)
                throw new ArgumentNullException("presentAreaNavigation不能为null");

            if (presentAreaNavigation.NavigationType != NavigationType.AddedByOwner)
                throw new ArgumentException("仅能处理NavigationType为Application或PresentAreaInitial的navigation");

            IEnumerable<PresentAreaNavigation> presentAreaNavigations = GetPresentAreaNavigations(presentAreaNavigation.PresentAreaKey, presentAreaNavigation.OwnerId);

            if (presentAreaNavigations.Where(n => n.NavigationId == presentAreaNavigation.NavigationId).Count() > 0)
                throw new ArgumentException("NavigationId不允许重复");

            presentAreaNavigation.NavigationType = NavigationType.AddedByOwner;

            if (presentAreaNavigation.ParentNavigationId > 0)
            {
                InitialNavigation parentNavigation = GetInitialNavigation(presentAreaNavigation.ParentNavigationId);
                if (parentNavigation == null)
                    throw new ApplicationException(string.Format("initialNavigation的父级 {0} 不存在", presentAreaNavigation.ParentNavigationId));

                presentAreaNavigation.Depth = parentNavigation.Depth + 1;
            }
            else
            {
                presentAreaNavigation.Depth = 0;
            }
            EventBus<PresentAreaNavigation>.Instance().OnBefore(presentAreaNavigation, new CommonEventArgs(EventOperationType.Instance().Create(), presentAreaNavigation.ApplicationId));
            var id = Convert.ToInt64(presentAreaNavigationRepository.Insert(presentAreaNavigation));
            EventBus<PresentAreaNavigation>.Instance().OnAfter(presentAreaNavigation, new CommonEventArgs(EventOperationType.Instance().Create(), presentAreaNavigation.ApplicationId));

            EntityData.ForType(typeof(PresentAreaNavigation)).RealTimeCacheHelper.IncreaseAreaVersion("OwnerId", presentAreaNavigation.OwnerId);
            EntityData.ForType(typeof(Navigation)).RealTimeCacheHelper.IncreaseAreaVersion("OwnerId", presentAreaNavigation.OwnerId);

            return id;
        }