protected override void When(object evt) { State = evt switch { V1.ScreeningScheduled e => State.With(x => { x.Id = e.ScreeningId; x.Capacity = e.TheaterCapacity; }), V1.SeatReserved e => State.When(e), _ => State }; }
public void Schedule( string screeningId, Movie movie, Theater theater, DateTimeOffset startsAt ) { if (Version >= 0) { throw new InvalidOperationException("Can't do that, go away"); } var evt = new V1.ScreeningScheduled { ScreeningId = screeningId, MovieId = movie.Id, TheaterId = theater.Id, TheaterCapacity = theater.Capacity, DurationInMinutes = movie.DurationInMinutes, StartsAt = startsAt }; Apply(evt); }