UserList improvements

This commit is contained in:
2023-02-24 10:52:33 -05:00
parent 4341d5ce92
commit 48ab9a19e8
5 changed files with 82 additions and 14 deletions
+42 -6
View File
@@ -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));
}
}
}