private void Apply(PercentageActivityCreatedEvent obj)
 {
     this.AggregateId   = obj.AggregateId;
     this.Name          = obj.Name;
     this.ActivityType  = ActivityType.Percentage;
     this.ActivityValue = 0;
     this.CurrentLevel  = 1;
 }
        private ActivityAggregateRoot(Guid activityId, string name, ActivityType activityType) : this()
        {
            switch (activityType)
            {
            case ActivityType.Percentage:
                var progressingActivityCreatedEvent = new PercentageActivityCreatedEvent(activityId, name);
                this.Apply(progressingActivityCreatedEvent);
                this.RaiseEvent(progressingActivityCreatedEvent);
                break;

            case ActivityType.Leveling:
                var levelingActivityCreationEvent = new LevelingActivityCreatedEvent(activityId, name);
                this.Apply(levelingActivityCreationEvent);
                this.RaiseEvent(levelingActivityCreationEvent);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(activityType), activityType, null);
            }
        }