using System.Collections.Generic; using System.Linq; using DeveloperAchievements.Activities; namespace DeveloperAchievements.Achievements { public class AchievementGenerationResult { public IEnumerable GeneratedAchievements { get; set; } public bool HasGeneratedAchievements { get { return GeneratedAchievements != null && GeneratedAchievements.Count() > 0; } } public AchievementGenerationResult() { GeneratedAchievements = new Achievement[] {}; } } public interface IAchievementGenerator { /// /// Generates Achievements for a given Developer Activity catalyst. /// /// The developer activity that triggered the Achievement generation /// The developer's activity history /// An award generation result that contains the generated awards for the catalyst. AchievementGenerationResult Generate(DeveloperActivity catalyst, DeveloperHistory history); } }