private bool IsColorSpecified(SearchOptions options) { return(options.Colors != null && options.Colors.Count > 0 ? true : false); }
private void SearchWithSizeAndColor(SearchOptions options, SearchResults searchResult) { foreach (var color in options.Colors) { foreach (var size in options.Sizes) { switch (color.Name + size.Name) { case "BlackSmall": var countBlackSmall = _sortedShirts["BlackSmall"].Count(); searchResult.Shirts.AddRange(_sortedShirts["BlackSmall"]); searchResult.SizeCounts.Where(x => x.Size == Size.Small).FirstOrDefault().Count += countBlackSmall; searchResult.ColorCounts.Where(x => x.Color == Color.Black).FirstOrDefault().Count += countBlackSmall; break; case "BlackMedium": var countBlackMedium = _sortedShirts["BlackMedium"].Count(); searchResult.Shirts.AddRange(_sortedShirts["BlackMedium"]); searchResult.SizeCounts.Where(x => x.Size == Size.Medium).FirstOrDefault().Count += countBlackMedium; searchResult.ColorCounts.Where(x => x.Color == Color.Black).FirstOrDefault().Count += countBlackMedium; break; case "BlackLarge": var countBlackLarge = _sortedShirts["BlackLarge"].Count(); searchResult.Shirts.AddRange(_sortedShirts["BlackLarge"]); searchResult.SizeCounts.Where(x => x.Size == Size.Large).FirstOrDefault().Count += countBlackLarge; searchResult.ColorCounts.Where(x => x.Color == Color.Black).FirstOrDefault().Count += countBlackLarge; break; case "WhiteSmall": var countWhiteSmall = _sortedShirts["WhiteSmall"].Count(); searchResult.Shirts.AddRange(_sortedShirts["WhiteSmall"]); searchResult.SizeCounts.Where(x => x.Size == Size.Small).FirstOrDefault().Count += countWhiteSmall; searchResult.ColorCounts.Where(x => x.Color == Color.White).FirstOrDefault().Count += countWhiteSmall; break; case "WhiteMedium": var countWhiteMedium = _sortedShirts["WhiteMedium"].Count(); searchResult.Shirts.AddRange(_sortedShirts["WhiteMedium"]); searchResult.SizeCounts.Where(x => x.Size == Size.Medium).FirstOrDefault().Count += countWhiteMedium; searchResult.ColorCounts.Where(x => x.Color == Color.White).FirstOrDefault().Count += countWhiteMedium; break; case "WhiteLarge": var countWhiteLarge = _sortedShirts["WhiteLarge"].Count(); searchResult.Shirts.AddRange(_sortedShirts["WhiteLarge"]); searchResult.SizeCounts.Where(x => x.Size == Size.Large).FirstOrDefault().Count += countWhiteLarge; searchResult.ColorCounts.Where(x => x.Color == Color.White).FirstOrDefault().Count += countWhiteLarge; break; case "YellowSmall": var countYellowSmall = _sortedShirts["YellowSmall"].Count(); searchResult.Shirts.AddRange(_sortedShirts["YellowSmall"]); searchResult.SizeCounts.Where(x => x.Size == Size.Small).FirstOrDefault().Count += countYellowSmall; searchResult.ColorCounts.Where(x => x.Color == Color.Yellow).FirstOrDefault().Count += countYellowSmall; break; case "YellowMedium": var countYellowMedium = _sortedShirts["YellowMedium"].Count(); searchResult.Shirts.AddRange(_sortedShirts["YellowMedium"]); searchResult.SizeCounts.Where(x => x.Size == Size.Medium).FirstOrDefault().Count += countYellowMedium; searchResult.ColorCounts.Where(x => x.Color == Color.Yellow).FirstOrDefault().Count += countYellowMedium; break; case "YellowLarge": var countYellowLarge = _sortedShirts["YellowLarge"].Count(); searchResult.Shirts.AddRange(_sortedShirts["YellowLarge"]); searchResult.SizeCounts.Where(x => x.Size == Size.Large).FirstOrDefault().Count += countYellowLarge; searchResult.ColorCounts.Where(x => x.Color == Color.Yellow).FirstOrDefault().Count += countYellowLarge; break; case "BlueSmall": var countBlueSmall = _sortedShirts["BlueSmall"].Count(); searchResult.Shirts.AddRange(_sortedShirts["BlueSmall"]); searchResult.SizeCounts.Where(x => x.Size == Size.Small).FirstOrDefault().Count += countBlueSmall; searchResult.ColorCounts.Where(x => x.Color == Color.Blue).FirstOrDefault().Count += countBlueSmall; break; case "BlueMedium": var countBlueMedium = _sortedShirts["BlueMedium"].Count(); searchResult.Shirts.AddRange(_sortedShirts["BlueMedium"]); searchResult.SizeCounts.Where(x => x.Size == Size.Medium).FirstOrDefault().Count += countBlueMedium; searchResult.ColorCounts.Where(x => x.Color == Color.Blue).FirstOrDefault().Count += countBlueMedium; break; case "BlueLarge": var countBlueLarge = _sortedShirts["BlueLarge"].Count(); searchResult.Shirts.AddRange(_sortedShirts["BlueLarge"]); searchResult.SizeCounts.Where(x => x.Size == Size.Large).FirstOrDefault().Count += countBlueLarge; searchResult.ColorCounts.Where(x => x.Color == Color.Blue).FirstOrDefault().Count += countBlueLarge; break; case "RedSmall": var countRedSmall = _sortedShirts["RedSmall"].Count(); searchResult.Shirts.AddRange(_sortedShirts["RedSmall"]); searchResult.SizeCounts.Where(x => x.Size == Size.Small).FirstOrDefault().Count += countRedSmall; searchResult.ColorCounts.Where(x => x.Color == Color.Red).FirstOrDefault().Count += countRedSmall; break; case "RedMedium": var countRedMedium = _sortedShirts["RedMedium"].Count(); searchResult.Shirts.AddRange(_sortedShirts["RedMedium"]); searchResult.SizeCounts.Where(x => x.Size == Size.Medium).FirstOrDefault().Count += countRedMedium; searchResult.ColorCounts.Where(x => x.Color == Color.Red).FirstOrDefault().Count += countRedMedium; break; case "RedLarge": var countRedLarge = _sortedShirts["RedLarge"].Count(); searchResult.Shirts.AddRange(_sortedShirts["RedLarge"]); searchResult.SizeCounts.Where(x => x.Size == Size.Large).FirstOrDefault().Count += countRedLarge; searchResult.ColorCounts.Where(x => x.Color == Color.Red).FirstOrDefault().Count += countRedLarge; break; default: break; } } } }
private bool IsSizeSpecified(SearchOptions options) { return(options.Sizes != null && options.Sizes.Count > 0 ? true : false); }
private List <SizeCount> GetShirtCountBySize(SearchOptions options) { return(Size.All.Select(size => new SizeCount { Size = size, Count = _lookupGroupedBySize[size.Id].Count(shirt => shirt.Size.Id == size.Id && (!options.Colors.Any() || options.Colors.Select(c => c.Id).Contains(shirt.Color.Id))) }).ToList()); }
private List <ColorCount> GetShirtCountByColor(SearchOptions options) { return(Color.All.Select(color => new ColorCount { Color = color, Count = _lookupGroupedByColor[color.Id].Count(shirt => shirt.Color.Id == color.Id && (!options.Sizes.Any() || options.Sizes.Select(s => s.Id).Contains(shirt.Size.Id))) }).ToList()); }
private static bool ThereOnlyColorOptions(SearchOptions options) { return(options.Colors != null && options.Colors.Any() && (options.Sizes == null || !options.Sizes.Any())); }
private static bool ThereAreBothSizeAndColorOptions(SearchOptions options) { return(options.Colors != null && options.Sizes != null); }
public SearchResults LookupSearch(SearchOptions options) { //Intitialize search result SearchResults results = new SearchResults() { ColorCounts = new List <ColorCount>(), SizeCounts = new List <SizeCount>(), Shirts = new List <Shirt>() }; // Convert to Lookup Stopwatch sw = new Stopwatch(); sw.Start(); var shirtsLookup = _shirts.ToLookup(x => new { x.Color, x.Size }); sw.Stop(); results.Milliseconds = sw.ElapsedMilliseconds; //Search if (options != null) { foreach (Color color in options.Colors) { ColorCount colorCount = new ColorCount() { Color = color, Count = 0 }; foreach (Size sz in Size.All) { var colourMatchedShirts = shirtsLookup[new { Color = color, Size = sz }]; if (options.Sizes.Contains(sz) && options.Sizes.Count > 0) { if (colourMatchedShirts.Count() > 0) { colorCount.Count += colourMatchedShirts.Count(); results.Shirts.AddRange(colourMatchedShirts.ToList <Shirt>()); SizeCount sizeCount = results.SizeCounts.Find(item => item.Size.Name.Equals(sz.Name)); if (sizeCount == null) { results.SizeCounts.Add(new SizeCount { Size = sz, Count = colourMatchedShirts.Count() }); } else { sizeCount.Count++; } } } else if (options.Sizes.Count == 0) { colorCount.Count += colourMatchedShirts.Count(); } } results.ColorCounts.Add(colorCount); } } return(results); }