Example #1
0
        // Public members

        public override async Task ApplyAsync(ISearchContext context, ISearchResult result)
        {
            switch (ParseFormatBy(Value))
            {
            case FormatBy.CommonName:
                await result.FormatByAsync(new CommonNameTaxonFormatter());

                break;

            case FormatBy.FullName:
                await result.FormatByAsync(new BinomialNameTaxonFormatter()
                {
                    NameFormat = BinomialNameFormat.Full
                });

                break;

            case FormatBy.SpeciesOnly:
                await result.FormatByAsync(new BinomialNameTaxonFormatter()
                {
                    NameFormat = BinomialNameFormat.Species
                });

                break;

            case FormatBy.Gallery:
                result.DisplayFormat = SearchResultDisplayFormat.Gallery;
                break;

            case FormatBy.Leaderboard:

                result.DisplayFormat = SearchResultDisplayFormat.Leaderboard;

                // If the ordering has not already been modified, order the groups by the number of items in each.

                if (result.HasDefaultOrdering)
                {
                    await result.OrderByAsync(Comparer <ISearchResultGroup> .Create((lhs, rhs) => lhs.Count().CompareTo(rhs.Count())));
                }

                break;

            default:
            case FormatBy.ShortName:
                await result.FormatByAsync(new BinomialNameTaxonFormatter());

                break;
            }
        }