public ClearanceTypeSearchReturnValue ClearanceTypes(Guid logonId, CollectionRequest collectionRequest, ClearanceTypeSearchCriteria criteria) { ClearanceTypeSearchReturnValue returnValue = new ClearanceTypeSearchReturnValue(); try { // Get the logged on user from the current logons and add their // ApplicationSettings the list of concurrent sessions. Host.LoadLoggedOnUser(logonId); try { Functions.RestrictRekoopIntegrationUser(UserInformation.Instance.DbUid); switch (UserInformation.Instance.UserType) { case DataConstants.UserType.Staff: // Can do everything break; case DataConstants.UserType.Client: case DataConstants.UserType.ThirdParty: throw new Exception("Access denied"); default: throw new Exception("Access denied"); } // Create a data list creator for a list of clearance types DataListCreator<ClearanceTypeSearchItem> dataListCreator = new DataListCreator<ClearanceTypeSearchItem>(); // Declare an inline event (annonymous delegate) to read the // dataset if it is required dataListCreator.ReadDataSet += delegate(object Sender, ReadDataSetEventArgs e) { e.DataSet = SrvClientChequeRequestLookup.GetClearanceTypes(criteria.IncludeArchived, criteria.IsCredit); }; // Create the data list returnValue.ClearanceTypes = dataListCreator.Create(logonId, // Give the query a name so it can be cached "GetClearanceTypes", // Tell it the query criteria used so if the cache is accessed // again it knows if it is the same query criteria.ToString(), collectionRequest, // Import mappings to map the dataset row fields to the data // list entity properties new ImportMapping[] { new ImportMapping("ClearanceTypeId", "ClearanceTypeId"), new ImportMapping("ClearanceTypeDesc", "ClearanceTypeDesc"), new ImportMapping("ClearanceTypeChqDays", "ClearanceTypeChqDays"), new ImportMapping("ClearanceTypeElecDays", "ClearanceTypeElecDays"), new ImportMapping("ClearanceTypeIsCredit", "ClearanceTypeIsCredit"), new ImportMapping("ClearanceTypeArchived", "ClearanceTypeArchived"), } ); } finally { // Remove the logged on user's ApplicationSettings from the // list of concurrent sessions Host.UnloadLoggedOnUser(); } } catch (System.Data.SqlClient.SqlException) { returnValue.Success = false; returnValue.Message = Functions.SQLErrorMessage; } catch (Exception Ex) { returnValue.Success = false; returnValue.Message = Ex.Message; } return returnValue; }