public static CarState.Result AddCarItem(CarState state, CarItemId carItemId, string desc, ICarPolicy carPolicy) => state.With(s => carPolicy.Apply(new CannotBeAddedMoreThanTwoItems(s))) .ApplyEvent(new CarItemAddedEvent(state.Id, carItemId, desc));
public static CarState.Result RenewModel(CarState state, int year, ICarPolicy carPolicy) => state.With(s => carPolicy.Apply(new ModelYearCannotBeAboveThan(year))) .ApplyEvent(new CarModelRenewedEvent(state.Id, year));