UserList improvements
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Security;
|
||||
using Hangfire;
|
||||
using JoinExtensions.Enumerable;
|
||||
using LeafWeb.WebCms.Models;
|
||||
using LeafWeb.WebCms.Services;
|
||||
using log4net;
|
||||
@@ -215,13 +215,49 @@ namespace LeafWeb.WebCms.Controllers
|
||||
[MemberAuthorize(AllowGroup = "Administrator")]
|
||||
public ActionResult UserList()
|
||||
{
|
||||
var emails
|
||||
= from li in DataService.GetLeafInputs()
|
||||
var leafInputUsers=
|
||||
from li in DataService.GetLeafInputs()
|
||||
group li by li.Email
|
||||
into emailGroup
|
||||
select new { emailGroup.Key, emailGroup.FirstOrDefault().Name };
|
||||
select new UserViewModel
|
||||
{
|
||||
Email = emailGroup.Key,
|
||||
Name = emailGroup.FirstOrDefault().Name,
|
||||
LeafInputCount = emailGroup.Count(),
|
||||
FirstSeen = emailGroup.OrderBy(e => e.Added).FirstOrDefault().Added
|
||||
};
|
||||
|
||||
return View(emails.ToList().Select(e => new Tuple<string, string>(e.Name, e.Key)));
|
||||
var memberService = ApplicationContext.Current.Services.MemberService;
|
||||
|
||||
// join leaf input users and memberships together on email address
|
||||
var users =
|
||||
memberService.GetAllMembers()
|
||||
.FullOuterJoinExtEnumerable(
|
||||
leafInputUsers,
|
||||
m => m.Email,
|
||||
uvm => uvm.Email,
|
||||
(member, leafInputUser) =>
|
||||
{
|
||||
if (member == null)
|
||||
return leafInputUser;
|
||||
var vm = new UserViewModel
|
||||
{
|
||||
Email = member.Email,
|
||||
Name = member.Name,
|
||||
Member = true,
|
||||
FirstSeen = member.CreateDate
|
||||
};
|
||||
if (leafInputUser == null)
|
||||
return vm;
|
||||
|
||||
vm.LeafInputCount = leafInputUser.LeafInputCount;
|
||||
if (leafInputUser.FirstSeen < vm.FirstSeen)
|
||||
vm.FirstSeen = leafInputUser.FirstSeen;
|
||||
|
||||
return vm;
|
||||
});
|
||||
|
||||
return View(users.DistinctBy(u => u.Email).OrderByDescending(u => u.FirstSeen));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user