/// <summary> /// Method is used to collect information for UI rendering /// Modify this method if requirements change /// </summary> /// <param name="source">the source data</param> /// <param name="gender">the owners gender</param> /// <param name="petType">the pet type to filter for</param> /// <returns></returns> public static Output GetPetsByOwnerGender(IEnumerable <Owner> source, OwnerGender gender, PetType petType = PetType.Cat) { if (source == null) { throw new ApplicationException("Invalid or null source"); } // init the output buffer var output = new Output(gender); // Filter by pet type and collect data (filter out owners without pets) foreach (var pet in source.Where(item => item.Gender == gender && item.Pets != null) .SelectMany(item => item.Pets).Where(a => a.Type == petType)) { output.PetNames.Add(pet.Name); } // sort by pet name before sending out data output.PetNames.Sort((a, b) => string.Compare(a, b, StringComparison.Ordinal)); return(output); }
/// <summary> /// ctor /// </summary> /// <param name="gender">the gender from caller</param> public Output(OwnerGender gender) { OwnerGender = gender.ToString(); PetNames = new List <string>(); // init }