Update to latest packages and show examples
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
using GerstITS.Common;
|
||||
using GerstITS.Search;
|
||||
|
||||
namespace GerstITS.Examples.Logic.Customers.Search;
|
||||
|
||||
internal sealed class CustomerSearchFilterInitializationRule : InitializationRuleBase<CustomerSearchFilter>
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const int _defaultTake = 50;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
protected override CustomerSearchFilter InitializeInstance(CustomerSearchFilter instance)
|
||||
{
|
||||
instance.Skip ??= 0;
|
||||
instance.Take ??= _defaultTake;
|
||||
|
||||
if (instance.SortBy.IsNullOrWhiteSpace())
|
||||
instance.SortBy = nameof(Customer.LastName);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
using GerstITS.Common;
|
||||
using GerstITS.Data;
|
||||
using GerstITS.Examples.Data.Entities;
|
||||
using GerstITS.Search;
|
||||
|
||||
namespace GerstITS.Examples.Logic.Customers.Search;
|
||||
|
||||
internal sealed class CustomerSearchQueryBuilderRule : SearchQueryBuilderRuleBase<Customer, CustomerSearchFilter>
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private readonly IReadOnlyRepository _repository;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
public CustomerSearchQueryBuilderRule(IReadOnlyRepository repository)
|
||||
{
|
||||
_repository = repository;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
protected override IQueryable<Customer> CreateQuery(CustomerSearchFilter filter)
|
||||
{
|
||||
var query = _repository.Query<CustomerEntity>();
|
||||
|
||||
if (filter.Name.IsNotNullOrWhiteSpace())
|
||||
query = query.Where(i => i.FirstName.Contains(filter.Name)
|
||||
|| i.LastName.Contains(filter.Name));
|
||||
|
||||
if (filter.EMail.IsNotNullOrWhiteSpace())
|
||||
query = query.Where(i => i.EMail == filter.EMail);
|
||||
|
||||
return query.Project(x => new Customer
|
||||
{
|
||||
Id = x.Id,
|
||||
FirstName = x.FirstName,
|
||||
LastName = x.LastName,
|
||||
EMail = x.EMail,
|
||||
IsActive = x.IsActive
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
Reference in New Issue
Block a user