private void btnSubmit_Click(object sender, EventArgs e) { const string UltiProTokenNamespace = "http://www.ultimatesoftware.com/foundation/authentication/ultiprotoken"; const string ClientAccessKeyNamespace = "http://www.ultimatesoftware.com/foundation/authentication/clientaccesskey"; string customerApi = Configuration.Default.API_CustomerKey; // Create a proxy to the address service: var employeeAddressClient = new EmployeeAddressClient("WSHttpBinding_IEmployeeAddress"); try { string query = inputQuery.Text; // Add the headers for the Customer API key and authentication token: using (new OperationContextScope(employeeAddressClient.InnerChannel)) { OperationContext.Current.OutgoingMessageHeaders.Add( MessageHeader.CreateHeader( "UltiProToken", UltiProTokenNamespace, sessionToken.Text)); OperationContext.Current.OutgoingMessageHeaders.Add( MessageHeader.CreateHeader( "ClientAccessKey", ClientAccessKeyNamespace, customerApi)); // Create a query object to find the employees: var employeeQuery = new EmployeeQuery(); // Set one or more properties to search: int employeeNumber; if (int.TryParse(query, out employeeNumber)) { employeeQuery.EmployeeNumber = "=" + employeeNumber.ToString(); } else { employeeQuery.LastName = "LIKE (" + query + "%)"; try { if (cboFTPT.SelectedItem.ToString() == "Full Time Employees") { employeeQuery.FullOrPartTime = "=F"; } if (cboFTPT.SelectedItem.ToString() == "Part Time Employees") { employeeQuery.FullOrPartTime = "=P"; } } catch (Exception) { } // empty value is ok here... if (chkTerminated.Checked) { employeeQuery.Status = "=T"; } else { employeeQuery.Status = "=A"; } } // Find addresses for employees matching the query criteria: AddressFindResponse addressFindResponse = employeeAddressClient.FindAddresses(employeeQuery); // Check the results of the find to see if there are any errors: if (addressFindResponse.OperationResult.HasErrors) { // Review each error: foreach (OperationMessage message in addressFindResponse.OperationResult.Messages) { results.Text = "Error: " + message.Message; } } else { // var pagingInfo = addressFindResponse.OperationResult.PagingInfo; status.Text = "The employee query returned a total of " + addressFindResponse.Results.Count() + " records."; status.BackColor = Color.Yellow; status.ForeColor = Color.Red; // If employee records are returned, loop through the // results and output example data: StringBuilder sb = new StringBuilder(); foreach (EmployeeAddress employeeAddress in addressFindResponse.Results) { foreach (Address address in employeeAddress.Addresses) { sb.AppendLine(employeeAddress.FirstName + " " + employeeAddress.LastName + " (" + employeeAddress.EmployeeNumber + ")"); sb.AppendLine("Address: " + address.AddressLine1 + ", " + address.City + ", " + address.StateOrProvince + ", " + address.ZipOrPostalCode.Substring(0, 5)); sb.AppendLine(); } } results.Text = sb.ToString(); } } employeeAddressClient.Close(); } catch (Exception ex) { results.Text = "Exception: " + ex; employeeAddressClient.Abort(); } }
private static void FindAddresses(string token) { const string UltiProTokenNamespace = "http://www.ultimatesoftware.com/foundation/authentication/ultiprotoken"; const string ClientAccessKeyNamespace = "http://www.ultimatesoftware.com/foundation/authentication/clientaccesskey"; string customerApi = Configuration.Default.API_CustomerKey; // Create a proxy to the address service: var employeeAddressClient = new EmployeeAddressClient("WSHttpBinding_IEmployeeAddress"); try { Console.WriteLine("Type ONE of the following, then press <Enter>:"); Console.WriteLine(" - an Employee ID number"); Console.WriteLine(" - a partial last name"); Console.WriteLine(" - an entire last name"); Console.WriteLine(); Console.Write("> "); string query = Console.ReadLine(); // Add the headers for the Customer API key and authentication token: using (new OperationContextScope(employeeAddressClient.InnerChannel)) { OperationContext.Current.OutgoingMessageHeaders.Add( MessageHeader.CreateHeader( "UltiProToken", UltiProTokenNamespace, token)); OperationContext.Current.OutgoingMessageHeaders.Add( MessageHeader.CreateHeader( "ClientAccessKey", ClientAccessKeyNamespace, customerApi)); // Create a query object to find the employees: var employeeQuery = new EmployeeQuery(); // Set one or more properties to search: int employeeNumber; if (int.TryParse(query, out employeeNumber)) { employeeQuery.EmployeeNumber = "=" + employeeNumber.ToString(); } else { employeeQuery.LastName = "LIKE (" + query + "%)"; //employeeQuery.FullOrPartTime = "=F"; employeeQuery.Status = "=A"; //Active Employees Only } // Set paging properties: employeeQuery.PageSize = "10"; employeeQuery.PageNumber = "1"; // Find addresses for employees matching the query criteria: AddressFindResponse addressFindResponse = employeeAddressClient.FindAddresses(employeeQuery); // Check the results of the find to see if there are any errors: if (addressFindResponse.OperationResult.HasErrors) { // Review each error: foreach (OperationMessage message in addressFindResponse.OperationResult.Messages) { Console.WriteLine("Error message: " + message.Message); } } else { var pagingInfo = addressFindResponse.OperationResult.PagingInfo; Console.WriteLine( "The employee query returned a total of {0} records.", pagingInfo.TotalItems); // If employee records are returned, loop through the // results and output example data: foreach (EmployeeAddress employeeAddress in addressFindResponse.Results) { foreach (Address address in employeeAddress.Addresses) { Console.WriteLine(); Console.WriteLine("Employee Number: " + employeeAddress.EmployeeNumber); Console.WriteLine("Name: {0} {1} Address: {2}, {3}, {4} {5}", employeeAddress.FirstName, employeeAddress.LastName, address.AddressLine1, address.City, address.StateOrProvince, address.ZipOrPostalCode); } } } } var endInput = Console.ReadKey(); if (endInput.Key.ToString().ToLower() == "a") { Console.Clear(); } FindAddresses(token); employeeAddressClient.Close(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex); employeeAddressClient.Abort(); } }