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("امکان اجرای عملیات درخواستی وجود ندارد"); } }
public void SetTitle(AdvertismentTitle title) { HandleEvent(new AdvertismentTitleChanged { Id = Id, Title = title }); }
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)); }
public void Handle(SetTitle command) { var advertisement = advertisementsRepository.Load(command.Id); if (advertisement == null) { throw new InvalidOperationException($"آگهی با شناسه {command.Id} یافت نشد."); } advertisement.SetTitle(AdvertismentTitle.FromString(command.Title)); unitOfWork.Commit(); }