private async Task <GridOutcome> GetDataQueryAsync(string GridConfigId, GridDataRequest gridDataRequest) { StringBuilder queryBuilder = new StringBuilder(); Task <SqlSourceConfiguration> sourceConfigTask = GetSourceConfig(GridConfigId); Task <GridConfigurationEO> gridConfigurationTask = GetGridConfiguration(GridConfigId); await Task.WhenAll(sourceConfigTask, gridConfigurationTask); SqlSourceConfiguration sourceConfig = sourceConfigTask.Result; GridConfigurationEO gridConfiguration = gridConfigurationTask.Result; gridConfiguration.Controls = DynamicFormRepository.GetFormControls(gridConfiguration.SearchConfigId).AsList(); Query query = null; Query countQuery = null; if (sourceConfig == null) { query = db.Query(gridConfiguration.TableName); } else { query = db.Query().FromRaw(sourceConfig.SqlQuery); if (sourceConfig.Condition.IsNotNullOrEmpty()) { query = query.Where(sourceConfig.Condition); } } if (gridConfiguration.Controls.IsNotNullOrEmpty() && gridDataRequest.Parameters.IsNotNullOrEmpty()) { IEnumerable <FormFieldConfiguration> controls = gridConfiguration.Controls.Where(control => gridDataRequest.Parameters.ContainsKey(control.Name)); foreach (FormFieldConfiguration control in controls) { HandleSearchOperators(gridDataRequest, control, query); } } countQuery = db.FromQuery(query).AsCount(); if (gridDataRequest.OrderBy.IsNotNullOrEmpty()) { query = query.OrderBy(gridDataRequest.OrderBy); } if (gridDataRequest.PageNo > 0 && gridDataRequest.PageSize > 0) { query = query.Skip((gridDataRequest.PageNo - 1) * gridDataRequest.PageSize).Take(gridDataRequest.PageSize); } Task <IEnumerable <dynamic> > resultSet = query.GetAsync <dynamic>(); int cnt = db.ExecuteScalar <int>(countQuery); Task.WaitAll(resultSet); Task <GridOutcome> gridOutcome = new Task <GridOutcome>(() => { return(new GridOutcome { ResultSet = resultSet.Result.ToList(), PageNo = gridDataRequest.PageNo, TotalRecords = cnt }); }); gridOutcome.RunSynchronously(); return(await gridOutcome); }
public GridConfiguration GetGridConfig(string GridConfigId) { GridConfiguration gridConfiguration = null; using (Connection) { gridConfiguration = Connection.Query <GridConfiguration, SourceConfiguration, GridConfiguration>( DynamicGridQueryProvider.GridConfiguration, (gridConfig, sourceConfig) => { gridConfig.Source = sourceConfig; return(gridConfig); }, new { GridConfigId = GridConfigId } , splitOn: "Url").FirstOrDefault(); if (gridConfiguration != null) { if (gridConfiguration.SearchConfigId.IsNotNullOrEmpty()) { gridConfiguration.SearchConfig = DynamicFormRepository.GetFormConfig(gridConfiguration.SearchConfigId); gridConfiguration.SearchConfig.Controls = DynamicFormRepository.GetFormControls(gridConfiguration.SearchConfigId); } gridConfiguration.Columns = GetGridColumns(GridConfigId); } } return(gridConfiguration); }