Esempio n. 1
0
        public async Task <int> Count(BodyPartClassifications classifications, bool?recentImagesOnly)
        {
            var data    = GetQueryable(classifications, recentImagesOnly);
            var results = await data.CountAsync();

            return(results);
        }
Esempio n. 2
0
        private IMongoQueryable <BodyPartReference> GetQueryable(BodyPartClassifications classifications, bool?recentImagesOnly)
        {
            var query = _collection.AsQueryable();

            if (classifications.Gender.HasValue)
            {
                query = query.Where(x => x.Classifications.Gender == classifications.Gender);
            }
            if (classifications.BodyPart.HasValue)
            {
                query = query.Where(x => x.Classifications.BodyPart == classifications.BodyPart);
            }
            if (classifications.ViewAngle.HasValue)
            {
                query = query.Where(x => x.Classifications.ViewAngle == classifications.ViewAngle);
            }
            if (recentImagesOnly == true)
            {
                // get the most recent upload, then include anything within 30 days of that
            }

            query = query.Where(x => x.Status == Status.Active);

            return(query);
        }
Esempio n. 3
0
        public async Task <BodyPartReference> Get(BodyPartClassifications classifications, List <string> excludeIds, bool?recentImagesOnly)
        {
            var data = GetQueryable(classifications, recentImagesOnly);

            data = data.Where(x => !excludeIds.Contains(x.Id));
            var recordCount = await data.CountAsync();

            if (recordCount == 0)
            {
                return(null);
            }

            var random = RandomGenerator.Next(0, recordCount);

            var result = data.Skip(random).First();

            return(result);
        }