/// <summary> /// Get Pets by Person's gender /// </summary> /// <param name="petType">The Pet type</param> /// <remarks>Throws ArgumentNullException</remarks> /// <returns><see cref="Task{PetsByPersonGenderCollectionModel}"/></returns> public async Task <PetsByPersonGenderCollectionModel> GetPetsByPersonGender(Models.PetType petType) { var entitiesPetType = (Entities.PetType)(int) petType; var persons = await _petsRepository.GetPersonAndPets(); //LINQ Query to get Pets by Person's gender and Pet type var entities = new PetsByPersonGenderCollection() { PetType = entitiesPetType, PetsByPersonGender = persons.ToList() .Where(person => person.Pets != null) .GroupBy(person => person.Gender) .Select(g => new PetsByPersonGender { Gender = g.Key, Pets = g.SelectMany(person => person.Pets.Where(pet => pet.Type == entitiesPetType)).OrderBy(x => x.Name) }).ToList() }; //Map entities to models var models = _mapperService.Map(entities); return(models); }
/// <summary> /// Display Cats by Person's gender /// </summary> /// <param name="petsByPersonGenderCollection">Cats by Person Gender list</param> static void DisplayCatsByPersonGender(PetsByPersonGenderCollection petsByPersonGenderCollection) { if (petsByPersonGenderCollection == null) { throw new Exception("Error fetching data.."); } var catsByOwnerGender = petsByPersonGenderCollection.PetsByPersonGender; //Write output Console.WriteLine(catsByOwnerGender.ElementAt(0).Gender); catsByOwnerGender.ElementAt(0).Pets.Select(pet => pet.name).OrderBy(name => name).ToList().ForEach(catName => { Console.WriteLine("\t" + catName); }); Console.WriteLine(catsByOwnerGender.ElementAt(1).Gender); catsByOwnerGender.ElementAt(1).Pets.Select(pet => pet.name).OrderBy(name => name).ToList().ForEach(catName => { Console.WriteLine("\t" + catName); }); }
public PetsByPersonGenderCollectionModel Map(PetsByPersonGenderCollection petsByPersonGenderCollection) { return(_mapper.Map <PetsByPersonGenderCollection, PetsByPersonGenderCollectionModel>(petsByPersonGenderCollection)); }