in src/Modules/SimplCommerce.Module.Core/Areas/Core/Controllers/UserApiController.cs [55:121]
public IActionResult List([FromBody] SmartTableParam param)
{
var query = _userRepository.Query()
.Include(x => x.Roles)
.ThenInclude(x => x.Role)
.Include(x => x.CustomerGroups)
.ThenInclude(x => x.CustomerGroup)
.Where(x => !x.IsDeleted);
if (param.Search.PredicateObject != null)
{
dynamic search = param.Search.PredicateObject;
if (search.Email != null)
{
string email = search.Email;
query = query.Where(x => x.Email.Contains(email));
}
if (search.FullName != null)
{
string fullName = search.FullName;
query = query.Where(x => x.FullName.Contains(fullName));
}
if (search.RoleId != null)
{
long roleId = search.RoleId;
query = query.Where(x => x.Roles.Any(r => r.RoleId == roleId));
}
if (search.CustomerGroupId != null)
{
long customerGroupId = search.CustomerGroupId;
query = query.Where(x => x.CustomerGroups.Any(g => g.CustomerGroupId == customerGroupId));
}
if (search.CreatedOn != null)
{
if (search.CreatedOn.before != null)
{
DateTimeOffset before = search.CreatedOn.before;
query = query.Where(x => x.CreatedOn <= before);
}
if (search.CreatedOn.after != null)
{
DateTimeOffset after = search.CreatedOn.after;
query = query.Where(x => x.CreatedOn >= after);
}
}
}
var users = query.ToSmartTableResultNoProjection(
param,
user => new
{
user.Id,
user.Email,
user.FullName,
user.CreatedOn,
Roles = user.Roles.Select(x => x.Role.Name),
CustomerGroups = user.CustomerGroups.Select(x => x.CustomerGroup.Name)
});
return Json(users);
}