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()); }
public ActionResult <AnimalListResponse> Search([FromQuery] AnimalSearchRequest searchRequest) { var animals = _animals.Search(searchRequest); var animalCount = _animals.Count(searchRequest); return(AnimalListResponse.Create(searchRequest, animals, animalCount)); }
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)) ))); }
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()); }
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); }
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)); }
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)); }