/// <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); }
/// <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); }
/// <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); }
/// <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; }