Exemple #1
0
        /// <summary>
        /// 删除呈现区域实例时清除应用相关的内容
        /// </summary>
        /// <param name="presentAreaKey">呈现区域标识</param>
        /// <param name="ownerId">呈现区域实例拥有者Id</param>
        public void DeleteApplicationsOfPresentAreaOwner(string presentAreaKey, long ownerId)
        {
            IEnumerable <ApplicationBase> installedApplications = GetInstalledApplicationsOfOwner(presentAreaKey, ownerId);

            foreach (var app in installedApplications)
            {
                if (app.UnInstall(presentAreaKey, ownerId))
                {
                    ApplicationInPresentAreaInstallation applicationInstallation = applicationInstallationRepository.Fetch(presentAreaKey, ownerId, app.ApplicationId);
                    if (applicationInstallation != null)
                    {
                        applicationInstallationRepository.DeleteByEntityId(applicationInstallation.Id);
                    }
                }
            }

            //清除该呈现区域实例的所有导航数据
            DIContainer.Resolve <NavigationService>().ClearPresentAreaNavigations(presentAreaKey, ownerId);
        }
Exemple #2
0
        /// <summary>
        /// 为呈现区域实例安装应用
        /// </summary>
        /// <param name="presentAreaKey">呈现区域标识</param>
        /// <param name="ownerId">呈现区域实例拥有者Id</param>
        /// <param name="applicationId">applicationId</param>
        /// <returns>安装成功返回true,安装失败返回false</returns>
        public bool Install(string presentAreaKey, long ownerId, int applicationId)
        {
            ApplicationBase app = Get(applicationId);

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

            if (!IsAvailable(presentAreaKey, applicationId))
            {
                return(false);
            }

            if (IsInstalled(presentAreaKey, ownerId, applicationId))
            {
                return(false);
            }

            EventBus <ApplicationBase> .Instance().OnBefore(app, new CommonEventArgs(EventOperationType.Instance().Create(), applicationId));

            if (app.Install(presentAreaKey, ownerId))
            {
                //添加安装记录
                ApplicationInPresentAreaInstallation applicationInstallation = new ApplicationInPresentAreaInstallation()
                {
                    PresentAreaKey = presentAreaKey,
                    OwnerId        = ownerId,
                    ApplicationId  = applicationId
                };
                applicationInstallationRepository.Insert(applicationInstallation);

                //安装应用的导航
                DIContainer.Resolve <NavigationService>().InstallPresentAreaNavigationsOfApplication(presentAreaKey, ownerId, applicationId);
                EventBus <ApplicationBase> .Instance().OnAfter(app, new CommonEventArgs(EventOperationType.Instance().Create(), applicationId));

                return(true);
            }

            return(false);
        }
Exemple #3
0
        /// <summary>
        /// 为呈现区域实例卸载应用
        /// </summary>
        /// <remarks>
        /// <list type="bullet">
        ///     <item>呈现区域的内置应用不允许移除</item>
        ///     <item>未安装的应用移除失败</item>
        /// </list>
        /// </remarks>
        /// <param name="presentAreaKey">呈现区域标识</param>
        /// <param name="ownerId">呈现区域实例拥有者Id</param>
        /// <param name="applicationId">applicationId</param>
        /// <returns>卸载成功返回true,卸载失败返回false</returns>
        public bool UnInstall(string presentAreaKey, long ownerId, int applicationId)
        {
            ApplicationBase app = Get(applicationId);

            if (app == null)
            {
                return(false);
            }

            //呈现区域的内置应用不允许移除
            if (IsBuiltIn(presentAreaKey, applicationId))
            {
                return(false);
            }

            if (!IsInstalled(presentAreaKey, ownerId, applicationId))
            {
                return(false);
            }

            EventBus <ApplicationBase> .Instance().OnBefore(app, new CommonEventArgs(EventOperationType.Instance().Delete(), applicationId));

            if (app.UnInstall(presentAreaKey, ownerId))
            {
                ApplicationInPresentAreaInstallation applicationInstallation = applicationInstallationRepository.Fetch(presentAreaKey, ownerId, applicationId);
                if (applicationInstallation != null)
                {
                    applicationInstallationRepository.DeleteByEntityId(applicationInstallation.Id);

                    //卸载应用的导航
                    DIContainer.Resolve <NavigationService>().UnInstallPresentAreaNavigationsOfApplication(presentAreaKey, ownerId, applicationId);
                    EventBus <ApplicationBase> .Instance().OnAfter(app, new CommonEventArgs(EventOperationType.Instance().Delete(), applicationId));

                    return(true);
                }
            }

            return(false);
        }
Exemple #4
0
        /// <summary>
        /// 为呈现区域实例安装应用
        /// </summary>
        /// <param name="presentAreaKey">呈现区域标识</param>
        /// <param name="ownerId">呈现区域实例拥有者Id</param>
        /// <param name="applicationId">applicationId</param>
        /// <returns>安装成功返回true,安装失败返回false</returns>
        public bool Install(string presentAreaKey, long ownerId, int applicationId)
        {
            ApplicationBase app = Get(applicationId);
            if (app == null || !app.IsEnabled)
                return false;

            if (!IsAvailable(presentAreaKey, applicationId))
                return false;

            if (IsInstalled(presentAreaKey, ownerId, applicationId))
                return false;

            EventBus<ApplicationBase>.Instance().OnBefore(app, new CommonEventArgs(EventOperationType.Instance().Create(), applicationId));
            if (app.Install(presentAreaKey, ownerId))
            {
                //添加安装记录
                ApplicationInPresentAreaInstallation applicationInstallation = new ApplicationInPresentAreaInstallation()
                {
                    PresentAreaKey = presentAreaKey,
                    OwnerId = ownerId,
                    ApplicationId = applicationId
                };
                applicationInstallationRepository.Insert(applicationInstallation);

                //安装应用的导航
                DIContainer.Resolve<NavigationService>().InstallPresentAreaNavigationsOfApplication(presentAreaKey, ownerId, applicationId);
                EventBus<ApplicationBase>.Instance().OnAfter(app, new CommonEventArgs(EventOperationType.Instance().Create(), applicationId));
                return true;
            }

            return false;
        }