public static void Create(Context context, SiteSettings ss, long id, bool force = false) { if (force) { var itemModel = new ItemModel( context: context, referenceId: id); switch (itemModel.ReferenceType) { case "Sites": var siteModel = new SiteModel(context: context, siteId: id); CreateFullText( context: context, id: id, fullText: siteModel.FullText( context: context, ss: ss, backgroundTask: true)); break; case "Issues": var issueModel = new IssueModel( context: context, ss: ss, issueId: id); ss.Links? .Where(o => ss.GetColumn( context: context, columnName: o.ColumnName).UseSearch == true) .ForEach(link => ss.SetChoiceHash( context: context, columnName: link.ColumnName, selectedValues: new List <string> { issueModel.PropertyValue( context: context, name: link.ColumnName) })); CreateFullText( context: context, id: id, fullText: issueModel.FullText( context: context, ss: ss, backgroundTask: true)); break; case "Results": var resultModel = new ResultModel( context: context, ss: ss, resultId: id); ss.Links? .Where(o => ss.GetColumn( context: context, columnName: o.ColumnName).UseSearch == true) .ForEach(link => ss.SetChoiceHash( context: context, columnName: link.ColumnName, selectedValues: new List <string> { resultModel.PropertyValue( context: context, name: link.ColumnName) })); CreateFullText( context: context, id: id, fullText: resultModel.FullText( context: context, ss: ss, backgroundTask: true)); break; case "Wikis": var wikiModel = new WikiModel( context: context, ss: ss, wikiId: id); CreateFullText( context: context, id: id, fullText: wikiModel.FullText( context: context, ss: ss, backgroundTask: true)); break; } } }
public static string ImportSitePackage(Context context, SiteSettings ss) { var includeData = context.Forms.Bool("IncludeData"); var includeSitePermission = context.Forms.Bool("IncludeSitePermission"); var includeRecordPermission = context.Forms.Bool("IncludeRecordPermission"); var includeColumnPermission = context.Forms.Bool("IncludeColumnPermission"); if (ss.SiteId == 0) { ss.PermissionType = context.SiteTopPermission(); } if (!Parameters.SitePackage.Import || !context.CanManageSite(ss: ss)) { return(Messages.ResponseInvalidRequest(context: context).ToJson()); } if (includeData && context.ContractSettings.Import == false) { return(Messages.ResponseInvalidRequest(context: context).ToJson()); } var serializer = new JsonSerializer(); using (var ms = new System.IO.MemoryStream( buffer: context.PostedFiles.FirstOrDefault().Byte(), writable: false)) using (var sr = new System.IO.StreamReader(ms, Encoding.UTF8)) using (var reader = new JsonTextReader(sr)) { var sitePackage = serializer.Deserialize <SitePackage>(reader); if (context.ContractSettings.SitesLimit( context: context, number: sitePackage.Sites.Count())) { return(Messages.ResponseSitesLimit(context: context).ToJson()); } if (includeData) { if (Parameters.General.ImportMax > 0 && Parameters.General.ImportMax < sitePackage.Data .SelectMany(o => o.Body) .Count()) { return(Messages.ResponseImportMax( context: context, data: Parameters.General.ImportMax.ToString()) .ToJson()); } if (sitePackage.Data.Any(o => o.Header.Any(p => context.ContractSettings.ItemsLimit( context: context, siteId: p.SiteId, number: o.Body.Count())))) { return(Messages.ResponseItemsLimit( context: context, data: Parameters.General.ImportMax.ToString()) .ToJson()); } } sitePackage.HeaderInfo.SavedBaseSiteId = context.SiteId; sitePackage.HeaderInfo.SavedInheritPermission = ss.InheritPermission; foreach (var conv in sitePackage.HeaderInfo.Convertors) { var response = Rds.ExecuteScalar_response( context: context, transactional: true, selectIdentity: true, statements: new SqlStatement[] { Rds.InsertItems( selectIdentity: true, param: Rds.ItemsParam() .ReferenceType("Sites") .Title(conv.SiteTitle)), Rds.UpdateItems( where : Rds.ItemsWhere().ReferenceId(raw: Def.Sql.Identity), param: Rds.ItemsParam().SiteId(raw: Def.Sql.Identity)), }); conv.SavedSiteId = response.Id; } foreach (var conv in sitePackage.HeaderInfo.Convertors) { var packageSiteModel = sitePackage.Sites .Where(e => e.SiteId == conv.SiteId) .FirstOrDefault(); packageSiteModel.SetSavedIds( context: context, ss: ss, sitePackage: sitePackage, savedSiteId: conv.SavedSiteId.ToLong(), includeSitePermission: includeSitePermission && sitePackage.HeaderInfo.IncludeSitePermission); packageSiteModel.SiteSettings = packageSiteModel.GetSavedSiteSettings( context: context, header: sitePackage.HeaderInfo, includeColumnPermission: includeColumnPermission, permissionIdList: sitePackage.PermissionIdList); Rds.ExecuteScalar_response( context: context, transactional: true, statements: new SqlStatement[] { Rds.InsertSites(param: Rds.SitesParam() .SiteId(packageSiteModel.SavedSiteId) .TenantId(packageSiteModel.SavedTenantId) .Title(packageSiteModel.Title) .Body(packageSiteModel.Body) .GridGuide(packageSiteModel.GridGuide) .EditorGuide(packageSiteModel.EditorGuide) .ReferenceType(packageSiteModel.ReferenceType.MaxLength(32)) .ParentId(packageSiteModel.SavedParentId) .InheritPermission(packageSiteModel.SavedInheritPermission) .SiteSettings(packageSiteModel.SiteSettings.ToJson()) .Publish(packageSiteModel.Publish) .Comments(packageSiteModel.Comments.ToJson())), Rds.PhysicalDeleteLinks( where : Rds.LinksWhere().SourceId(packageSiteModel.SavedSiteId)), LinkUtilities.Insert(link: packageSiteModel.SiteSettings.Links? .Select(o => o.SiteId) .Distinct() .ToDictionary(o => o, o => packageSiteModel.SavedSiteId) ?? new Dictionary <long, long>()), Rds.InsertPermissions( param: Rds.PermissionsParam() .ReferenceId(packageSiteModel.SavedSiteId) .DeptId(0) .UserId(context.UserId) .PermissionType(Permissions.Manager()), _using: packageSiteModel.SavedInheritPermission == packageSiteModel.SavedSiteId), }); var siteModel = new SiteModel( context: context, siteId: packageSiteModel.SavedSiteId); var fullText = siteModel.FullText( context: context, ss: siteModel.SiteSettings); Rds.ExecuteNonQuery( context: context, transactional: true, statements: Rds.UpdateItems( where : Rds.ItemsWhere() .ReferenceId(packageSiteModel.SavedSiteId), param: Rds.ItemsParam() .FullText(fullText, _using: fullText != null) .SearchIndexCreatedTime(DateTime.Now, _using: fullText != null))); } var idHash = sitePackage.GetIdHashFromConverters(); foreach (long savedSiteId in sitePackage.HeaderInfo.Convertors.Select(e => e.SavedSiteId)) { var siteModel = new SiteModel( context: context, siteId: savedSiteId); switch (siteModel.ReferenceType) { case "Wikis": var wikiModel = new WikiModel( context: context, ss: siteModel.SiteSettings) { SiteId = siteModel.SiteId, Title = siteModel.Title, Body = siteModel.Body, Comments = siteModel.Comments }; wikiModel.Create( context: context, ss: siteModel.SiteSettings); var wikiId = Rds.ExecuteScalar_long( context: context, statements: Rds.SelectWikis( top: 1, column: Rds.WikisColumn().WikiId(), where : Rds.WikisWhere().SiteId(siteModel.SiteId))); idHash.Add(savedSiteId, wikiId); break; default: Search.Indexes.Create( context: context, ss: siteModel.SiteSettings, id: siteModel.SiteId); break; } } int dataCount = 0; if (includeData) { if (sitePackage.Data.Any()) { ImportItems( context: context, sitePackage: sitePackage, idHash: idHash); sitePackage.ConvertDataId( context: context, idHash: idHash); dataCount = ImportData( context: context, sitePackage: sitePackage, idHash: idHash); } } if (sitePackage.HeaderInfo.Convertors.Any()) { foreach (var conv in sitePackage.HeaderInfo.Convertors) { if (conv.ReferenceType == "Sites") { if ((!conv.Order.IsNullOrEmpty() && conv.Order.Equals("[]") == false)) { var newOrders = new List <long>(); var orders = conv.Order.Deserialize <List <long> >()?.ToList() ?? new List <long>(); orders.ForEach(e => newOrders.Add(idHash.Get(e))); if (newOrders.Any()) { new OrderModel() { ReferenceId = conv.SavedSiteId.ToLong(), ReferenceType = "Sites", OwnerId = 0, Data = newOrders }.UpdateOrCreate(context: context); } } } } var response = Rds.ExecuteScalar_response( context: context, transactional: true, statements: StatusUtilities.UpdateStatus( tenantId: context.TenantId, type: StatusUtilities.Types.SitesUpdated)); } if (sitePackage.Permissions.Any()) { foreach (var conv in sitePackage.HeaderInfo.Convertors) { var packageSiteModel = sitePackage.Sites .Where(e => e.SiteId == conv.SiteId) .FirstOrDefault(); var packagePermissionModel = sitePackage.Permissions .Where(e => e.SiteId == conv.SiteId) .FirstOrDefault(); foreach (var permissionShortModel in packagePermissionModel.Permissions) { if (includeSitePermission == false) { if (permissionShortModel.ReferenceId == packagePermissionModel.SiteId) { continue; } } if ((includeRecordPermission == false) || (dataCount == 0)) { if (permissionShortModel.ReferenceId != packagePermissionModel.SiteId) { continue; } } var idConverter = new IdConverter( context: context, siteId: packageSiteModel.SavedSiteId, permissionShortModel: permissionShortModel, permissionIdList: sitePackage.PermissionIdList, convertSiteId: idHash[permissionShortModel.ReferenceId]); if (idConverter.Convert == true) { Rds.ExecuteNonQuery( context: context, transactional: true, statements: Rds.InsertPermissions( param: Rds.PermissionsParam() .ReferenceId(idHash[permissionShortModel.ReferenceId]) .DeptId(idConverter.ConvertDeptId) .GroupId(idConverter.ConvertGroupId) .UserId(idConverter.ConvertUserId) .PermissionType(permissionShortModel.PermissionType))); } } } } SessionUtilities.Set( context: context, message: Messages.SitePackageImported( context: context, data: new string[] { sitePackage.HeaderInfo.Convertors.Count().ToString(), dataCount.ToString() })); return(new ResponseCollection() .Href(url: Locations.ItemIndex( context: context, id: ss.SiteId)) .ToJson()); } }
public static void Initialize(Context context) { if (!context.HasPrivilege) { return; } var sqlExists = "exists (select * from {0} where {1}={2})"; Rds.ExecuteNonQuery( context: context, statements: Rds.PhysicalDeleteItems( where : Rds.ItemsWhere().Add(raw: sqlExists.Params( "[Items_Deleted]", "[Items_Deleted].[ReferenceId]", "[Items].[ReferenceId]")))); Rds.ExecuteNonQuery( context: context, statements: Rds.PhysicalDeleteSites( where : Rds.ItemsWhere().Add(raw: sqlExists.Params( "[Sites_Deleted]", "[Sites_Deleted].[SiteId]", "[Sites].[SiteId]")))); Rds.ExecuteNonQuery( context: context, statements: Rds.DeleteSites( where : Rds.ItemsWhere().Add(raw: sqlExists.Params( "[Items_Deleted]", "[Items_Deleted].[ReferenceId]", "[Sites].[SiteId]")))); new SiteCollection( context: context, where : Rds.SitesWhere().Add(raw: "not " + sqlExists.Params( "[Items]", "[Items].[ReferenceId]", "[Sites].[SiteId]")), tableType: Sqls.TableTypes.Normal) .ForEach(siteModel => { if (siteModel.SiteSettings != null) { var fullText = siteModel.FullText( context: context.CreateContext(tenantId: siteModel.TenantId), ss: siteModel.SiteSettings); Rds.ExecuteNonQuery( context: context.CreateContext(tenantId: siteModel.TenantId), connectionString: Parameters.Rds.OwnerConnectionString, statements: new SqlStatement[] { Rds.IdentityInsertItems(on: true), Rds.InsertItems( param: Rds.ItemsParam() .ReferenceId(siteModel.SiteId) .ReferenceType("Sites") .SiteId(siteModel.SiteId) .Title(siteModel.Title.Value) .FullText(fullText, _using: fullText != null) .SearchIndexCreatedTime(DateTime.Now)), Rds.IdentityInsertItems(on: false) }); } }); new SiteCollection( context: context, where : Rds.SitesWhere().Add(raw: "not " + sqlExists.Params( "[Items_Deleted]", "[Items_Deleted].[ReferenceId]", "[Sites].[SiteId]")), tableType: Sqls.TableTypes.Deleted) .ForEach(siteModel => { if (siteModel.SiteSettings != null) { Rds.ExecuteNonQuery( context: context.CreateContext(tenantId: siteModel.TenantId), statements: new SqlStatement[] { Rds.InsertItems( tableType: Sqls.TableTypes.Deleted, param: Rds.ItemsParam() .ReferenceId(siteModel.SiteId) .Ver(siteModel.Ver) .ReferenceType("Sites") .SiteId(siteModel.SiteId) .Title(siteModel.Title.Value)) }); } }); Rds.ExecuteNonQuery( context: context, statements: Rds.PhysicalDeleteIssues( where : Rds.ItemsWhere().Add(raw: sqlExists.Params( "[Issues_Deleted]", "[Issues_Deleted].[IssueId]", "[Issues].[IssueId]")))); Rds.ExecuteNonQuery( context: context, statements: Rds.DeleteIssues( where : Rds.ItemsWhere().Add(raw: sqlExists.Params( "[Items_Deleted]", "[Items_Deleted].[ReferenceId]", "[Issues].[IssueId]")))); Rds.ExecuteTable( context: context, statements: Rds.SelectIssues( tableType: Sqls.TableTypes.Normal, column: Rds.IssuesColumn() .SiteId() .IssueId() .Ver() .Sites_TenantId(), join: Rds.IssuesJoinDefault() .Add( tableName: "Items", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Items].[ReferenceId]=[Issues].[IssueId]") .Add( tableName: "Sites", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Sites].[SiteId]=[Issues].[SiteId]"), where : Rds.ItemsWhere() .ReferenceId( tableName: "Items", _operator: " is null"))) .AsEnumerable() .ForEach(dataRow => { var siteId = dataRow.Long("SiteId"); var ss = new SiteModel().Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), where : Rds.SitesWhere().SiteId(siteId))? .IssuesSiteSettings( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), referenceId: dataRow.Long("IssueId")); var issueModel = new IssueModel( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss) .Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss, tableType: Sqls.TableTypes.Normal, where : Rds.IssuesWhere() .SiteId(dataRow.Long("SiteId")) .IssueId(dataRow.Long("IssueId")) .Ver(dataRow.Int("Ver"))); if (ss != null && issueModel.AccessStatus == Databases.AccessStatuses.Selected) { var fullText = issueModel.FullText( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss); Rds.ExecuteNonQuery( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), connectionString: Parameters.Rds.OwnerConnectionString, statements: new SqlStatement[] { Rds.IdentityInsertItems(on: true), Rds.InsertItems( param: Rds.ItemsParam() .ReferenceId(issueModel.IssueId) .ReferenceType("Issues") .SiteId(issueModel.SiteId) .Title(issueModel.Title.DisplayValue) .FullText(fullText, _using: fullText != null) .SearchIndexCreatedTime(DateTime.Now)), Rds.IdentityInsertItems(on: false) }); } }); Rds.ExecuteTable( context: context, statements: Rds.SelectIssues( tableType: Sqls.TableTypes.Deleted, column: Rds.IssuesColumn() .SiteId() .IssueId() .Ver(), join: Rds.IssuesJoinDefault() .Add( tableName: "Items_Deleted", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Items_Deleted].[ReferenceId]=[Issues].[IssueId]") .Add( tableName: "Sites", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Sites].[SiteId]=[Issues].[SiteId]"), where : Rds.ItemsWhere() .ReferenceId( tableName: "Items_Deleted", _operator: " is null"))) .AsEnumerable() .ForEach(dataRow => { var siteId = dataRow.Long("SiteId"); var ss = new SiteModel().Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), where : Rds.SitesWhere().SiteId(siteId))? .IssuesSiteSettings( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), referenceId: dataRow.Long("IssueId")); var issueModel = new IssueModel( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss) .Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss, tableType: Sqls.TableTypes.Deleted, where : Rds.IssuesWhere() .SiteId(dataRow.Long("SiteId")) .IssueId(dataRow.Long("IssueId")) .Ver(dataRow.Int("Ver"))); if (ss != null && issueModel.AccessStatus == Databases.AccessStatuses.Selected) { Rds.ExecuteNonQuery( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), statements: new SqlStatement[] { Rds.InsertItems( tableType: Sqls.TableTypes.Deleted, param: Rds.ItemsParam() .ReferenceId(issueModel.IssueId) .Ver(issueModel.Ver) .ReferenceType("Issues") .SiteId(issueModel.SiteId) .Title(issueModel.Title.DisplayValue)) }); } }); Rds.ExecuteNonQuery( context: context, statements: Rds.PhysicalDeleteResults( where: Rds.ItemsWhere().Add(raw: sqlExists.Params( "[Results_Deleted]", "[Results_Deleted].[ResultId]", "[Results].[ResultId]")))); Rds.ExecuteNonQuery( context: context, statements: Rds.DeleteResults( where : Rds.ItemsWhere().Add(raw: sqlExists.Params( "[Items_Deleted]", "[Items_Deleted].[ReferenceId]", "[Results].[ResultId]")))); Rds.ExecuteTable( context: context, statements: Rds.SelectResults( tableType: Sqls.TableTypes.Normal, column: Rds.ResultsColumn() .SiteId() .ResultId() .Ver() .Sites_TenantId(), join: Rds.ResultsJoinDefault() .Add( tableName: "Items", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Items].[ReferenceId]=[Results].[ResultId]") .Add( tableName: "Sites", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Sites].[SiteId]=[Results].[SiteId]"), where : Rds.ItemsWhere() .ReferenceId( tableName: "Items", _operator: " is null"))) .AsEnumerable() .ForEach(dataRow => { var siteId = dataRow.Long("SiteId"); var ss = new SiteModel().Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), where : Rds.SitesWhere().SiteId(siteId))? .ResultsSiteSettings( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), referenceId: dataRow.Long("ResultId")); var resultModel = new ResultModel( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss) .Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss, tableType: Sqls.TableTypes.Normal, where : Rds.ResultsWhere() .SiteId(dataRow.Long("SiteId")) .ResultId(dataRow.Long("ResultId")) .Ver(dataRow.Int("Ver"))); if (ss != null && resultModel.AccessStatus == Databases.AccessStatuses.Selected) { var fullText = resultModel.FullText( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss); Rds.ExecuteNonQuery( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), connectionString: Parameters.Rds.OwnerConnectionString, statements: new SqlStatement[] { Rds.IdentityInsertItems(on: true), Rds.InsertItems( param: Rds.ItemsParam() .ReferenceId(resultModel.ResultId) .ReferenceType("Results") .SiteId(resultModel.SiteId) .Title(resultModel.Title.DisplayValue) .FullText(fullText, _using: fullText != null) .SearchIndexCreatedTime(DateTime.Now)), Rds.IdentityInsertItems(on: false) }); } }); Rds.ExecuteTable( context: context, statements: Rds.SelectResults( tableType: Sqls.TableTypes.Deleted, column: Rds.ResultsColumn() .SiteId() .ResultId() .Ver(), join: Rds.ResultsJoinDefault() .Add( tableName: "Items_Deleted", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Items_Deleted].[ReferenceId]=[Results].[ResultId]") .Add( tableName: "Sites", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Sites].[SiteId]=[Results].[SiteId]"), where : Rds.ItemsWhere() .ReferenceId( tableName: "Items_Deleted", _operator: " is null"))) .AsEnumerable() .ForEach(dataRow => { var siteId = dataRow.Long("SiteId"); var ss = new SiteModel().Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), where : Rds.SitesWhere().SiteId(siteId))? .ResultsSiteSettings( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), referenceId: dataRow.Long("ResultId")); var resultModel = new ResultModel( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss) .Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss, tableType: Sqls.TableTypes.Deleted, where : Rds.ResultsWhere() .SiteId(dataRow.Long("SiteId")) .ResultId(dataRow.Long("ResultId")) .Ver(dataRow.Int("Ver"))); if (ss != null && resultModel.AccessStatus == Databases.AccessStatuses.Selected) { Rds.ExecuteNonQuery( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), statements: new SqlStatement[] { Rds.InsertItems( tableType: Sqls.TableTypes.Deleted, param: Rds.ItemsParam() .ReferenceId(resultModel.ResultId) .Ver(resultModel.Ver) .ReferenceType("Results") .SiteId(resultModel.SiteId) .Title(resultModel.Title.DisplayValue)) }); } }); Rds.ExecuteNonQuery( context: context, statements: Rds.PhysicalDeleteWikis( where: Rds.ItemsWhere().Add(raw: sqlExists.Params( "[Wikis_Deleted]", "[Wikis_Deleted].[WikiId]", "[Wikis].[WikiId]")))); Rds.ExecuteNonQuery( context: context, statements: Rds.DeleteWikis( where : Rds.ItemsWhere().Add(raw: sqlExists.Params( "[Items_Deleted]", "[Items_Deleted].[ReferenceId]", "[Wikis].[WikiId]")))); Rds.ExecuteTable( context: context, statements: Rds.SelectWikis( tableType: Sqls.TableTypes.Normal, column: Rds.WikisColumn() .SiteId() .WikiId() .Ver() .Sites_TenantId(), join: Rds.WikisJoinDefault() .Add( tableName: "Items", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Items].[ReferenceId]=[Wikis].[WikiId]") .Add( tableName: "Sites", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Sites].[SiteId]=[Wikis].[SiteId]"), where : Rds.ItemsWhere() .ReferenceId( tableName: "Items", _operator: " is null"))) .AsEnumerable() .ForEach(dataRow => { var siteId = dataRow.Long("SiteId"); var ss = new SiteModel().Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), where : Rds.SitesWhere().SiteId(siteId))? .WikisSiteSettings( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), referenceId: dataRow.Long("WikiId")); var wikiModel = new WikiModel( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss) .Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss, tableType: Sqls.TableTypes.Normal, where : Rds.WikisWhere() .SiteId(dataRow.Long("SiteId")) .WikiId(dataRow.Long("WikiId")) .Ver(dataRow.Int("Ver"))); if (ss != null && wikiModel.AccessStatus == Databases.AccessStatuses.Selected) { var fullText = wikiModel.FullText( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss); Rds.ExecuteNonQuery( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), connectionString: Parameters.Rds.OwnerConnectionString, statements: new SqlStatement[] { Rds.IdentityInsertItems(on: true), Rds.InsertItems( param: Rds.ItemsParam() .ReferenceId(wikiModel.WikiId) .ReferenceType("Wikis") .SiteId(wikiModel.SiteId) .Title(wikiModel.Title.DisplayValue) .FullText(fullText, _using: fullText != null) .SearchIndexCreatedTime(DateTime.Now)), Rds.IdentityInsertItems(on: false) }); } }); Rds.ExecuteTable( context: context, statements: Rds.SelectWikis( tableType: Sqls.TableTypes.Deleted, column: Rds.WikisColumn() .SiteId() .WikiId() .Ver(), join: Rds.WikisJoinDefault() .Add( tableName: "Items_Deleted", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Items_Deleted].[ReferenceId]=[Wikis].[WikiId]") .Add( tableName: "Sites", joinType: SqlJoin.JoinTypes.LeftOuter, joinExpression: "[Sites].[SiteId]=[Wikis].[SiteId]"), where : Rds.ItemsWhere() .ReferenceId( tableName: "Items_Deleted", _operator: " is null"))) .AsEnumerable() .ForEach(dataRow => { var siteId = dataRow.Long("SiteId"); var ss = new SiteModel().Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), where : Rds.SitesWhere().SiteId(siteId))? .WikisSiteSettings( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), referenceId: dataRow.Long("WikiId")); var wikiModel = new WikiModel( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss) .Get( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), ss: ss, tableType: Sqls.TableTypes.Deleted, where : Rds.WikisWhere() .SiteId(dataRow.Long("SiteId")) .WikiId(dataRow.Long("WikiId")) .Ver(dataRow.Int("Ver"))); if (ss != null && wikiModel.AccessStatus == Databases.AccessStatuses.Selected) { Rds.ExecuteNonQuery( context: context.CreateContext(tenantId: dataRow.Int("TenantId")), statements: new SqlStatement[] { Rds.InsertItems( tableType: Sqls.TableTypes.Deleted, param: Rds.ItemsParam() .ReferenceId(wikiModel.WikiId) .Ver(wikiModel.Ver) .ReferenceType("Wikis") .SiteId(wikiModel.SiteId) .Title(wikiModel.Title.DisplayValue)) }); } }); }
public static void Create(IContext context, SiteSettings ss, long id, bool force = false) { if (Parameters.Search.Provider.IsNullOrEmpty() && Parameters.Search.CreateIndexes) { var itemModel = new ItemModel( context: context, referenceId: id); switch (itemModel.ReferenceType) { case "Sites": var siteModel = new SiteModel(context: context, siteId: id); Task.Run(() => CreateIndexes( context: context, ss: ss, hash: siteModel.SearchIndexHash(context: context, ss: ss), id: id)); break; case "Issues": var issueModel = new IssueModel(context: context, ss: ss, issueId: id); Task.Run(() => CreateIndexes( context: context, ss: ss, hash: issueModel.SearchIndexHash(context: context, ss: ss), id: id)); break; case "Results": var resultModel = new ResultModel(context: context, ss: ss, resultId: id); Task.Run(() => CreateIndexes( context: context, ss: ss, hash: resultModel.SearchIndexHash(context: context, ss: ss), id: id)); break; case "Wikis": var wikiModel = new WikiModel(context: context, ss: ss, wikiId: id); Task.Run(() => CreateIndexes( context: context, ss: ss, hash: wikiModel.SearchIndexHash(context: context, ss: ss), id: id)); break; } } else if (force) { var itemModel = new ItemModel( context: context, referenceId: id); switch (itemModel.ReferenceType) { case "Sites": var siteModel = new SiteModel(context: context, siteId: id); switch (Parameters.Search.Provider) { case "FullText": CreateFullText( context: context, id: id, fullText: siteModel.FullText( context: context, ss: ss, backgroundTask: true)); break; default: CreateIndexes( context: context, ss: ss, hash: siteModel.SearchIndexHash(context: context, ss: ss), id: id); break; } break; case "Issues": var issueModel = new IssueModel( context: context, ss: ss, issueId: id); ss.Links? .Where(o => ss.GetColumn( context: context, columnName: o.ColumnName).UseSearch == true) .ForEach(link => ss.SetChoiceHash( context: context, columnName: link.ColumnName, selectedValues: new List <string> { issueModel.PropertyValue( context: context, name: link.ColumnName) })); switch (Parameters.Search.Provider) { case "FullText": CreateFullText( context: context, id: id, fullText: issueModel.FullText( context: context, ss: ss, backgroundTask: true)); break; default: CreateIndexes( context: context, ss: ss, hash: issueModel.SearchIndexHash( context: context, ss: ss), id: id); break; } break; case "Results": var resultModel = new ResultModel( context: context, ss: ss, resultId: id); ss.Links? .Where(o => ss.GetColumn( context: context, columnName: o.ColumnName).UseSearch == true) .ForEach(link => ss.SetChoiceHash( context: context, columnName: link.ColumnName, selectedValues: new List <string> { resultModel.PropertyValue( context: context, name: link.ColumnName) })); switch (Parameters.Search.Provider) { case "FullText": CreateFullText( context: context, id: id, fullText: resultModel.FullText( context: context, ss: ss, backgroundTask: true)); break; default: CreateIndexes( context: context, ss: ss, hash: resultModel.SearchIndexHash( context: context, ss: ss), id: id); break; } break; case "Wikis": var wikiModel = new WikiModel( context: context, ss: ss, wikiId: id); switch (Parameters.Search.Provider) { case "FullText": CreateFullText( context: context, id: id, fullText: wikiModel.FullText( context: context, ss: ss, backgroundTask: true)); break; default: CreateIndexes( context: context, ss: ss, hash: wikiModel.SearchIndexHash( context: context, ss: ss), id: id); break; } break; } } }
public static void Initialize() { if (ItemsIsEmpty()) { new SiteCollection().ForEach(siteModel => { if (siteModel.SiteSettings != null) { Rds.ExecuteNonQuery( connectionString: Parameters.Rds.OwnerConnectionString, statements: new SqlStatement[] { Rds.IdentityInsertItems(on: true), Rds.InsertItems( param: Rds.ItemsParam() .ReferenceId(siteModel.SiteId) .ReferenceType("Sites") .SiteId(siteModel.SiteId) .Title(siteModel.Title.Value)), Rds.IdentityInsertItems(on: false) }); } }); new SiteCollection(tableType: Sqls.TableTypes.Deleted).ForEach(siteModel => { if (siteModel.SiteSettings != null) { Rds.ExecuteNonQuery( statements: new SqlStatement[] { Rds.InsertItems( tableType: Sqls.TableTypes.Deleted, param: Rds.ItemsParam() .ReferenceId(siteModel.SiteId) .Ver(siteModel.Ver) .ReferenceType("Sites") .SiteId(siteModel.SiteId) .Title(siteModel.Title.Value)) }); } }); new SiteCollection(tableType: Sqls.TableTypes.History).ForEach(siteModel => { if (siteModel.SiteSettings != null) { Rds.ExecuteNonQuery( statements: new SqlStatement[] { Rds.InsertItems( tableType: Sqls.TableTypes.History, param: Rds.ItemsParam() .ReferenceId(siteModel.SiteId) .Ver(siteModel.Ver) .ReferenceType("Sites") .SiteId(siteModel.SiteId) .Title(siteModel.Title.Value)) }); } }); Rds.ExecuteTable(statements: Rds.SelectIssues( tableType: Sqls.TableTypes.Normal, column: Rds.IssuesColumn() .SiteId() .IssueId() .Ver())).AsEnumerable().ForEach(dataRow => { var siteId = dataRow["SiteId"].ToLong(); var ss = new SiteModel().Get(where : Rds.SitesWhere().SiteId(siteId))? .IssuesSiteSettings(dataRow["IssueId"].ToLong()); var issueModel = new IssueModel(ss).Get( ss: ss, tableType: Sqls.TableTypes.Normal, where : Rds.IssuesWhere() .SiteId(dataRow["SiteId"].ToLong()) .IssueId(dataRow["IssueId"].ToLong()) .Ver(dataRow["Ver"].ToInt())); if (ss != null && issueModel.AccessStatus == Databases.AccessStatuses.Selected) { Rds.ExecuteNonQuery( connectionString: Parameters.Rds.OwnerConnectionString, statements: new SqlStatement[] { Rds.IdentityInsertItems(on: true), Rds.InsertItems( param: Rds.ItemsParam() .ReferenceId(issueModel.IssueId) .ReferenceType("Issues") .SiteId(issueModel.SiteId) .Title(IssueUtilities.TitleDisplayValue( ss, issueModel))), Rds.IdentityInsertItems(on: false) }); } }); Rds.ExecuteTable(statements: Rds.SelectIssues( tableType: Sqls.TableTypes.Deleted, column: Rds.IssuesColumn() .SiteId() .IssueId() .Ver())).AsEnumerable().ForEach(dataRow => { var siteId = dataRow["SiteId"].ToLong(); var ss = new SiteModel().Get(where : Rds.SitesWhere().SiteId(siteId))? .IssuesSiteSettings(dataRow["IssueId"].ToLong()); var issueModel = new IssueModel(ss).Get( ss: ss, tableType: Sqls.TableTypes.Deleted, where : Rds.IssuesWhere() .SiteId(dataRow["SiteId"].ToLong()) .IssueId(dataRow["IssueId"].ToLong()) .Ver(dataRow["Ver"].ToInt())); if (ss != null && issueModel.AccessStatus == Databases.AccessStatuses.Selected) { Rds.ExecuteNonQuery( statements: new SqlStatement[] { Rds.InsertItems( tableType: Sqls.TableTypes.Deleted, param: Rds.ItemsParam() .ReferenceId(issueModel.IssueId) .Ver(issueModel.Ver) .ReferenceType("Issues") .SiteId(issueModel.SiteId) .Title(IssueUtilities.TitleDisplayValue( ss, issueModel))) }); } }); Rds.ExecuteTable(statements: Rds.SelectResults( tableType: Sqls.TableTypes.Normal, column: Rds.ResultsColumn() .SiteId() .ResultId() .Ver())).AsEnumerable().ForEach(dataRow => { var siteId = dataRow["SiteId"].ToLong(); var ss = new SiteModel().Get(where : Rds.SitesWhere().SiteId(siteId))? .ResultsSiteSettings(dataRow["ResultId"].ToLong()); var resultModel = new ResultModel(ss).Get( ss: ss, tableType: Sqls.TableTypes.Normal, where : Rds.ResultsWhere() .SiteId(dataRow["SiteId"].ToLong()) .ResultId(dataRow["ResultId"].ToLong()) .Ver(dataRow["Ver"].ToInt())); if (ss != null && resultModel.AccessStatus == Databases.AccessStatuses.Selected) { Rds.ExecuteNonQuery( connectionString: Parameters.Rds.OwnerConnectionString, statements: new SqlStatement[] { Rds.IdentityInsertItems(on: true), Rds.InsertItems( param: Rds.ItemsParam() .ReferenceId(resultModel.ResultId) .ReferenceType("Results") .SiteId(resultModel.SiteId) .Title(ResultUtilities.TitleDisplayValue( ss, resultModel))), Rds.IdentityInsertItems(on: false) }); } }); Rds.ExecuteTable(statements: Rds.SelectResults( tableType: Sqls.TableTypes.Deleted, column: Rds.ResultsColumn() .SiteId() .ResultId() .Ver())).AsEnumerable().ForEach(dataRow => { var siteId = dataRow["SiteId"].ToLong(); var ss = new SiteModel().Get(where : Rds.SitesWhere().SiteId(siteId))? .ResultsSiteSettings(dataRow["ResultId"].ToLong()); var resultModel = new ResultModel(ss).Get( ss: ss, tableType: Sqls.TableTypes.Deleted, where : Rds.ResultsWhere() .SiteId(dataRow["SiteId"].ToLong()) .ResultId(dataRow["ResultId"].ToLong()) .Ver(dataRow["Ver"].ToInt())); if (ss != null && resultModel.AccessStatus == Databases.AccessStatuses.Selected) { Rds.ExecuteNonQuery( statements: new SqlStatement[] { Rds.InsertItems( tableType: Sqls.TableTypes.Deleted, param: Rds.ItemsParam() .ReferenceId(resultModel.ResultId) .Ver(resultModel.Ver) .ReferenceType("Results") .SiteId(resultModel.SiteId) .Title(ResultUtilities.TitleDisplayValue( ss, resultModel))) }); } }); Rds.ExecuteTable(statements: Rds.SelectWikis( tableType: Sqls.TableTypes.Normal, column: Rds.WikisColumn() .SiteId() .WikiId() .Ver())).AsEnumerable().ForEach(dataRow => { var siteId = dataRow["SiteId"].ToLong(); var ss = new SiteModel().Get(where : Rds.SitesWhere().SiteId(siteId))? .WikisSiteSettings(dataRow["WikiId"].ToLong()); var wikiModel = new WikiModel(ss).Get( ss: ss, tableType: Sqls.TableTypes.Normal, where : Rds.WikisWhere() .SiteId(dataRow["SiteId"].ToLong()) .WikiId(dataRow["WikiId"].ToLong()) .Ver(dataRow["Ver"].ToInt())); if (ss != null && wikiModel.AccessStatus == Databases.AccessStatuses.Selected) { Rds.ExecuteNonQuery( connectionString: Parameters.Rds.OwnerConnectionString, statements: new SqlStatement[] { Rds.IdentityInsertItems(on: true), Rds.InsertItems( param: Rds.ItemsParam() .ReferenceId(wikiModel.WikiId) .ReferenceType("Wikis") .SiteId(wikiModel.SiteId) .Title(WikiUtilities.TitleDisplayValue( ss, wikiModel))), Rds.IdentityInsertItems(on: false) }); } }); Rds.ExecuteTable(statements: Rds.SelectWikis( tableType: Sqls.TableTypes.Deleted, column: Rds.WikisColumn() .SiteId() .WikiId() .Ver())).AsEnumerable().ForEach(dataRow => { var siteId = dataRow["SiteId"].ToLong(); var ss = new SiteModel().Get(where : Rds.SitesWhere().SiteId(siteId))? .WikisSiteSettings(dataRow["WikiId"].ToLong()); var wikiModel = new WikiModel(ss).Get( ss: ss, tableType: Sqls.TableTypes.Deleted, where : Rds.WikisWhere() .SiteId(dataRow["SiteId"].ToLong()) .WikiId(dataRow["WikiId"].ToLong()) .Ver(dataRow["Ver"].ToInt())); if (ss != null && wikiModel.AccessStatus == Databases.AccessStatuses.Selected) { Rds.ExecuteNonQuery( statements: new SqlStatement[] { Rds.InsertItems( tableType: Sqls.TableTypes.Deleted, param: Rds.ItemsParam() .ReferenceId(wikiModel.WikiId) .Ver(wikiModel.Ver) .ReferenceType("Wikis") .SiteId(wikiModel.SiteId) .Title(WikiUtilities.TitleDisplayValue( ss, wikiModel))) }); } }); } }
public IActionResult Wiki(WikiModel model) { return(View("WikiDisplay", model)); }
public IActionResult Wiki() { var model = new WikiModel(); return(View("Wiki", model)); }
private void Construct( Context context, List <SelectedSite> siteList, bool includeRecordPermission, bool includeColumnPermission) { var recordIdList = new List <long>(); if ((siteList != null) && (siteList.Count > 0)) { foreach (SelectedSite site in siteList) { var siteModel = new SiteModel( context: context, siteId: site.SiteId); var packageSiteModel = new PackageSiteModel(new SiteModel( context: context, siteId: site.SiteId)); if (packageSiteModel.ReferenceType == "Wikis") { var wikiId = Rds.ExecuteScalar_long( context: context, statements: Rds.SelectWikis( top: 1, column: Rds.WikisColumn().WikiId(), where : Rds.WikisWhere().SiteId(siteModel.SiteId))); var wikiModel = new WikiModel( context: context, ss: siteModel.SiteSettings, wikiId: wikiId); packageSiteModel.WikiId = wikiId; packageSiteModel.Body = wikiModel.Body; } if (includeColumnPermission == false) { packageSiteModel.SiteSettings.CreateColumnAccessControls?.Clear(); packageSiteModel.SiteSettings.ReadColumnAccessControls?.Clear(); packageSiteModel.SiteSettings.UpdateColumnAccessControls?.Clear(); } Sites.Add(packageSiteModel); string order = null; if (siteModel.ReferenceType == "Sites") { var orderModel = new OrderModel( context: context, ss: siteModel.SiteSettings, referenceId: siteModel.SiteId, referenceType: "Sites"); order = orderModel.SavedData; } HeaderInfo.Add( siteId: site.SiteId, referenceType: packageSiteModel.ReferenceType, includeData: site.IncludeData, order: order, siteTitle: packageSiteModel.Title); recordIdList.Clear(); if (site.IncludeData == true) { switch (packageSiteModel.ReferenceType) { case "Issues": case "Results": var ss = siteModel.SiteSettings; ss.SetPermissions( context: context, referenceId: ss.SiteId); var export = new Export(ss.DefaultExportColumns(context: context)); export.Header = true; export.Type = Export.Types.Json; export.Columns.ForEach(o => o.SiteId = ss.SiteId); var gridData = Utilities.GetGridData( context: context, ss: ss, export: export); if (gridData.TotalCount > 0) { Data.Add(gridData.GetJsonExport( context: context, ss: ss, export: export)); foreach (DataRow dr in gridData.DataRows) { recordIdList.Add(dr[0].ToLong()); } } break; } } if (includeRecordPermission == true) { var packagePermissionModel = new PackagePermissionModel( context: context, siteModel: siteModel, recordIdList: recordIdList); Permissions.Add(packagePermissionModel); } } } }
public static void Create(SiteSettings ss, long id, bool backgroundTask = false) { if (Parameters.Service.CreateIndexes) { var itemModel = new ItemModel(id); switch (itemModel.ReferenceType) { case "Sites": var siteModel = new SiteModel(id); Task.Run(() => CreateIndexes( ss, siteModel.SearchIndexHash(ss), id)); break; case "Issues": var issueModel = new IssueModel(ss, id); Task.Run(() => CreateIndexes( ss, issueModel.SearchIndexHash(ss), id)); break; case "Results": var resultModel = new ResultModel(ss, id); Task.Run(() => CreateIndexes( ss, resultModel.SearchIndexHash(ss), id)); break; case "Wikis": var wikiModel = new WikiModel(ss, id); Task.Run(() => CreateIndexes( ss, wikiModel.SearchIndexHash(ss), id)); break; } } else if (backgroundTask) { var itemModel = new ItemModel(id); switch (itemModel.ReferenceType) { case "Sites": var siteModel = new SiteModel(id); CreateIndexes( ss, siteModel.SearchIndexHash(ss), id); break; case "Issues": var issueModel = new IssueModel(ss, id); ss.Links? .Where(o => ss.GetColumn(o.ColumnName).UseSearch == true) .ForEach(link => ss.SetChoiceHash( columnName: link.ColumnName, selectedValues: new List <string> { issueModel.PropertyValue(link.ColumnName) })); CreateIndexes( ss, issueModel.SearchIndexHash(ss), id); break; case "Results": var resultModel = new ResultModel(ss, id); ss.Links? .Where(o => ss.GetColumn(o.ColumnName).UseSearch == true) .ForEach(link => ss.SetChoiceHash( columnName: link.ColumnName, selectedValues: new List <string> { resultModel.PropertyValue(link.ColumnName) })); CreateIndexes( ss, resultModel.SearchIndexHash(ss), id); break; case "Wikis": var wikiModel = new WikiModel(ss, id); CreateIndexes( ss, wikiModel.SearchIndexHash(ss), id); break; } } }