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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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());
        }
示例#5
0
        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);
        }