예제 #1
0
        public int Count(AnimalSearchRequest search)
        {
            var context = _context.Animals.AsQueryable();

            if (!String.IsNullOrEmpty(search.Name))
            {
                context = context.Where(x => x.Name.ToLower() == search.Name.ToLower());
            }
            if (search.Age != null)
            {
                context = context.Where(x => DateTime.Now.Year - x.DOB.Year == search.Age);
            }
            if (!String.IsNullOrEmpty(search.SpeciesType))
            {
                context = context.Where(x => x.Species.SpeciesType.ToLower() == search.SpeciesType.ToLower());
            }
            if (!String.IsNullOrEmpty(search.Classification))
            {
                context = context.Where(x => x.Species.Classification.ToString().ToLower() == search.SpeciesType.ToLower());
            }
            if (!String.IsNullOrEmpty(search.Sex))
            {
                context = context.Where(x => x.Sex.ToString().ToLower() == search.Sex.ToLower());
            }
            if (search.DateAcquired != null)
            {
                context = context.Where(x => x.DateAcquired == search.DateAcquired);
            }

            return(context.Count());
        }
예제 #2
0
        public ActionResult <AnimalListResponse> Search([FromQuery] AnimalSearchRequest searchRequest)
        {
            var animals     = _animals.Search(searchRequest);
            var animalCount = _animals.Count(searchRequest);

            return(AnimalListResponse.Create(searchRequest, animals, animalCount));
        }
예제 #3
0
        public int Count(AnimalSearchRequest search)
        {
            DateTime?AcquiredDateToSearch = search.DateAcquired == null ? null : DateTime.Parse(search.DateAcquired);

            return(_context.Animals
                   .Include(a => a.AnimalType)
                   .Include(a => a.Enclosure)
                   .Count(a => search.Search == null ||
                          (
                              (search.Name == null || a.Name.ToLower().Contains(search.Name)) &&
                              (search.Age == null || (a.DateOfBirth > DateTime.Today.AddYears(a.DateOfBirth.Year - DateTime.Today.Year) ? DateTime.Today.Year - a.DateOfBirth.Year - 1 : DateTime.Today.Year - a.DateOfBirth.Year) == search.Age) &&
                              (search.DateAcquired == null || a.AcquirementDate == AcquiredDateToSearch) &&
                              (search.Class == null || a.AnimalType.Class.ToLower().Contains(search.Class)) &&
                              (search.Alias == null || a.AnimalType.Alias.ToLower().Contains(search.Alias)) &&
                              (search.Enclosure == null || a.Enclosure.EnclosureName.ToLower().Contains(search.Enclosure))
                          )));
        }
예제 #4
0
        public int Count(AnimalSearchRequest searchRequest)
        {
            IQueryable <Animal> query = _context.Animals;

            if (!string.IsNullOrEmpty(searchRequest.Species))
            {
                query = query.Where(e => e.Species.ToLower().Contains(searchRequest.Species.ToLower()));
            }
            if (!string.IsNullOrEmpty(searchRequest.AnimalName))
            {
                query = query.Where(e => e.AnimalName.ToLower().Contains(searchRequest.AnimalName.ToLower()));
            }

            if (searchRequest.AnimalClass != null)
            {
                query = query.Where(e => (e.AnimalClassId - 1) == Convert.ToInt32(searchRequest.AnimalClass));
            }
            ;
            if (searchRequest.Age != 0)
            {
                int ageSearch = DateTime.Now.Year - searchRequest.Age;
                query = query.Where(e => e.DateOfBirth.Year == ageSearch);
            }
            Console.WriteLine(searchRequest.DateAcquired);
            if (searchRequest.DateAcquired == null)
            {
                Console.WriteLine("Date is null");
            }
            ;
            if (searchRequest.DateAcquired.HasValue)
            {
                query = query.Where(e => e.DateAcquired >= searchRequest.DateAcquired.Value && e.DateAcquired < searchRequest.DateAcquired.Value.AddDays(1));
            }
            if (!string.IsNullOrEmpty(searchRequest.EnclosureName))
            {
                query = query.Where(e => e.Enclosure.EnclosureName.ToLower().Contains(searchRequest.EnclosureName.ToLower()));
            }
            return(query.Count());
        }
예제 #5
0
        public IEnumerable <Animal> Search(AnimalSearchRequest search)
        {
            var context = _context.Animals.AsQueryable();

            if (!String.IsNullOrEmpty(search.Name))
            {
                context = context.Where(x => x.Name.ToLower() == search.Name.ToLower());
            }
            if (search.Age != null)
            {
                context = context.Where(x => DateTime.Now.Year - x.DOB.Year == search.Age);
            }
            if (!String.IsNullOrEmpty(search.SpeciesType))
            {
                context = context.Where(x => x.Species.SpeciesType.ToLower() == search.SpeciesType.ToLower());
            }
            if (!String.IsNullOrEmpty(search.Classification))
            {
                context = context.Where(x => x.Species.Classification.ToString().ToLower() == search.SpeciesType.ToLower());
            }
            if (!String.IsNullOrEmpty(search.Sex))
            {
                context = context.Where(x => x.Sex.ToString().ToLower() == search.Sex.ToLower());
            }
            if (search.DateAcquired != null)
            {
                context = context.Where(x => x.DateAcquired == search.DateAcquired);
            }



            return(context.Include(x => x.Species).OrderBy(x => x.Species.SpeciesType));
            // return _context.Animals
            //     .OrderByDescending(p => p.Species.SpeciesType)
            //     .Where(p => search.PostedBy == null || p.UserId == search.PostedBy)
            //     .Skip((search.Page - 1) * search.PageSize)
            //     .Take(search.PageSize);
        }
예제 #6
0
        public IEnumerable <Animal> Search(AnimalSearchRequest searchRequest)
        {
            IQueryable <Animal> query = _context.Animals;

            if (!string.IsNullOrEmpty(searchRequest.Species))
            {
                query = query.Where(e => e.Species.ToLower().Contains(searchRequest.Species.ToLower()));
            }
            if (!string.IsNullOrEmpty(searchRequest.AnimalName))
            {
                query = query.Where(e => e.AnimalName.ToLower().Contains(searchRequest.AnimalName.ToLower()));
            }

            if (searchRequest.AnimalClass != null)
            {
                query = query.Where(e => e.AnimalClass.AnimalClassification == searchRequest.AnimalClass);
            }
            ;
            if (searchRequest.Age != 0)
            {
                int ageSearch = DateTime.Now.Year - searchRequest.Age;
                query = query.Where(e => e.DateOfBirth.Year == ageSearch);
            }
            if (searchRequest.DateAcquired.HasValue)
            {
                query = query.Where(e => e.DateAcquired >= searchRequest.DateAcquired.Value && e.DateAcquired < searchRequest.DateAcquired.Value.AddDays(1));
            }
            if (!string.IsNullOrEmpty(searchRequest.EnclosureName))
            {
                query = query.Where(e => e.Enclosure.EnclosureName.ToLower().Contains(searchRequest.EnclosureName.ToLower()));
            }

            switch (searchRequest.Order)
            {
            case "species":
                query = query.OrderBy(s => s.Species);
                break;

            case "name":
                query = query.OrderBy(s => s.AnimalName);
                break;

            case "class":
                query = query.OrderBy(s => s.AnimalClass.AnimalClassification);
                break;

            case "acquired":
                query = query.OrderByDescending(s => s.DateAcquired);
                break;

            case "enclosure":
                query = query.OrderBy(s => s.Enclosure.EnclosureId);
                break;

            default:
                query = query.OrderBy(s => s.Enclosure.EnclosureId).ThenBy(s => s.AnimalName);
                break;
            }

            return(query.Include(u => u.AnimalClass).Include(u => u.Enclosure)
                   .Skip((searchRequest.Page - 1) * searchRequest.PageSize)
                   .Take(searchRequest.PageSize));
        }
예제 #7
0
        public IEnumerable <Animal> Search(AnimalSearchRequest search)
        {
            DateTime?AcquiredDateToSearch = search.DateAcquired == null ? null : DateTime.Parse(search.DateAcquired);

            var animals = _context.Animals
                          .Include(a => a.AnimalType)
                          .Include(a => a.Enclosure)
                          .Where(a => search.Search == null ||
                                 (
                                     (search.Name == null || a.Name.ToLower().Contains(search.Name)) &&
                                     (search.Age == null || (a.DateOfBirth > DateTime.Today.AddYears(a.DateOfBirth.Year - DateTime.Today.Year) ? DateTime.Today.Year - a.DateOfBirth.Year - 1 : DateTime.Today.Year - a.DateOfBirth.Year) == search.Age) &&
                                     (search.DateAcquired == null || a.AcquirementDate == AcquiredDateToSearch) &&
                                     (search.Class == null || a.AnimalType.Class.ToLower().Contains(search.Class)) &&
                                     (search.Alias == null || a.AnimalType.Alias.ToLower().Contains(search.Alias)) &&
                                     (search.Enclosure == null || a.Enclosure.EnclosureName.ToLower().Contains(search.Enclosure))
                                 ));

            // .Skip((search.Page - 1) * search.PageSize)
            // .Take(search.PageSize);

            if (!String.IsNullOrEmpty(search.Order))
            {
                switch (search.Order.ToLower())
                {
                case "name":
                    return(animals.OrderBy(a => a.Name)
                           .Skip((search.Page - 1) * search.PageSize)
                           .Take(search.PageSize));

                case "age":
                    return(animals.OrderByDescending(a => a.DateOfBirth)
                           .Skip((search.Page - 1) * search.PageSize)
                           .Take(search.PageSize));

                case "acquired":
                    return(animals.OrderBy(a => a.AcquirementDate)
                           .Skip((search.Page - 1) * search.PageSize)
                           .Take(search.PageSize));

                case "species":
                    return(animals.OrderBy(a => a.AnimalType.Alias)
                           .ThenBy(a => a.Name)
                           .Skip((search.Page - 1) * search.PageSize)
                           .Take(search.PageSize));

                case "class":
                    return(animals.OrderBy(a => a.AnimalType.Class)
                           .ThenBy(a => a.AnimalType.Alias)
                           .ThenBy(a => a.Name)
                           .Skip((search.Page - 1) * search.PageSize)
                           .Take(search.PageSize));

                case "enclosure":
                    return(animals.OrderBy(a => a.Enclosure.EnclosureName)
                           .ThenBy(a => a.Name)
                           .Skip((search.Page - 1) * search.PageSize)
                           .Take(search.PageSize));
                }
            }

            return(animals.OrderBy(a => a.Enclosure.EnclosureName)
                   .ThenBy(a => a.Name)
                   .Skip((search.Page - 1) * search.PageSize)
                   .Take(search.PageSize));
        }