Skip to content

Commit

Permalink
Add availability to search modified user since specified date
Browse files Browse the repository at this point in the history
  • Loading branch information
tatarincev committed Feb 7, 2019
1 parent 853d66a commit df02b02
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace VirtoCommerce.Platform.Core.Security
{
public class ApplicationUserExtended : Entity, IHasChangesHistory
public class ApplicationUserExtended : AuditableEntity, IHasChangesHistory
{
public string UserName { get; set; }
public string Email { get; set; }
Expand Down
3 changes: 2 additions & 1 deletion VirtoCommerce.Platform.Core/Security/UserDetails.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
namespace VirtoCommerce.Platform.Core.Security
namespace VirtoCommerce.Platform.Core.Security
{
public enum UserDetails
{
Undefined,
Full,
Reduced,
Export,
Info
}
}
13 changes: 12 additions & 1 deletion VirtoCommerce.Platform.Core/Security/UserSearchRequest.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
namespace VirtoCommerce.Platform.Core.Security
using System;
using System.Linq;
using VirtoCommerce.Platform.Core.Common;

namespace VirtoCommerce.Platform.Core.Security
{
public class UserSearchRequest
{
public UserSearchRequest()
{
TakeCount = 20;
}
public string ResponseGroup { get; set; }
/// <summary>
/// Sorting expression property1:asc;property2:desc
/// </summary>
public string Sort { get; set; }
public virtual SortInfo[] SortInfos => SortInfo.Parse(Sort).ToArray();

public DateTime? ModifiedSinceDate { get; set; }
public string[] AccountTypes { get; set; }
public string Keyword { get; set; }
public string MemberId { get; set; }
Expand Down
33 changes: 27 additions & 6 deletions VirtoCommerce.Platform.Data.Security/SecurityService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -366,21 +366,42 @@ public virtual async Task<UserSearchResponse> SearchUsersAsync(UserSearchRequest
{
query = query.Where(x => request.AccountTypes.Contains(x.UserType));
}

if (request.ModifiedSinceDate != null && request.ModifiedSinceDate != default(DateTime))
{
query = query.Where(x => x.ModifiedDate > request.ModifiedSinceDate);
}

result.TotalCount = await query.CountAsync();

users = await query.OrderBy(x => x.UserName)
.Skip(request.SkipCount)
var sortInfos = request.SortInfos;
if (sortInfos.IsNullOrEmpty())
{
sortInfos = new[] { new SortInfo { SortColumn = "UserName", SortDirection = SortDirection.Descending } };
}
query = query.OrderBySortInfos(sortInfos);


users = await query.Skip(request.SkipCount)
.Take(request.TakeCount)
.ToArrayAsync();
}
var extendedUsers = new List<ApplicationUserExtended>();

foreach (var user in users)
var userDetail = EnumUtility.SafeParse(request.ResponseGroup, UserDetails.Full);
if (userDetail == UserDetails.Info)
{
extendedUsers = users.Select(x => new ApplicationUser().ToCoreModel(x, _permissionScopeService)).ToList();
}
else
{
var extendedUser = await FindByNameAsync(user.UserName, UserDetails.Reduced);
if (extendedUser != null)
foreach (var user in users)
{
extendedUsers.Add(extendedUser);
var extendedUser = await FindByNameAsync(user.UserName, UserDetails.Reduced);
if (extendedUser != null)
{
extendedUsers.Add(extendedUser);
}
}
}
result.Users = extendedUsers.ToArray();
Expand Down

0 comments on commit df02b02

Please sign in to comment.