ОК, я думаю, что для этого достаточно базового уникального ограничения в базе данных. Если случается, что 2 пользователя бронируют одну и ту же машину, то база данных должна отказаться от транзакции, поскольку это нарушит ограничение. Я думаю, что ключ может быть помещен в забронированный столбец или что-то в этом роде.
БД выдаст исключение, репозиторий должен перехватить его и, в конце концов, вызвать событие домена OverlappedBookingEvent, которое, вероятно, будет обработано с сообщением об ошибке для пользователя: .
Несмотря на то, что это бизнес-правило, я думаю, что эта проверка должна выполняться не более чем на уровне хранилища, поскольку это правило, связанное с постоянством, и в конечном итоге его может применять только база данных.