private void Dashboard_ConfigureDataConnection(object sender, ConfigureDataConnectionWebEventArgs e) { if (e.ConnectionParameters is ExtractDataSourceConnectionParameters extractParameters) { if (Guid.TryParse(extractParameters.FileName, out var id)) { IDashboardDataExtract extract = GetDataExtract(id); if (extract != null) { extract.ConfigureConnectionParameters(Application, extractParameters); } } } }
public IDashboardDataExtract ConfigureDataConnection(DataConnectionParametersBase dataConnectionParameters) { if (dataConnectionParameters is ExtractDataSourceConnectionParameters extractParameters && Guid.TryParse(extractParameters.FileName, out var id)) { IDashboardDataExtract extract = GetDataExtract(id); if (extract != null) { extract.ConfigureConnectionParameters(Application, extractParameters); } return(extract); } return(null); }
private void UpdateDataExtract(IDashboardDataExtract extract) { if (extract == null) { throw new ArgumentNullException(nameof(extract)); } if (string.IsNullOrWhiteSpace(extract.Script)) { return; } using (DashboardObjectDataSource ods = new DashboardObjectDataSource()) { ScriptDataSource dataSource = CreateScriptDataSource(extract, Application); object data = dataSource.GetDataForDataExtract(); if (data is byte[] buffer) { SetDataExtractContent(extract, buffer); return; } ods.DataSource = data; string fileName = Path.GetTempFileName(); try { using (DashboardExtractDataSource extractDataSource = new DashboardExtractDataSource()) { extractDataSource.ExtractSourceOptions.DataSource = ods; extractDataSource.FileName = fileName; extractDataSource.UpdateExtractFile(); SetDataExtractContent(extract, File.ReadAllBytes(fileName)); if (data is ICollection collection) { extract.RowCount = collection.Count; } } } finally { if (File.Exists(fileName)) { File.Delete(fileName); } } } }
public void StartDataExtractUpdate(IDashboardDataExtract dataExtract) { var channel = CreateChannel(); channel.StartDataExtractUpdate(dataExtract.GetKeyAsString()); }
public void ScheduleDataExtractCreationJob(IDashboardDataExtract dataExtract) { var channel = CreateChannel(); channel.ScheduleUpdateDataExtractJob(dataExtract.GetKeyAsString()); }
private static void SetDataExtractContent(IDashboardDataExtract extract, byte[] fileData) { extract.ExtractData = fileData; extract.ExtractDataSize = extract.ExtractData.LongLength; }
protected virtual ScriptDataSource CreateScriptDataSource(IDashboardDataExtract extract, XafApplication application) => new ScriptDataSource(extract.Script) { Application = application };