DocSpace-buildtools/web/ASC.Web.Core/Users/UserInfoComparer.cs

46 lines
1.5 KiB
C#
Raw Normal View History

2019-06-07 08:59:07 +00:00
namespace ASC.Web.Core.Users
{
public class UserInfoComparer : IComparer<UserInfo>
{
public static readonly IComparer<UserInfo> Default = new UserInfoComparer(UserSortOrder.DisplayName, false);
public static readonly IComparer<UserInfo> FirstName = new UserInfoComparer(UserSortOrder.FirstName, false);
public static readonly IComparer<UserInfo> LastName = new UserInfoComparer(UserSortOrder.LastName, false);
public UserSortOrder SortOrder { get; set; }
public bool Descending { get; set; }
public UserInfoComparer(UserSortOrder sortOrder)
: this(sortOrder, false)
{
}
public UserInfoComparer(UserSortOrder sortOrder, bool descending)
{
SortOrder = sortOrder;
Descending = descending;
}
public int Compare(UserInfo x, UserInfo y)
{
2019-08-15 13:03:57 +00:00
var result = 0;
2019-06-07 08:59:07 +00:00
switch (SortOrder)
{
case UserSortOrder.DisplayName:
result = UserFormatter.Compare(x, y, DisplayUserNameFormat.Default);
break;
case UserSortOrder.FirstName:
result = UserFormatter.Compare(x, y, DisplayUserNameFormat.FirstLast);
break;
case UserSortOrder.LastName:
result = UserFormatter.Compare(x, y, DisplayUserNameFormat.LastFirst);
break;
}
return !Descending ? result : -result;
}
}
}