using DevExpress.Blazor; using DevExpress.Data.Filtering; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AyCode.Core.Interfaces; using DevExpress.Data.Filtering.Helpers; using DevExpress.Data.Linq; using DevExpress.Data.Linq.Helpers; namespace AyCode.Blazor.Components.Services { //public class AcGridDataSource : GridCustomDataSource where T : class, IId //{ // private static readonly AcSignalRDataSource _signalRDataSource; // public AcGridDataSource(AcSignalRDataSource signalRDataSource) // { // _signalRDataSource = signalRDataSource; // } // public override Task> GetGroupInfoAsync(GridCustomDataSourceGroupingOptions options, CancellationToken cancellationToken) // { // return base.GetGroupInfoAsync(options, cancellationToken); // } // public override Task GetTotalSummaryAsync(GridCustomDataSourceTotalSummaryOptions options, CancellationToken cancellationToken) // { // return base.GetTotalSummaryAsync(options, cancellationToken); // } // public override Task GetUniqueValuesAsync(GridCustomDataSourceUniqueValuesOptions options, CancellationToken cancellationToken) // { // return base.GetUniqueValuesAsync(options, cancellationToken); // } // public override async Task GetItemCountAsync(GridCustomDataSourceCountOptions options, CancellationToken cancellationToken) // { // return await ApplyFiltering(options.FilterCriteria, _signalRDataSource.For()).Count().FindScalarAsync(cancellationToken); // } // public override async Task GetItemsAsync(GridCustomDataSourceItemsOptions options, CancellationToken cancellationToken) // { // var filteredClient = ApplyFiltering(options.FilterCriteria, _signalRDataSource.For().Top(options.Count).Skip(options.StartIndex)); // return (await ApplySorting(options, filteredClient).FindEntriesAsync(cancellationToken)).ToList(); // } // private static IBoundClient ApplyFiltering(CriteriaOperator criteria, IBoundClient boundClient) // { // //return !criteria.ReferenceEqualsNull() ? boundClient.Filter(ToSimpleClientCriteria(criteria)) : boundClient; // CriteriaToExpressionConverter converter = new CriteriaToExpressionConverter(); // //IQueryable source = null!; // IQueryable? filteredData = _signalRDataSource.AsQueryable().AppendWhere(converter, criteria) as IQueryable; // gridControl1.DataSource = null; // gridControl1.DataSource = filteredData.ToList(); // } // private static string ToSimpleClientCriteria(CriteriaOperator criteria) // => $"{criteria}".Replace("[", "").Replace("]", ""); // private static IBoundClient ApplySorting(GridCustomDataSourceItemsOptions options, IBoundClient boundClient) // { // return options.SortInfo.Any() // ? boundClient.OrderBy(options.SortInfo // .Where(info => !info.DescendingSortOrder).Select(info => info.FieldName).ToArray()) // .OrderByDescending(options.SortInfo // .Where(info => info.DescendingSortOrder).Select(info => info.FieldName).ToArray()) // : boundClient; // } // public async Task DeleteAsync(T instance) // => await _signalRDataSource.For().Key(instance.Id).DeleteEntryAsync(); // public async Task AddOrUpdateAsync(T instance, bool update = false) // { // if (!update) // { // await _signalRDataSource.For().Set(new { instance.Title, instance.Content }).InsertEntryAsync(); // } // else // { // await _signalRDataSource.For().Key(instance.Id).Set(instance).UpdateEntryAsync(); // } // } //} }