fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. public class QuickSearchResult
  6. {
  7. public string ID { get; set; }
  8. public string Title { get; set; }
  9. }
  10.  
  11. public class CollectionHydrationSettings
  12. {
  13. public List<QuickSearchResult> Providers { get; set; }
  14. public List<QuickSearchResult> Genres { get; set; }
  15. public List<QuickSearchResult> AdiCategories { get; set; }
  16. public string Sort { get; set; }
  17. public HydrationExclusions Exclusions { get; set; }
  18. public List<FilterGroup> FilterGroups { get; set; }
  19.  
  20. public CollectionHydrationSettings()
  21. {
  22. Providers = new List<QuickSearchResult>();
  23. Genres = new List<QuickSearchResult>();
  24. AdiCategories = new List<QuickSearchResult>();
  25. Exclusions = new HydrationExclusions();
  26. FilterGroups = new List<FilterGroup>();
  27.  
  28. Sort = "Title ASC";
  29. }
  30.  
  31. public class HydrationExclusions
  32. {
  33. public List<string> TmsIds { get; set; }
  34. public List<string> MovieAssetIds { get; set; }
  35. public List<string> PackageAssetIds { get; set; }
  36. public List<QuickSearchResult> Providers { get; set; }
  37. public List<QuickSearchResult> Genres { get; set; }
  38. public List<QuickSearchResult> AdiCategories { get; set; }
  39.  
  40. public HydrationExclusions()
  41. {
  42. TmsIds = new List<string>();
  43. MovieAssetIds = new List<string>();
  44. PackageAssetIds = new List<string>();
  45. Providers = new List<QuickSearchResult>();
  46. Genres = new List<QuickSearchResult>();
  47. AdiCategories = new List<QuickSearchResult>();
  48. }
  49. }
  50.  
  51. public class FilterGroup
  52. {
  53. public List<string> ProgramTypes { get; set; }
  54. public List<string> Ratings { get; set; }
  55. public List<string> Years { get; set; }
  56. public List<List<QuickSearchResult>> GenreGroups { get; set; }
  57.  
  58. public FilterGroup()
  59. {
  60. ProgramTypes = new List<string>();
  61. Ratings = new List<string>();
  62. Years = new List<string>();
  63. GenreGroups = new List<List<QuickSearchResult>>();
  64. }
  65. }
  66. }
  67.  
  68. public class Test
  69. {
  70. public static void Main()
  71. {
  72. CollectionHydrationSettings HydrationSettings = new CollectionHydrationSettings();
  73. string Filter = String.Format("({0})",
  74. String.Join(") or (", HydrationSettings.FilterGroups
  75. .Where(FilterGroup => FilterGroup.ProgramTypes.Count > 0 ||
  76. FilterGroup.Ratings.Count > 0 ||
  77. FilterGroup.Years.Count > 0 ||
  78. (FilterGroup.GenreGroups.Count > 0 && FilterGroup.GenreGroups
  79. .Any(GenreGroup => GenreGroup.Count > 0)))
  80. .Select(FilterGroup =>
  81. {
  82. List<string> Filters = new List<string>();
  83.  
  84. if (FilterGroup.ProgramTypes.Count > 0)
  85. Filters.Add(String.Format("ProgramType in (\"{0}\")",
  86. String.Join("\",\"", FilterGroup.ProgramTypes)));
  87.  
  88. if (FilterGroup.Ratings.Count > 0)
  89. Filters.Add(String.Format("Rating in (\"{0}\")",
  90. String.Join("\",\"", FilterGroup.Ratings)));
  91.  
  92. if (FilterGroup.Years.Count > 0)
  93. Filters.Add(String.Format("Year in ({0})",
  94. String.Join(",", FilterGroup.Years)));
  95.  
  96. if (FilterGroup.GenreGroups.Count > 0)
  97. Filters.Add(String.Join(" or ", FilterGroup.GenreGroups
  98. .Where(GenreGroup => GenreGroup.Count > 0)
  99. .Select(GenreGroup => String.Format("({0})",
  100. String.Join(" and ", GenreGroup
  101. .Select(Genre => String.Format("AdiGenreMappings.Any(GenreID = {0})", Genre.ID)))))));
  102.  
  103. return String.Format("({0})",
  104. String.Join(") and (", Filters));
  105. })));
  106.  
  107. Console.WriteLine(Filter);
  108. }
  109. }
Success #stdin #stdout 0.01s 131648KB
stdin
Standard input is empty
stdout
()