private IQueryable <TPerson> PeopleGeneric <TPerson>() where TPerson : PersonWithStaff, new() => from person in _dbConnection.PeopleExtended from staff in StaffWithOrgNames.LeftJoin(staff => person.StaffId.HasValue && staff.Id == person.StaffId) .DefaultIfEmpty() where !person.Deleted select new TPerson { Id = person.Id, Email = person.Email, FirstName = person.FirstName, IsThai = person.IsThai, IsSchoolAid = person.IsSchoolAid, IsAlumni = person.IsAlumni, IsParent = person.IsParent, LastName = person.LastName, ThaiFirstName = person.ThaiFirstName, ThaiLastName = person.ThaiLastName, PreferredName = person.PreferredName, SpeaksEnglish = person.SpeaksEnglish, Staff = staff, StaffId = person.StaffId, DonorId = person.DonorId, PhoneNumber = person.PhoneNumber, SpouseId = person.SpouseId, Birthdate = person.Birthdate, Gender = person.Gender, PassportAddress = person.PassportAddress, PassportCity = person.PassportCity, PassportCountry = person.PassportCountry, PassportState = person.PassportState, PassportZip = person.PassportZip, ThaiAddress = person.ThaiAddress, ThaiAmphur = person.ThaiAmphur, ThaiMubaan = person.ThaiMubaan, ThaiProvince = person.ThaiProvince, ThaiSoi = person.ThaiSoi, ThaiTambon = person.ThaiTambon, ThaiZip = person.ThaiZip, ProfilePicDriveId = person.ProfilePicDriveId, Deleted = person.Deleted, };
private IQueryable <TPerson> PeopleGeneric <TPerson>() where TPerson : PersonWithStaff, new() => (from person in _dbConnection.PeopleExtended from spouse in _dbConnection.People.LeftJoin(person1 => person1.Id == person.SpouseId).DefaultIfEmpty() from staff in StaffWithOrgNames.LeftJoin(staff => staff.Id == person.StaffId).DefaultIfEmpty() where !person.Deleted select new TPerson { Id = person.Id, Email = person.Email, FirstName = person.FirstName, IsThai = person.IsThai, IsSchoolAid = person.IsSchoolAid, LastName = person.LastName, ThaiFirstName = person.ThaiFirstName, ThaiLastName = person.ThaiLastName, PreferredName = person.PreferredName, SpeaksEnglish = person.SpeaksEnglish, Staff = staff, StaffId = person.StaffId, PhoneNumber = person.PhoneNumber, SpouseId = person.SpouseId, SpousePreferedName = spouse.PreferredName, Birthdate = person.Birthdate, Gender = person.Gender, Nationality = person.Nationality, PassportAddress = person.PassportAddress, PassportCity = person.PassportCity, PassportCountry = person.PassportCountry, PassportState = person.PassportState, PassportZip = person.PassportZip, ThaiAddress = person.ThaiAddress, ThaiAmphur = person.ThaiAmphur, ThaiMubaan = person.ThaiMubaan, ThaiProvince = person.ThaiProvince, ThaiSoi = person.ThaiSoi, ThaiTambon = person.ThaiTambon, ThaiZip = person.ThaiZip }).OrderBy(_ => _.PreferredName ?? _.FirstName).ThenBy(_ => _.LastName);