public UnitApplicant[] GetApplicants(Guid id) { if (!Permissions.IsUser) { ThrowAuthError(); } Guid rootOrgId = Guid.Empty; Guid.TryParse(ConfigurationManager.AppSettings["rootOrgId"], out rootOrgId); var query = db.UnitApplicants.Include("Applicant.ContactNumbers", "Applicant.EmergencyContacts"); if (id != rootOrgId) { query = query.Where(f => f.Unit.Id == id); } MembersController members = new MembersController(this.db, this.log); var notDoneDocs = new[] { Model.DocumentStatus.NotApplicable.ToString(), Model.DocumentStatus.NotStarted.ToString() }; return(query.OrderBy(f => f.Applicant.LastName).ThenBy(f => f.Applicant.FirstName).AsEnumerable().Select(f => { var docs = members.GetUnitDocuments(f.Applicant.Id); return new UnitApplicant { Id = f.Id, MemberId = f.Applicant.Id, NameReverse = f.Applicant.ReverseName, Email = f.Applicant.ContactNumbers.Where(g => g.Type == "email").OrderBy(g => g.Priority).Select(g => g.Value).FirstOrDefault(), EmergencyContactCount = f.Applicant.EmergencyContacts.Count, Background = f.Applicant.BackgroundText, Username = f.Applicant.Username, Started = f.Started, Active = f.IsActive, RemainingDocCount = docs.Count() - docs.Count(g => !notDoneDocs.Contains(g.Status)) }; }).ToArray()); }
public UnitApplicant[] GetApplicants(Guid id) { if (!Permissions.IsUser) ThrowAuthError(); Guid rootOrgId = Guid.Empty; Guid.TryParse(ConfigurationManager.AppSettings["rootOrgId"], out rootOrgId); var query = db.UnitApplicants.Include("Applicant.ContactNumbers", "Applicant.EmergencyContacts"); if (id != rootOrgId) { query = query.Where(f => f.Unit.Id == id); } MembersController members = new MembersController(this.db, this.log); var notDoneDocs = new[] { Model.DocumentStatus.NotApplicable.ToString(), Model.DocumentStatus.NotStarted.ToString() }; return query.OrderBy(f => f.Applicant.LastName).ThenBy(f => f.Applicant.FirstName).AsEnumerable().Select(f => { var docs = members.GetUnitDocuments(f.Applicant.Id); return new UnitApplicant { Id = f.Id, MemberId = f.Applicant.Id, NameReverse = f.Applicant.ReverseName, Email = f.Applicant.ContactNumbers.Where(g => g.Type == "email").OrderBy(g => g.Priority).Select(g => g.Value).FirstOrDefault(), EmergencyContactCount = f.Applicant.EmergencyContacts.Count, Background = f.Applicant.BackgroundText, Username = f.Applicant.Username, Started = f.Started, Active = f.IsActive, RemainingDocCount = docs.Count() - docs.Count(g => !notDoneDocs.Contains(g.Status)) }; }).ToArray(); }