public void SearchShouldWorkProperly() { var model = new SearchDogViewModel { Province = Province.SofiaCityProvince, Breed = DogBreed.Affenpinscher, IsDisinfected = false, IsVaccinated = false, HasVetNotes = false, MaxAge = 20, MinAge = 0 }; var result = dogsController.Search(model) as ViewResult; var res = result.Model as List <DogViewModel>; Assert.IsInstanceOf <List <DogViewModel> >(res); Assert.AreEqual(0, res.Count); this.createDog.Name = "Pavel"; this.createDog.Breed = DogBreed.Affenpinscher; this.createDog.BirthDate = DateTime.Parse("20.01.2019"); this.createDog.Province = Province.SofiaCityProvince; this.createDog.IsDisinfected = false; this.createDog.IsVaccinated = true; this.dogsController.New(this.createDog); var resultat = dogsController.Search(model) as ViewResult; var final = resultat.Model as List <DogViewModel>; Assert.AreEqual(1, final.Count); Assert.AreEqual("Pavel", final.First().Name); Assert.AreEqual("SearchResults", resultat.ViewName); model.IsDisinfected = true; var newResult = dogsController.Search(model) as ViewResult; var newRes = newResult.Model as List <DogViewModel>; Assert.AreEqual(0, newRes.Count); }
public IActionResult Search(SearchDogViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var dogs = new List <Dog>(); dogs = context .Dogs .Include(d => d.Owner) .Include(d => d.Vet) .Include(d => d.VetNotes) .Include(d => d.Images) .ToList() .Where(d => DateTime.Now.Subtract(d.BirthDate).Days >= model.MinAge * 365 && DateTime.Now.Subtract(d.BirthDate).Days <= model.MaxAge * 365 && d.Province == model.Province && d.Breed == model.Breed && d.Gender == model.Gender && d.Adopted == false) .ToList(); if (model.IsVaccinated == true) { foreach (var dog in dogs.Where(d => d.IsVaccinated == false).ToList()) { dogs.Remove(dog); } } if (model.IsDisinfected == true) { foreach (var dog in dogs.Where(d => d.IsDisinfected == false).ToList()) { dogs.Remove(dog); } } if (model.IsCastrated == true) { foreach (var dog in dogs.Where(d => d.IsCastrated == false).ToList()) { dogs.Remove(dog); } } if (model.HasVetNotes == true) { foreach (var dog in dogs.Where(d => d.VetNotes.Count == 0).ToList()) { dogs.Remove(dog); } } var result = new List <DogViewModel>(); foreach (var dog in dogs) { var dogModel = new DogViewModel { Id = dog.Id, Name = dog.Name, Gender = dog.Gender, BirthDate = dog.BirthDate, Province = dog.Province, IsVaccinated = dog.IsVaccinated, IsDisinfected = dog.IsDisinfected, IsCastrated = dog.IsCastrated, Owner = dog.Owner.FirstName + " " + dog.Owner.LastName, OwnerNotes = dog.OwnerNotes, Vet = dog.Vet != null ? dog.Vet.FirstName + " " + dog.Vet.LastName : "No vet", Breed = dog.Breed }; foreach (var pic in dog.Images) { dogModel.Images.Add(pic.Id, pic.ImageUrl); } result.Add(dogModel); } return(View("SearchResults", result)); }