public static AttendeeListViewModel Create(Seminar seminar, IPersonService personService, string siteId) { Check.Require(seminar != null, "seminar is required."); Check.Require(personService != null, "personService is required."); var viewModel = new AttendeeListViewModel() { Seminar = seminar, }; // pull the invitation list var invitations = viewModel.Seminar.Invitations.Where(a => a.Seminar.Site.Id == siteId).Select(a => a.Person).ToList(); // pull applications var applications = viewModel.Seminar.Applications.Where(a => a.Seminar.Site.Id == siteId).ToList(); // pull seminar people var seminarPeople = viewModel.Seminar.SeminarPeople; var people = new List <DisplayPerson>(); people.AddRange(DetermineParticipation(personService, seminarPeople.Where(a => a.Paid).Select(a => a.Person).ToList(), siteId, registered: true)); people.AddRange(DetermineParticipation(personService, seminarPeople.Where(a => !a.Paid).Select(a => a.Person).ToList(), siteId, accepted: true)); people.AddRange(DetermineParticipation(personService, applications.Where(a => !a.IsPending && !a.IsApproved).Select(a => a.User.Person).ToList(), siteId, denied: true)); people.AddRange(DetermineParticipation(personService, applications.Where(a => a.IsPending).Select(a => a.User.Person).ToList(), siteId, applied: true)); people.AddRange(DetermineParticipation(personService, invitations.Where(a => !people.Select(b => b.Person).Contains(a)).ToList(), siteId, invite: true)); viewModel.SeminarPeople = people; return(viewModel); }
public static AttendeeListViewModel Create(Seminar seminar, IPersonService personService, string siteId) { Check.Require(seminar != null, "seminar is required."); Check.Require(personService != null, "personService is required."); var viewModel = new AttendeeListViewModel() { Seminar = seminar, }; // pull the invitation list var invitations = viewModel.Seminar.Invitations.Where(a => a.Seminar.Site.Id == siteId).Select(a => a.Person).ToList(); // pull applications var applications = viewModel.Seminar.Applications.Where(a => a.Seminar.Site.Id == siteId).ToList(); // pull seminar people var seminarPeople = viewModel.Seminar.SeminarPeople; var people = new List<DisplayPerson>(); people.AddRange(DetermineParticipation(personService, seminarPeople.Where(a => a.Paid).Select(a => a.Person).ToList(), siteId, registered: true)); people.AddRange(DetermineParticipation(personService, seminarPeople.Where(a => !a.Paid).Select(a => a.Person).ToList(), siteId, accepted: true)); people.AddRange(DetermineParticipation(personService, applications.Where(a => !a.IsPending && !a.IsApproved).Select(a => a.User.Person).ToList(), siteId, denied: true)); people.AddRange(DetermineParticipation(personService, applications.Where(a => a.IsPending).Select(a => a.User.Person).ToList(), siteId, applied: true)); people.AddRange(DetermineParticipation(personService, invitations.Where(a => !people.Select(b => b.Person).Contains(a)).ToList(), siteId, invite: true)); viewModel.SeminarPeople = people; return viewModel; }