public async Task <List <Part> > GetSearch(PartSearchCriteria searchCriteria = null) { var partQuery = (_context.Parts.Include(p => p.Category).Include(p => p.ItemType)).Where(p => true); if (searchCriteria.PartId != null && searchCriteria.PartId > 0) { partQuery = partQuery.Where(p => p.PartId.Equals(searchCriteria.PartId)); } else if (searchCriteria.ItemId != null && searchCriteria.ItemId.Length > 0) { partQuery = partQuery.Where(p => p.ItemId == searchCriteria.ItemId); } else { if (searchCriteria.ItemName != null && searchCriteria.ItemName.Length > 0) { partQuery = partQuery.Where(p => p.ItemName.Contains(searchCriteria.ItemName)); } if (searchCriteria.CategoryName != null && searchCriteria.CategoryName.Length > 0) { partQuery = partQuery.Where(p => p.Category.Name.Contains(searchCriteria.CategoryName)); } } if (searchCriteria.Page > 0) { partQuery = partQuery.Skip(searchCriteria.Page * searchCriteria.PageSize); } var parts = await partQuery.Take(searchCriteria.PageSize).ToListAsync(); return((parts == null) ? new List <Part>() : parts); }
public async Task <List <PartDTO> > Search(PartSearchCriteria searchCriteria) { var partList = await this.FindParts(searchCriteria); var partListDTO = new List <PartDTO>(); foreach (var p in partList) { var partDto = new PartDTO { PartId = p.PartId, ItemId = p.ItemId, ItemName = p.ItemName, CategoryId = p.CategoryId, IconLink = p.IconLink, ImageLink = p.ImageLink, ItemDimensionX = p.ItemDimensionX, ItemDimensionY = p.ItemDimensionY, ItemDimensionZ = p.ItemDimensionZ, ItemTypeId = p.ItemTypeId, ItemTypeName = p.ItemType.ItemTypeName, CategoryName = p.Category.Name, Quantity = p.Quantity, ColorCount = p.ColorQuantity }; partDto.PartColors = await PartColors(p.ItemId); partListDTO.Add(partDto); } return(partListDTO); }
public async Task <List <PartDTO> > Search(PartSearchCriteria searchCriteria = null) { List <PartDTO> parts = new List <PartDTO>(); try { parts = await _partService.Search(searchCriteria); } catch (Exception ex) { Console.WriteLine("Search Error (controller): " + ex.Message); Console.WriteLine(ex.StackTrace); //Console.Write(ex.ToString()); } return((parts == null) ? new List <PartDTO>() : parts); }
private string BuildFilter(PartSearchCriteria searchCriteria) { var and = string.Empty; var filterBuilder = new StringBuilder(); if (!string.IsNullOrWhiteSpace(searchCriteria.ItemId)) { filterBuilder.AppendLine($"{and} {1} != null && ItemId.ToLower().Contains(\"{searchCriteria.ItemId.ToLower()}\") = true"); and = " && "; } if (!string.IsNullOrWhiteSpace(searchCriteria.ItemName)) { filterBuilder.AppendLine($"{and} {1} != null && ItemId.ToLower().Contains(\"{searchCriteria.ItemName.ToLower()}\") = true"); and = " && "; } return(filterBuilder.ToString()); }
private async Task <List <Part> > FindParts(PartSearchCriteria searchCriteria) { //var filter = BuildFilter(searchCriteria); var partQuery = (_context.Parts .Include(p => p.Category) .Include(p => p.ItemType) .Include(p => p.PartColors)) .Where(p => true); // partQuery = partQuery.Where("asdf"); // partQuery = partQuery.Where(p => // (string.IsNullOrWhiteSpace(searchCriteria.ItemName) ? true : p.ItemName.ToLower().Contains(searchCriteria.ItemName)) && // (string.IsNullOrWhiteSpace(searchCriteria.ItemId) ? true : p.ItemName.ToLower().Contains(searchCriteria.ItemId)) // ); if (searchCriteria.PartId != null && searchCriteria.PartId > 0) { partQuery = partQuery.Where(p => p.PartId.Equals(searchCriteria.PartId)); } if (searchCriteria.ItemId != null && searchCriteria.ItemId.Length > 0) { partQuery = partQuery.Where(p => p.ItemId.Equals(searchCriteria.ItemId)); } if (searchCriteria.ItemName != null && searchCriteria.ItemName.Length > 0) { partQuery = partQuery.Where(p => p.ItemName.Contains(searchCriteria.ItemName)); } if (searchCriteria.CategoryName != null && searchCriteria.CategoryName.Length > 0) { partQuery = partQuery.Where(p => p.Category.Name.Contains(searchCriteria.CategoryName)); } if (searchCriteria.ColorOnly) { partQuery = partQuery.Where(p => p.PartColors != null && p.PartColors.Count > 0); } //partQuery = partQuery.Where(p => !string.IsNullOrWhiteSpace(p.IconLink) && p.IconLink != "error"); if (searchCriteria.Page > 0) { partQuery = partQuery.Skip(searchCriteria.Page * searchCriteria.PageSize); } List <Part> parts = new List <Part>(); try { parts = await partQuery.Take(searchCriteria.PageSize).ToListAsync(); } catch (Exception ex) { Console.WriteLine("Search Error (service): " + ex.Message); Console.WriteLine(ex.StackTrace); throw; } string imageBaseUrl = _configuration["IconBaseUrl"]; foreach (var p in parts) { p.ColorQuantity = p.PartColors.Select(pc => pc.Color).Distinct().Count(); p.IconLink = $"{imageBaseUrl}/{p.IconLinkJpeg}"; // $"http://localhost:5000/image/{p.IconLink}"; } return(parts); }