Example #1
0
        /// <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);
        }
Example #2
0
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="gender">the gender from caller</param>
 public Output(OwnerGender gender)
 {
     OwnerGender = gender.ToString();
     PetNames    = new List <string>(); // init
 }