Пример #1
0
        private static void CalculateTypeWeight(MediumDto mediumDto, IReadOnlyList <string> searchTerms)
        {
            var mediumTypeString = mediumDto.Type.ToString("G");

            if (searchTerms.Any(x => x.ContainsInvariant(mediumTypeString)))
            {
                mediumDto.Weight += TypeWeight * FullMatchMultiplier;
            }
            else if (searchTerms.Any(x => mediumTypeString.ContainsInvariant(x)))
            {
                mediumDto.Weight += TypeWeight;
            }
        }
Пример #2
0
        public IHttpActionResult CreateMedium(MediumDto mediumDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var medium = Mapper.Map <MediumDto, Medium>(mediumDto);

            _context.Mediums.Add(medium);
            _context.SaveChanges();

            mediumDto.Id = medium.Id;

            return(Created(new Uri(Request.RequestUri + "/" + medium.Id), mediumDto));
        }
        // Extract relevant Mediums
        private void GetRelevantMediums()
        {
            // check all the Mediums/Media
            foreach (var mediumObj in _dataService.GetEntitiesData().media)
            {
                // calculate the weight of medium record
                mediumObj.CalculateEntityWeight(_searchText);

                // if weight is not 0 then add it in the result array
                if (mediumObj.Weight > 0)
                {
                    var mediumTemp = new MediumDto();
                    mediumTemp.Put(mediumObj);
                    _searchResults.Add(mediumTemp);
                    // for next search make the calculated weight zero
                    mediumObj.Weight = 0;
                }
            }
        }
Пример #4
0
        // PUT /api/mediums/1
        public IHttpActionResult UpdateMedium(int id, MediumDto mediumDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var mediumInDb = _context.Mediums.SingleOrDefault(c => c.Id == id);

            if (mediumInDb == null)
            {
                return(NotFound());
            }

            Mapper.Map(mediumDto, mediumInDb);

            _context.SaveChanges();

            return(Ok());
        }
Пример #5
0
        private static void CalculatePartialMatches(MediumDto mediumDto, IReadOnlyList <string> separateSearchTerms, IReadOnlyList <string> matchedProperties)
        {
            foreach (var searchTerm in separateSearchTerms)
            {
                if (!matchedProperties.Contains(nameof(mediumDto.Description)) &&
                    (mediumDto.Description?.ContainsInvariant(searchTerm) ?? false))
                {
                    mediumDto.Weight += DescriptionWeight;
                }

                if (!matchedProperties.Contains(nameof(mediumDto.Owner)) &&
                    (mediumDto.Owner?.ContainsInvariant(searchTerm) ?? false))
                {
                    mediumDto.Weight += OwnerWeight;
                }

                if (!matchedProperties.Contains(nameof(mediumDto.SerialNumber)) &&
                    (mediumDto.SerialNumber?.ContainsInvariant(searchTerm) ??
                     false))
                {
                    mediumDto.Weight += SerialNumberWeight;
                }
            }
        }
Пример #6
0
        private static IReadOnlyList <string> CalculateFullMatch(MediumDto mediumDto, string searchQuery)
        {
            var fullyMatchedProperties = new List <string>();

            if (searchQuery.ContainsInvariant(mediumDto.Owner))
            {
                mediumDto.Weight += OwnerWeight * FullMatchMultiplier;
                fullyMatchedProperties.Add(nameof(mediumDto.Owner));
            }

            if (searchQuery.ContainsInvariant(mediumDto.Description))
            {
                mediumDto.Weight += DescriptionWeight * FullMatchMultiplier;
                fullyMatchedProperties.Add(nameof(mediumDto.Description));
            }

            if (searchQuery.ContainsInvariant(mediumDto.SerialNumber))
            {
                mediumDto.Weight += SerialNumberWeight * FullMatchMultiplier;
                fullyMatchedProperties.Add(nameof(mediumDto.SerialNumber));
            }

            return(fullyMatchedProperties);
        }