public static DataSet GetPresets(SearchParameter[] args, int? MaxRecords = null, int? MaxPerProduct = null, int? MaxPerProductFile = null) { var p = SqlHelper.ConvertToTable(args); var cmd = new SqlCommand("x360ce_GetPresets"); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@args", p); if (MaxRecords.HasValue) cmd.Parameters.AddWithValue("@MaxRecords", MaxRecords); if (MaxPerProduct.HasValue) cmd.Parameters.AddWithValue("@MaxPerProduct", MaxPerProduct); if (MaxPerProductFile.HasValue) cmd.Parameters.AddWithValue("@MaxPerProductFile", MaxPerProductFile); var cn = SqlHelper.Current.GetConnectionString("x360ceModelContainer"); var ds = SqlHelper.Current.ExecuteDataSet(cn, cmd); return ds; }
public SearchResult SearchSettings(SearchParameter[] args) { var sr = new SearchResult(); var db = new x360ceModelContainer(); // Get all device instances of the user. var instances = args.Where(x => x.InstanceGuid != Guid.Empty).Select(x => x.InstanceGuid).Distinct().ToArray(); if (instances.Length == 0) { sr.Settings = new Setting[0]; } else { // Get all settings attached to user's device instances. sr.Settings = db.Settings.Where(x => instances.Contains(x.InstanceGuid)) .OrderBy(x => x.ProductName).ThenBy(x => x.FileName).ThenBy(x => x.FileProductName).ToArray(); } // Get list of products (unique identifiers). var products = args.Where(x => x.ProductGuid != Guid.Empty).Select(x => x.ProductGuid).Distinct().ToArray(); var files = args.Where(x => !string.IsNullOrEmpty(x.FileName) || !string.IsNullOrEmpty(x.FileProductName)).ToList(); if (products.Length == 0) { sr.Summaries = new Summary[0]; } else { files.Add(new SearchParameter() { FileName = "", FileProductName = "" }); Expression body = null; var param = Expression.Parameter(typeof(Summary), "x"); var pgParam = Expression.PropertyOrField(param, "ProductGuid"); var fnParam = Expression.PropertyOrField(param, "FileName"); var fpParam = Expression.PropertyOrField(param, "FileProductName"); for (int i = 0; i < products.Length; i++) { var productGuid = products[i]; for (int f = 0; f < files.Count; f++) { var fileName = files[f].FileName; var fileProductName = files[f].FileProductName; var exp1 = Expression.AndAlso( Expression.Equal(pgParam, Expression.Constant(productGuid)), Expression.Equal(fnParam, Expression.Constant(fileName)) ); exp1 = Expression.AndAlso(exp1, Expression.Equal(fpParam, Expression.Constant(fileProductName))); body = body == null ? exp1 : Expression.OrElse(body, exp1).Reduce(); } } var lambda = Expression.Lambda<Func<Summary, bool>>(body, param); // Select only TOP 10 configurations per per controller and file. var summaries = db.Summaries.Where(lambda).ToArray(); var topSummaries = new List<Summary>(); var productGuids = db.Summaries.Where(lambda).Select(x => x.ProductGuid).Distinct(); foreach (var pg in productGuids) { var controllerSummaries = summaries.Where(x => x.ProductGuid == pg); var fileNames = controllerSummaries.Select(x => x.FileName).Distinct(); foreach (var fileName in fileNames) { // Top 10 configurations per file topSummaries.AddRange(controllerSummaries.Where(x => x.FileName == fileName).OrderByDescending(x => x.Users).Take(10)); } } sr.Summaries = topSummaries.OrderBy(x => x.ProductName).ThenBy(x => x.FileName).ThenBy(x => x.FileProductName).ThenBy(x => x.Users).ToArray(); } db.Dispose(); db = null; return sr; }
public void SearchSettingsAsync(SearchParameter[] args, object userState = null) { InvokeAsync("SearchSettings", SearchSettingsCompleted, userState, new object[] { args }); }
public SearchResult SearchSettings(SearchParameter[] args) { object[] results = Invoke("SearchSettings", new object[] { args }); return (SearchResult)results[0]; }
public void FillSearchParameterWithFiles(List<SearchParameter> sp) { SearchParameter p; // Add files. for (int i = 0; i < _files.Count; i++) { p = new SearchParameter(); p.FileName = System.IO.Path.GetFileName(_files[i].FileName); p.FileProductName = EngineHelper.FixName(_files[i].ProductName, p.FileName); sp.Add(p); } }
public void FillSearchParameterWithDevices(List<SearchParameter> sp) { SearchParameter p; // Add controllers. for (int i = 0; i < 4; i++) { var device = _devices[i]; if (device == null) continue; p = new SearchParameter(); p.ProductGuid = device.ProductGuid; p.InstanceGuid = device.InstanceGuid; sp.Add(p); } }
public SearchResult SearchSettings(SearchParameter[] args) { var sr = new SearchResult(); var db = new x360ceModelContainer(); // Get all device instances of the user. var p = SearchParameterCollection.GetSqlParameter(args); var hasInstances = args.Any(x => x.InstanceGuid != Guid.Empty); var hasFiles = args.Any(x => !string.IsNullOrEmpty(x.FileName)); var hasProducts = args.Any(x => x.ProductGuid != Guid.Empty); if (hasInstances) { // Get user instances. sr.Settings = db.ExecuteStoreQuery<Setting>("exec x360ce_GetUserInstances @args", p).ToArray(); // Get list of products (unique identifiers). var products = args.Where(x => x.ProductGuid != Guid.Empty).Select(x => x.ProductGuid).Distinct().ToArray(); var files = args.Where(x => !string.IsNullOrEmpty(x.FileName) || !string.IsNullOrEmpty(x.FileProductName)).ToList(); if (products.Length == 0) { sr.Summaries = new Summary[0]; } else { files.Add(new SearchParameter() { FileName = "", FileProductName = "" }); Expression body = null; var param = Expression.Parameter(typeof(Summary), "x"); var pgParam = Expression.PropertyOrField(param, "ProductGuid"); var fnParam = Expression.PropertyOrField(param, "FileName"); var fpParam = Expression.PropertyOrField(param, "FileProductName"); for (int i = 0; i < products.Length; i++) { var productGuid = products[i]; for (int f = 0; f < files.Count; f++) { var fileName = files[f].FileName; var fileProductName = files[f].FileProductName; var exp1 = Expression.AndAlso( Expression.Equal(pgParam, Expression.Constant(productGuid)), Expression.Equal(fnParam, Expression.Constant(fileName)) ); exp1 = Expression.AndAlso(exp1, Expression.Equal(fpParam, Expression.Constant(fileProductName))); body = body == null ? exp1 : Expression.OrElse(body, exp1).Reduce(); } } var lambda = Expression.Lambda<Func<Summary, bool>>(body, param); // Select only TOP 10 configurations per controller and file. var summaries = db.Summaries.Where(lambda).ToArray(); var topSummaries = new List<Summary>(); var productGuids = db.Summaries.Where(lambda).Select(x => x.ProductGuid).Distinct(); foreach (var pg in productGuids) { var controllerSummaries = summaries.Where(x => x.ProductGuid == pg); var fileNames = controllerSummaries.Select(x => x.FileName).Distinct(); foreach (var fileName in fileNames) { // Top 10 configurations per file topSummaries.AddRange(controllerSummaries.Where(x => x.FileName == fileName).OrderByDescending(x => x.Users).Take(10)); } } sr.Summaries = topSummaries.OrderBy(x => x.ProductName).ThenBy(x => x.FileName).ThenBy(x => x.FileProductName).ThenBy(x => x.Users).ToArray(); } } else if (args!= null && args.Length > 0) { // Get presets. var item = args.FirstOrDefault(); var ds = EngineHelper.GetPresets(new SearchParameter[0]); sr.Presets = SqlHelper.ConvertToList<Preset>(ds.Tables[0]).ToArray(); sr.PadSettings = SqlHelper.ConvertToList<PadSetting>(ds.Tables[1]).ToArray(); sr.Summaries = new Summary[0]; sr.Settings = new Setting[0]; } else { sr.Presets = new Preset[0]; sr.PadSettings = new PadSetting[0]; sr.Summaries = new Summary[0]; sr.Settings = new Setting[0]; } db.Dispose(); db = null; return sr; }
public SearchResult SearchSettings(SearchParameter[] args) { var sr = new SearchResult(); var db = new x360ceModelContainer(); // All instances of the user. var instances = args.Where(x => x.InstanceGuid != Guid.Empty).Select(x => x.InstanceGuid).Distinct().ToArray(); if (instances.Length == 0) { sr.Settings = new Setting[0]; } else { sr.Settings = db.Settings.Where(x => instances.Contains(x.InstanceGuid)) .OrderBy(x => x.ProductName).ThenBy(x => x.FileName).ThenBy(x => x.FileProductName).ToArray(); } // Global Configurations. var products = args.Where(x => x.ProductGuid != Guid.Empty).Select(x => x.ProductGuid).Distinct().ToArray(); var files = args.Where(x => !string.IsNullOrEmpty(x.FileName) || !string.IsNullOrEmpty(x.FileProductName)).ToList(); if (products.Length == 0) { sr.Summaries = new Summary[0]; } else { files.Add(new SearchParameter() { FileName = "", FileProductName = "" }); Expression body = null; var param = Expression.Parameter(typeof(Summary), "x"); var pgParam = Expression.PropertyOrField(param, "ProductGuid"); var fnParam = Expression.PropertyOrField(param, "FileName"); var fpParam = Expression.PropertyOrField(param, "FileProductName"); for (int i = 0; i < products.Length; i++) { var productGuid = products[i]; for (int f = 0; f < files.Count; f++) { var fileName = files[f].FileName; var fileProductName = files[f].FileProductName; var exp1 = Expression.AndAlso( Expression.Equal(pgParam, Expression.Constant(productGuid)), Expression.Equal(fnParam, Expression.Constant(fileName)) ); exp1 = Expression.AndAlso(exp1, Expression.Equal(fpParam, Expression.Constant(fileProductName))); body = body == null ? exp1 : Expression.OrElse(body, exp1).Reduce(); } } var lambda = Expression.Lambda<Func<Summary, bool>>(body, param); sr.Summaries = db.Summaries.Where(lambda).OrderBy(x => x.ProductName).ThenBy(x => x.FileName).ThenBy(x => x.FileProductName).ThenBy(x => x.Users).ToArray(); } return sr; }