protected override void SetStateByEvent(IEvent @event)
        {
            switch (@event)
            {
            case AdvertismentCreated e:
                Id      = e.Id;
                OwnerId = new UserId(e.OwnerId);
                State   = AdvertismentState.Inactive;
                break;

            case AdvertismentPriceUpdated e:
                Price = new Price(Rial.FromLong(e.Price));
                break;

            case AdvertismentSentForReview e:
                State = AdvertismentState.ReviewPending;
                break;

            case AdvertismentTextUpdated e:
                Text = new AdvertismentText(e.AdvertismentText);
                break;

            case AdvertismentTitleChanged e:
                Title = new AdvertismentTitle(e.Title);
                break;


            default:
                throw new InvalidOperationException("امکان اجرای عملیات درخواستی وجود ندارد");
            }
        }
Exemple #2
0
 public void UpdateText(AdvertismentText text)
 {
     HandleEvent(new AdvertismentTextUpdated
     {
         Id = Id,
         AdvertismentText = text
     });
 }
Exemple #3
0
 public void Configure(EntityTypeBuilder <Advertisment> builder)
 {
     builder.Property(c => c.Price).HasConversion(c => c.Value.Value, d => Price.FromLong(d));
     builder.Property(c => c.OwnerId).HasConversion(c => c.Value.ToString(), d => UserId.FromString(d));
     builder.Property(c => c.ApprovedBy).HasConversion(c => c.Value.ToString(), d => UserId.FromString(d));
     builder.Property(c => c.Text).HasConversion(c => c.Value, d => AdvertismentText.FromString(d));
     builder.Property(c => c.Title).HasConversion(c => c.Value, d => AdvertismentTitle.FromString(d));
 }
Exemple #4
0
        public void Handle(UpdateText command)
        {
            var advertisement = advertisementsRepository.Load(command.Id);

            if (advertisement == null)
            {
                throw new InvalidOperationException($"آگهی با شناسه {command.Id} یافت نشد.");
            }
            advertisement.UpdateText(AdvertismentText.FromString(command.Text));
            unitOfWork.Commit();
        }