// Can search on oFirstName, oMiddleName,oLastName,dFirstName,dMiddleName,dLastName,mothraId,studentId,externalId,iamId,ppsId,bannerPIdM public async Task <PeopleResults> Search(PeopleSearchField field, string value) { this.Url = "iam/people/search"; this.QueryItems.Add(field.ToString(), value); return(await this.GetAsync <PeopleResults>()); }
public async Task <SearchResult> LookupId(PeopleSearchField searchField, string search) { var searchResult = new SearchResult(); searchResult.SearchValue = search; try { //var clientws = new IetClient(_authSettings.IamKey); var peopleResult = await _clientws.People.Search(searchField, search); var iamId = peopleResult.ResponseData.Results.Length > 0 ? peopleResult.ResponseData.Results[0].IamId : string.Empty; if (string.IsNullOrWhiteSpace(iamId)) { return(searchResult); } // find their email var ucdContactResult = await _clientws.Contacts.Get(iamId); if (ucdContactResult.ResponseData.Results.Length == 0) { // No contact details var kerbResult = await _clientws.Kerberos.Search(KerberosSearchField.iamId, iamId); if (kerbResult.ResponseData.Results.Length > 0) { var kerbPerson = kerbResult.ResponseData.Results.First(); kerbPerson.EmployeeId = peopleResult.ResponseData.Results.First().EmployeeId; PopulateSearchResult(searchResult, kerbPerson, ucdContactResult); } else { var person = peopleResult.ResponseData.Results.First(); PopulatePartialSearchResult(searchResult, person, ucdContactResult); } searchResult.ErrorMessage = "No Contact details"; return(searchResult); } // return info for the user identified by this IAM var result = await _clientws.Kerberos.Search(KerberosSearchField.iamId, iamId); if (result.ResponseData.Results.Length > 0) { var kerbPerson = result.ResponseData.Results.First(); kerbPerson.EmployeeId = peopleResult.ResponseData.Results.First().EmployeeId; PopulateSearchResult(searchResult, kerbPerson, ucdContactResult); } else { if (ucdContactResult.ResponseData.Results.Length > 0) { var person = peopleResult.ResponseData.Results.First(); PopulatePartialSearchResult(searchResult, person, ucdContactResult); searchResult.ErrorMessage = "Kerb Not Found"; } } if (searchResult.Found) { await LookupAssociations(searchResult.IamId, searchResult); await LookupEmployeeId(searchResult.IamId, searchResult); //Shouldn't need it as it should be in the if above } } catch (Exception e) { searchResult.ErrorMessage = "Error Occurred"; searchResult.ExceptionMessage = $"(LookupId) Error: {e.Message} Inner: {e.InnerException?.Message} {e}"; } return(searchResult); }