Ejemplo n.º 1
0
        // 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>());
        }
Ejemplo n.º 2
0
        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);
        }