protected static Queries.QueryMetadata Query(string serverId)
        {
            Queries.QueryMetadata           query      = new Queries.QueryMetadata();
            Queries.QueryDataSourceMetadata datasource = new Queries.QueryDataSourceMetadata();
            datasource.Table            = "BatchServerConfig";
            datasource.DynamicFieldList = true;
            datasource.Name             = "BatchServerConfig";
            datasource.Enabled          = true;
            datasource.OrderMode        = Queries.OrderMode.OrderBy;

            datasource.Ranges = new List <Queries.QueryRangeMetadata>();
            datasource.Ranges.Add(new Queries.QueryDataRangeMetadata()
            {
                Enabled = true, FieldName = "ServerId", Value = serverId
            });

            query.DataSources = new List <Queries.QueryDataSourceMetadata>();
            query.DataSources.Add(datasource);
            query.OrderByFields = new List <Queries.QueryOrderByMetadata>();
            query.OrderByFields.Add(new Queries.QueryDataOrderByMetadata()
            {
                DataSource = datasource.Name, SortOrder = Queries.SortOrder.Ascending, FieldName = "RecId"
            });

            return(query);
        }
        public static List <BatchConfiguration> Get(string serverId, string serverName, int wsdlPort)
        {
            Queries.QueryServiceClient queryClient = EndPoint.GetQueryClient(serverName, wsdlPort);

            Queries.QueryMetadata query = BatchConfiguration.Query(serverId);

            Queries.Paging paging = new Queries.PositionBasedPaging();
            (paging as Queries.PositionBasedPaging).StartingPosition       = 1;
            (paging as Queries.PositionBasedPaging).NumberOfRecordsToFetch = 100;

            Queries.ExecuteQueryRequest request = new Queries.ExecuteQueryRequest(query, paging);
            DataSet data = queryClient.ExecuteQuery(query, ref paging);

            List <BatchConfiguration> configs = null;

            configs = BatchConfiguration.RowsToConfigs(data);

            return(configs);
        }
        public static async Task <List <ServerConfiguration> > GetAsync(string serverName, int wsdlPort)
        {
            Queries.QueryServiceClient queryClient = EndPoint.GetQueryClient(serverName, wsdlPort);

            Queries.QueryMetadata query = ServerConfiguration.Query();

            Queries.PositionBasedPaging paging = new Queries.PositionBasedPaging();
            paging.StartingPosition       = 1;
            paging.NumberOfRecordsToFetch = 100;

            Queries.ExecuteQueryRequest         request   = new Queries.ExecuteQueryRequest(query, paging);
            Task <Queries.ExecuteQueryResponse> queryTask = queryClient.ExecuteQueryAsync(request);

            await queryTask;

            List <ServerConfiguration> configs = null;

            if (queryTask.Result != null)
            {
                configs = ServerConfiguration.RowsToConfigs(queryTask.Result.ExecuteQueryResult);

                // Get tasks for fetching batch configuration for each server
                var tasks = from server in configs select BatchConfiguration.GetAsync(server.ServerId, serverName, wsdlPort);

                // Await all batch configuration calls to return
                List <BatchConfiguration>[] batches = await Task.WhenAll(tasks);

                // Assign each batch configuration to its respective server
                foreach (var server in configs)
                {
                    var batchConfig = from b in batches where b[0].ServerId == server.ServerId select b;

                    if (batchConfig != null && batchConfig.Count() > 0)
                    {
                        server.BatchConfigurations = batchConfig.First().ToList();
                    }
                }
            }

            return(configs);
        }
        public static async Task <List <BatchConfiguration> > GetAsync(string serverId, string serverName, int wsdlPort)
        {
            Queries.QueryServiceClient queryClient = EndPoint.GetQueryClient(serverName, wsdlPort);

            Queries.QueryMetadata query = BatchConfiguration.Query(serverId);

            Queries.Paging paging = new Queries.PositionBasedPaging();
            (paging as Queries.PositionBasedPaging).StartingPosition       = 1;
            (paging as Queries.PositionBasedPaging).NumberOfRecordsToFetch = 100;

            Queries.ExecuteQueryRequest         request   = new Queries.ExecuteQueryRequest(query, paging);
            Task <Queries.ExecuteQueryResponse> queryTask = queryClient.ExecuteQueryAsync(request);

            await queryTask;

            List <BatchConfiguration> configs = null;

            if (queryTask.Result != null)
            {
                configs = BatchConfiguration.RowsToConfigs(queryTask.Result.ExecuteQueryResult);
            }

            return(configs);
        }