using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using xCommons.Extensions;
using xDataService.Configuration;
using xIdentityModels.Models;
namespace xIds.Extensions
{
public static class XModelExtensions
{
///
/// Determine a banned time is passed or not
///
///
///
///
public static bool IsDelayTimePassed(
this XBannedDevice source,
int delaySeconds
)
{
//
var passedTime = source.BannedOn.AddSeconds(delaySeconds);
//
var result = DateTime.UtcNow >= passedTime;
//
return result;
}
///
/// Applying Filter to IQueryable
/// ///
///
public static async Task> ApplyFilterAsync(
this IQueryable source,
string filter
) where T : class
{
//
// Apply Filter ...
if (!filter.IsNullOrEmpty())
{
//
var items = source.AsAsyncEnumerable();
var filteredItems = new List();
await
foreach (var item in items)
{
//
if (item.GetPropValues()
.ToNormalString()
.Contains(filter
.ToNormalString()))
{
//
filteredItems.Add(item);
}
}
//
return filteredItems.AsQueryable();
}
//
return source;
}
public static XDataServiceConfiguration ToXDataServiceConfig(this Configurations.XDataServiceConfiguration config)
{
//
var result = new XDataServiceConfiguration();
//
if (!config.IsNullOrDefault())
{
//
result.PagingConfiguration.DefaultPageSize = config.PagingConfiguration.DefaultPageSize;
result.PagingConfiguration.MaxAvailablePageSize = config.PagingConfiguration.MaxAvailablePageSize;
result.PagingConfiguration.MinAvailablePageSize = config.PagingConfiguration.MinAvailablePageSize;
}
//
return result;
}
}
}