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;
 }
示例#8
0
        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;
        }