/// <summary> /// Fixed: /// </summary> public static string DeleteSiteImage(SiteModel siteModel) { siteModel.SiteSettings = SiteSettingsUtilities.Get(siteModel, siteModel.SiteId); var invalid = BinaryValidators.OnDeletingSiteImage(siteModel.SiteSettings); switch (invalid) { case Error.Types.None: break; default: return(invalid.MessageJson()); } var error = new BinaryModel(siteModel.SiteId).DeleteSiteImage(); if (error.Has()) { return(error.MessageJson()); } else { return(new ResponseCollection() .Html( "#SiteImageIconContainer", new HtmlBuilder().SiteImageIcon( ss: siteModel.SiteSettings, siteId: siteModel.SiteId)) .Html( "#SiteImageSettingsEditor", new HtmlBuilder().SiteImageSettingsEditor( ss: siteModel.SiteSettings)) .Message(Messages.FileDeleteCompleted()) .ToJson()); } }
public static void UpdateTitles(long siteId, IEnumerable <long> idList) { idList .Chunk(100) .SelectMany(chunked => Rds.ExecuteTable(statements: Rds.SelectLinks( column: Rds.LinksColumn() .SourceId() .SiteId(), join: Rds.LinksJoinDefault(), where : Rds.LinksWhere().DestinationId_In(chunked))) .AsEnumerable()) .Select(dataRow => new { Id = dataRow.Long("SourceId"), SiteId = dataRow.Long("SiteId") }) .GroupBy(o => o.SiteId) .ForEach(links => { var targetSiteId = links.First().SiteId; var siteModel = new SiteModel(targetSiteId); var ss = siteModel.AccessStatus == Databases.AccessStatuses.Selected ? SiteSettingsUtilities.Get(siteModel, targetSiteId) : null; var columns = ss?.Links? .Where(o => o.SiteId == siteId) .Select(o => o.ColumnName) .ToList(); if (ss?.TitleColumns?.Any(o => columns?.Contains(o) == true) == true) { UpdateTitles(ss, links.Select(o => o.Id)); } }); }
public SiteModel GetSite( bool siteOnly = false, bool initSiteSettings = false, bool setSiteIntegration = false) { SiteModel siteModel; if (ReferenceType == "Sites" && Forms.Exists("Ver")) { siteModel = new SiteModel(); siteModel.Get( where : Rds.SitesWhere() .SiteId(ReferenceId) .Ver(Forms.Int("Ver")), tableType: Sqls.TableTypes.NormalAndHistory); siteModel.VerType = Forms.Bool("Latest") ? Versions.VerTypes.Latest : Versions.VerTypes.History; } else { siteModel = siteOnly ? new SiteModel(ReferenceId) : new SiteModel(ReferenceType == "Sites" ? ReferenceId : SiteId); } if (initSiteSettings) { siteModel.SiteSettings = SiteSettingsUtilities.Get( siteModel, ReferenceId, setSiteIntegration: setSiteIntegration); } return(siteModel); }
public Error.Types Update( RdsUser rdsUser = null, SqlParamCollection param = null, List <SqlStatement> additionalStatements = null, bool paramAll = false, bool get = true) { SetBySession(); var timestamp = Timestamp.ToDateTime(); var statements = new List <SqlStatement>(); UpdateStatements(statements, timestamp, param, paramAll, additionalStatements); var count = Rds.ExecuteScalar_int( rdsUser: rdsUser, transactional: true, statements: statements.ToArray()); if (count == 0) { return(Error.Types.UpdateConflicts); } if (get) { Get(); } var siteModel = new ItemModel(ReferenceId).GetSite(); var ss = SiteSettingsUtilities.Get(siteModel, siteModel.SiteId); Libraries.Search.Indexes.Create(ss, ReferenceId, force: true); return(Error.Types.None); }
public string SelectSearchDropDown() { SetSite(); var ss = SiteSettingsUtilities.Get(Site, ReferenceId); var controlId = Forms.Data("DropDownSearchTarget"); var column = ss.Columns.FirstOrDefault(o => controlId.EndsWith(ss.ReferenceType + "_" + o.ColumnName)); ss.SetChoiceHash( columnName: column?.ColumnName, searchIndexes: Forms.Data("DropDownSearchText").SearchIndexes()); var selected = Forms.List("DropDownSearchResults"); var multiple = Forms.Bool("DropDownSearchMultiple"); if (multiple) { return(SelectSearchDropDownResponse(controlId, column, selected, multiple)); } else if (selected.Count() != 1) { return(new ResponseCollection() .Message(Messages.SelectOne()) .ToJson()); } else { return(SelectSearchDropDownResponse(controlId, column, selected, multiple)); } }
public static HtmlBuilder LinkTable( this HtmlBuilder hb, Context context, long siteId, string direction, string dataTableName) { var ss = SiteSettingsUtilities.Get( context: context, siteId: siteId); var view = Views.GetBySession( context: context, ss: ss, dataTableName: dataTableName, setSession: true); return(hb.LinkTable( context: context, ss: ss, view: view, dataRows: DataRows( context: context, ss: ss, view: view, direction: direction, id: context.Id), direction: direction, dataTableName: dataTableName)); }
/// <summary> /// Fixed: /// </summary> public static string RebuildSearchIndexes(Context context, SiteModel siteModel) { siteModel.SiteSettings = SiteSettingsUtilities.Get( context: context, siteModel: siteModel, referenceId: siteModel.SiteId); var ss = siteModel.SiteSettings.SiteSettingsOnUpdate(context: context); var invalid = SiteValidators.OnUpdating( context: context, ss: ss, siteModel: siteModel); switch (invalid.Type) { case Error.Types.None: break; default: return(invalid.MessageJson(context: context)); } RebuildSearchIndexes( context: context, siteId: siteModel.SiteId); return(new ResponseCollection() .Message(Messages.RebuildingCompleted(context: context)) .ToJson()); }
public static void UpdateTitles(long siteId, IEnumerable <long> idList) { Rds.ExecuteTable(statements: Rds.SelectLinks( column: Rds.LinksColumn() .SourceId() .SiteId(), join: Rds.LinksJoinDefault(), where : Rds.LinksWhere().DestinationId_In(idList))) .AsEnumerable() .Select(o => new { Id = o["SourceId"].ToLong(), SiteId = o["SiteId"].ToLong() }) .GroupBy(o => o.SiteId) .ForEach(sites => { var siteModel = new SiteModel(sites.First().SiteId); var ss = siteModel.AccessStatus == Databases.AccessStatuses.Selected ? SiteSettingsUtilities.Get(siteModel, sites.First().Id) : null; var columns = ss.Links? .Where(o => o.SiteId == siteId) .Select(o => o.ColumnName) .ToList(); if (ss.TitleColumns?.Any(o => columns?.Contains(o) == true) == true) { UpdateTitles(ss, sites.Select(o => o.Id)); } }); }
/// <summary> /// Fixed: /// </summary> public static (byte[] bytes, string contentType) SiteImageIcon(Context context, SiteModel siteModel) { siteModel.SiteSettings = SiteSettingsUtilities.Get( context: context, siteModel: siteModel, referenceId: siteModel.SiteId); var invalid = BinaryValidators.OnGetting( context: context, ss: siteModel.SiteSettings); switch (invalid.Type) { case Error.Types.None: break; default: return(null, null); } var binaryModel = new BinaryModel( context: context, referenceId: siteModel.SiteId, binaryType: "SiteImage"); return( binaryModel.SiteImage( context: context, sizeType: Libraries.Images.ImageData.SizeTypes.Icon, column: Rds.BinariesColumn().Icon()), binaryModel.ContentType.IsNullOrEmpty() ? "image/bmp" : binaryModel.ContentType); }
/// <summary> /// Fixed: /// </summary> public static void CreateInBackground() { if (Parameters.BackgroundTask.Enabled) { var hash = new Dictionary <long, SiteModel>(); Rds.ExecuteTable(statements: Rds.SelectItems( column: Rds.ItemsColumn() .ReferenceId() .SiteId() .Updator() .UpdatedTime(), where : Rds.ItemsWhere().Add( raw: "[SearchIndexCreatedTime] is null or [SearchIndexCreatedTime]<>[UpdatedTime]"), top: Parameters.BackgroundTask.CreateSearchIndexLot)) .AsEnumerable() .Select(o => new { ReferenceId = o["ReferenceId"].ToLong(), SiteId = o["SiteId"].ToLong(), Updator = o["Updator"].ToInt(), UpdatedTime = o.Field <DateTime>("UpdatedTime") .ToString("yyyy/M/d H:m:s.fff") }) .ForEach(data => { var siteModel = hash.Get(data.SiteId) ?? new SiteModel().Get(where : Rds.SitesWhere().SiteId(data.SiteId)); System.Web.HttpContext.Current.Session["TenantId"] = siteModel.TenantId; System.Web.HttpContext.Current.Session["RdsUser"] = Rds.ExecuteTable(statements: Rds.SelectUsers( column: Rds.UsersColumn().UserId().DeptId(), where : Rds.UsersWhere().UserId(data.Updator))) .AsEnumerable() .Select(o => new RdsUser() { DeptId = o["DeptId"].ToInt(), UserId = o["UserId"].ToInt() }) .FirstOrDefault(); if (!SiteInfo.TenantCaches.ContainsKey(Sessions.TenantId())) { SiteInfo.Reflesh(); } if (!hash.ContainsKey(data.SiteId)) { siteModel.SiteSettings = SiteSettingsUtilities.Get( siteModel, siteModel.SiteId); hash.Add(data.SiteId, siteModel); } Libraries.Search.Indexes.Create( siteModel.SiteSettings, data.ReferenceId, force: true); Rds.ExecuteNonQuery(statements: Rds.UpdateItems( where : Rds.ItemsWhere().ReferenceId(data.ReferenceId), param: Rds.ItemsParam().SearchIndexCreatedTime(data.UpdatedTime), addUpdatorParam: false, addUpdatedTimeParam: false)); }); } }
/// <summary> /// Fixed: /// </summary> private static void Remind(DataRow dataRow) { Sessions.Set(dataRow.Int("TenantId"), dataRow.Int("Updator")); SiteSettingsUtilities.Get(dataRow.Long("SiteId"))? .Remind(new List <int> { dataRow.Int("Id") }); Sessions.Clear("TenantId"); Sessions.Clear("RdsUser"); }
public long Count(object siteId, string view = null) { var ss = SiteSettingsUtilities.Get( context: Context, siteId: siteId.ToLong()); return(ServerScriptUtilities.Aggregate( context: Context, ss: ss, view: view)); }
private decimal CreateAggregate(object siteId, string columnName, string view, Sqls.Functions function) { var ss = SiteSettingsUtilities.Get( context: Context, siteId: siteId.ToLong()); return(ServerScriptUtilities.Aggregate( context: Context, ss: ss, view: view, columnName: columnName, function: function)); }
public static string LinkSourceResponse(long siteId, long id) { var siteModel = new SiteModel(siteId); var ss = SiteSettingsUtilities.Get(siteModel, id); switch (ss.ReferenceType) { case "Issues": return(IssueUtilities.EditorJson(ss, id)); case "Results": return(ResultUtilities.EditorJson(ss, id)); default: return(null); } }
/// <summary> /// Fixed: /// </summary> private static void Remind(Context context, DataRow dataRow) { context = context.CreateContext( tenantId: dataRow.Int("TenantId"), userId: dataRow.Int("Updator"), deptId: dataRow.Int("DeptId")); SiteSettingsUtilities.Get( context: context, siteId: dataRow.Long("SiteId"), setSiteIntegration: true)? .Remind( context: context, idList: dataRow.Int("Id").ToSingleList()); }
/// <summary> /// Fixed: /// </summary> private static void Remind(Context context, DataRow dataRow) { context.TenantId = dataRow.Int("TenantId"); context.UserId = dataRow.Int("Updator"); context.DeptId = dataRow.Int("DeptId"); SiteSettingsUtilities.Get( context: context, siteId: dataRow.Long("SiteId"), setSiteIntegration: true)? .Remind( context: context, idList: dataRow.Int("Id").ToSingleList()); Sessions.Clear("TenantId"); Sessions.Clear("RdsUser"); }
/// <summary> /// Fixed: /// </summary> public static byte[] SiteImageIcon(SiteModel siteModel) { siteModel.SiteSettings = SiteSettingsUtilities.Get(siteModel, siteModel.SiteId); var invalid = BinaryValidators.OnGetting(siteModel.SiteSettings); switch (invalid) { case Error.Types.None: break; default: return(null); } return(new BinaryModel(siteModel.SiteId).SiteImage( Libraries.Images.ImageData.SizeTypes.Icon, Rds.BinariesColumn().Icon())); }
public long SiteId(string title) { var siteId = GetSiteId(title); if (siteId == 0) { return(0); } var ss = SiteSettingsUtilities.Get( context: Context, siteId: siteId); siteId = Context.HasPermission(ss: ss) ? siteId : 0; return(siteId); }
/// <summary> /// Fixed: /// </summary> public static string UpdateSiteImage(Context context, SiteModel siteModel) { siteModel.SiteSettings = SiteSettingsUtilities.Get( context: context, siteModel: siteModel, referenceId: siteModel.SiteId); var bin = context.PostedFiles.FirstOrDefault()?.Byte(); var invalid = BinaryValidators.OnUploadingSiteImage( context: context, ss: siteModel.SiteSettings, bin: bin); switch (invalid) { case Error.Types.None: break; default: return(invalid.MessageJson(context: context)); } var error = new BinaryModel(siteModel.SiteId).UpdateSiteImage( context: context, ss: siteModel.SiteSettings, bin: bin); if (error.Has()) { return(error.MessageJson(context: context)); } else { return(new ResponseCollection() .Html( "#TenantImageLogoContainer", new HtmlBuilder().SiteImageIcon( context: context, ss: siteModel.SiteSettings, siteId: siteModel.TenantId)) .Html( "#TenantImageSettingsEditor", new HtmlBuilder().SiteImageSettingsEditor( context: context, ss: siteModel.SiteSettings)) .Message(Messages.FileUpdateCompleted(context: context)) .ToJson()); } }
private static long CanManageSiteId(ContextImplement context) { if (context.SiteId == 0) { return(0); } else { var ss = SiteSettingsUtilities.Get( context: context, siteId: context.SiteId); var siteId = context.CanManageSite( ss: ss, site: true) ? context.SiteId : 0; return(siteId); } }
/// <summary> /// Fixed: /// </summary> public static string UpdateSiteImage(Context context, SiteModel siteModel) { siteModel.SiteSettings = SiteSettingsUtilities.Get( context: context, siteModel: siteModel, referenceId: siteModel.SiteId); var file = Forms.File(Libraries.Images.ImageData.Types.SiteImage.ToString()); var invalid = BinaryValidators.OnUploadingSiteImage( context: context, ss: siteModel.SiteSettings, file: file); switch (invalid) { case Error.Types.None: break; default: return(invalid.MessageJson()); } var error = new BinaryModel(siteModel.SiteId).UpdateSiteImage( context: context, file: file); if (error.Has()) { return(error.MessageJson()); } else { return(new ResponseCollection() .Html( "#SiteImageIconContainer", new HtmlBuilder().SiteImageIcon( context: context, ss: siteModel.SiteSettings, siteId: siteModel.SiteId)) .Html( "#SiteImageSettingsEditor", new HtmlBuilder().SiteImageSettingsEditor( context: context, ss: siteModel.SiteSettings)) .Message(Messages.FileUpdateCompleted()) .ToJson()); } }
private static void Update( IContext context, SiteModel siteModel, long id, IEnumerable <int> selected = null) { var hasFormula = siteModel.SiteSettings.Formulas?.Any() ?? false; var ss = SiteSettingsUtilities.Get( context: context, siteModel: siteModel, referenceId: id); switch (siteModel.ReferenceType) { case "Issues": UpdateIssues( context: context, ss: ss, siteId: siteModel.SiteId, id: id, selected: selected, hasFormula: hasFormula); break; case "Results": UpdateResults( context: context, ss: ss, siteId: siteModel.SiteId, id: id, selected: selected, hasFormula: hasFormula); break; case "Wikis": UpdateWikis( context: context, ss: ss, siteId: siteModel.SiteId, id: id, selected: selected, hasFormula: hasFormula); break; default: break; } }
public string SearchDropDown() { SetSite(); var ss = SiteSettingsUtilities.Get(Site, ReferenceId); var controlId = Forms.Data("DropDownSearchTarget"); var column = ss.Columns.FirstOrDefault(o => controlId.EndsWith(ss.ReferenceType + "_" + o.ColumnName)); ss.SetChoiceHash( columnName: column?.ColumnName, searchIndexes: Forms.Data("DropDownSearchText").SearchIndexes()); return(new ResponseCollection() .ReplaceAll( "#DropDownSearchResults", new HtmlBuilder().Selectable( controlId: "DropDownSearchResults", listItemCollection: column?.EditChoices())) .ClearFormData("DropDownSearchResults") .ToJson()); }
/// <summary> /// Fixed: /// </summary> public static byte[] SiteImageIcon(Context context, SiteModel siteModel) { siteModel.SiteSettings = SiteSettingsUtilities.Get( context: context, siteModel: siteModel, referenceId: siteModel.SiteId); var invalid = BinaryValidators.OnGetting( context: context, ss: siteModel.SiteSettings); switch (invalid.Type) { case Error.Types.None: break; default: return(null); } return(new BinaryModel(siteModel.SiteId).SiteImage( context: context, sizeType: Libraries.Images.ImageData.SizeTypes.Icon, column: Rds.BinariesColumn().Icon())); }
private Column SearchDropDownColumn(string controlId, string searchText) { var ss = SiteSettingsUtilities.Get(Site, ReferenceId, setSiteIntegration: true); var column = ss.GetColumn(controlId.Substring( controlId.StartsWith("ViewFilters__") ? "ViewFilters__".Length : (ss.ReferenceType + "_").Length)); if (column?.Linked() == true) { column?.SetChoiceHash( siteId: column.SiteId, linkHash: column.SiteSettings.LinkHash(column.Name, searchText), searchIndexes: searchText.SearchIndexes()); } else { ss.SetChoiceHash( columnName: column?.ColumnName, searchText: Forms.Data("DropDownSearchText")); } return(column); }
public static void Synchronize(Context context, SiteSettings ss, Summary summary) { var destinationSs = SiteSettingsUtilities.Get( context: context, siteId: summary?.SiteId ?? 0); if (destinationSs != null && summary != null) { Synchronize( context: context, ss: ss, destinationSs: destinationSs, destinationSiteId: summary.SiteId, destinationColumn: summary.DestinationColumn, destinationCondition: destinationSs.Views?.Get(summary.DestinationCondition), setZeroWhenOutOfCondition: summary.SetZeroWhenOutOfCondition == true, sourceSiteId: ss.SiteId, sourceReferenceType: ss.ReferenceType, linkColumn: summary.LinkColumn, type: summary.Type, sourceColumn: summary.SourceColumn, sourceCondition: ss.Views?.Get(summary.SourceCondition)); } }
/// <summary> /// Fixed: /// </summary> public static string UpdateSiteImage(SiteModel siteModel) { siteModel.SiteSettings = SiteSettingsUtilities.Get(siteModel, siteModel.SiteId); var invalid = BinaryValidators.OnUpdating(siteModel.SiteSettings); switch (invalid) { case Error.Types.None: break; default: return(invalid.MessageJson()); } var error = new BinaryModel(siteModel.SiteId).UpdateSiteImage( Forms.File(Libraries.Images.ImageData.Types.SiteImage.ToString())); if (error.Has()) { return(error.MessageJson()); } else { return(Messages.ResponseFileUpdateCompleted().ToJson()); } }
public Error.Types Update( RdsUser rdsUser = null, SqlParamCollection param = null, bool paramAll = false) { SetBySession(); var statements = UpdateStatements(param, paramAll); var count = Rds.ExecuteScalar_int( rdsUser: rdsUser, transactional: true, statements: statements.ToArray()); if (count == 0) { return(Error.Types.UpdateConflicts); } Get(); var siteModel = new ItemModel(ReferenceId).GetSite(); var ss = SiteSettingsUtilities.Get(siteModel, siteModel.SiteId); Libraries.Search.Indexes.Create(ss, ReferenceId); return(Error.Types.None); }
public static ResponseFile ExportSitePackage(Context context, SiteSettings ss) { if (!Parameters.SitePackage.Export || !context.CanManageSite(ss: ss)) { return(null); } var useIndentOption = context.QueryStrings.Bool("UseIndentOption"); var includeSitePermission = context.QueryStrings.Bool("IncludeSitePermission"); var includeRecordPermission = context.QueryStrings.Bool("IncludeRecordPermission"); var includeColumnPermission = context.QueryStrings.Bool("IncludeColumnPermission"); string sitePackagesSelectableAll = Regex.Replace( context.QueryStrings.Data("SitePackagesSelectableAll"), @"[^0-9-,(true|false)]", ""); var sites = new List <SelectedSite>(); sitePackagesSelectableAll.Split(',') .ForEach(e => sites.Add(new SelectedSite() { SiteId = e.Split_1st('-').ToLong(), IncludeData = e.Split_2nd('-').ToBool() })); if (ExceededExportLimit( context: context, sites: sites)) { return(null); } foreach (var site in sites) { var currentSs = ss.SiteId == site.SiteId ? ss : SiteSettingsUtilities.Get( context: context, siteId: site.SiteId); if (site.IncludeData && (context.ContractSettings.Export == false || !context.CanExport(ss: currentSs))) { return(null); } } var sitePackage = new SitePackage( context: context, siteList: sites, includeSitePermission: includeSitePermission, includeRecordPermission: includeRecordPermission, includeColumnPermission: includeColumnPermission); var file = new ResponseFile( fileContent: sitePackage.RecordingJson( context: context, formatting: useIndentOption ? Formatting.Indented : Formatting.None), fileDownloadName: ExportUtilities.FileName( context: context, sitePackage.Sites.FirstOrDefault()?.Title, extension: "json")); return(file); }
/// <summary> /// Fixed: /// </summary> public static void RebuildSearchIndexes(Context context, long siteId = -1) { var hash = new Dictionary <long, SiteModel>(); Repository.ExecuteTable( context: context, statements: Rds.SelectItems( column: Rds.ItemsColumn() .ReferenceId() .SiteId() .UpdatedTime() .Users_TenantId() .Users_DeptId() .Users_UserId(), join: Rds.ItemsJoinDefault().Add(new SqlJoin( tableBracket: "\"Users\"", joinType: SqlJoin.JoinTypes.Inner, joinExpression: "\"Users\".\"UserId\"=\"Items\".\"Updator\"")), where : siteId > 0 ? Rds.ItemsWhere().SiteId(siteId) : Rds.ItemsWhere().Add(raw: new List <string>() { "\"Items\".\"SearchIndexCreatedTime\" is null", "\"Items\".\"SearchIndexCreatedTime\"<>\"Items\".\"UpdatedTime\"" }.Join(" or ")), top: siteId > 0 ? 0 : Parameters.BackgroundTask.CreateSearchIndexLot)) .AsEnumerable() .Select(o => new { ReferenceId = o["ReferenceId"].ToLong(), SiteId = o["SiteId"].ToLong(), UpdatedTime = o.Field <DateTime>("UpdatedTime") .ToString("yyyy/M/d H:m:s.fff"), TenantId = o.Int("TenantId"), DeptId = o.Int("DeptId"), UserId = o.Int("UserId") }) .ForEach(data => { var currentContext = context.CreateContext( tenantId: data.TenantId, deptId: data.DeptId, userId: data.UserId); var siteModel = hash.Get(data.SiteId) ?? new SiteModel().Get( context: currentContext, where : Rds.SitesWhere().SiteId(data.SiteId)); if (!hash.ContainsKey(data.SiteId)) { siteModel.SiteSettings = SiteSettingsUtilities.Get( context: currentContext, siteModel: siteModel, referenceId: siteModel.SiteId); hash.Add(data.SiteId, siteModel); } Create( context: currentContext, ss: siteModel.SiteSettings, id: data.ReferenceId, force: true); Repository.ExecuteNonQuery( context: currentContext, statements: Rds.UpdateItems( where : Rds.ItemsWhere() .ReferenceId(data.ReferenceId), param: Rds.ItemsParam() .SearchIndexCreatedTime(raw: "\"UpdatedTime\""), addUpdatorParam: false, addUpdatedTimeParam: false)); }); }