public void UpdateText(ClassifiedAdText text)
 => Apply(
     new V1.ClassifiedAdTextUpdated
 {
     Id      = Id,
     OwnerId = OwnerId,
     AdText  = text
 }
     );
        protected override void When(object @event)
        {
            Picture picture;

            switch (@event)
            {
            case V1.ClassifiedAdCreated e:
                Id        = e.Id;
                OwnerId   = UserId.FromGuid(e.OwnerId);
                State     = ClassifiedAdState.Inactive;
                _pictures = new List <Picture>();
                break;

            case V1.ClassifiedAdTitleChanged e:
                Title = new ClassifiedAdTitle(e.Title);
                break;

            case V1.ClassifiedAdTextUpdated e:
                Text = new ClassifiedAdText(e.AdText);
                break;

            case V1.ClassifiedAdPriceUpdated e:
                Price = new Price(e.Price, e.CurrencyCode);
                break;

            case V1.ClassifiedAdSentForReview _:
                State = ClassifiedAdState.PendingReview;
                break;

            case V1.ClassifiedAdPublished e:
                ApprovedBy = UserId.FromGuid(e.ApprovedBy);
                State      = ClassifiedAdState.Active;
                break;

            // picture
            case V1.PictureAddedToAClassifiedAd e:
                picture = new Picture(Apply);
                ApplyToEntity(picture, e);
                _pictures.Add(picture);
                break;

            case V1.ClassifiedAdPictureResized e:
                picture = FindPicture(new PictureId(e.PictureId));
                ApplyToEntity(picture, @event);
                break;
            }
        }