2012-02-28 9 views
0

Я разрабатываю сайт для аренды жилья для отдыха, и я хотел бы помочь с дизайном объектной модели.Разработка системы бронирования домов

У меня есть модель домов, модель пользователей, и теперь я собираюсь спроектировать и построить модель резервирования, которая будет иметь поля начала и окончания даты, поле пользователя и поле для дома.

Процесс бронирования включает в себя несколько действий, выбор дома, выбор даты и, наконец, внесение платежа. Как мне разработать процесс бронирования, чтобы бронирование не было сохранено до тех пор, пока все эти действия не будут выполнены? Может ли идея создать другую модель (например, ReservationRequest) для обработки двух состояний резервирования? В противном случае, как я могу обрабатывать два состояния резервирования?

Извините, если это неопределенный вопрос, но любое руководство для такого рода процессов будет очень полезно для меня.

+1

Я бы поставил под сомнение предположение о том, что вы не сохраняете бронирование до завершения бронирования. Вы можете просто указать состояние, связанное с резервированием, которое будет установлено как «завершено», как только вы закончите все действия, связанные с бронированием. Затем вы можете создать именованные области внутри вашей модели, чтобы захватить «полные» оговорки. Нет ничего плохого в том, что вы храните неполные оговорки в своей базе данных - вы можете периодически их очищать, если вам нужно, и вы можете получить некоторые полезные аналитики из состояния неполных оговорок. –

+0

Это действительно хорошая идея, я не думал об этом раньше. Благодаря! –

+0

Считаете ли вы проблему доступности проверки в этот диапазон дней? Если вы просто получаете запросы на бронирование, это не проблема, но если вы сделаете оплату пользователя, это может быть проблемой. –

ответ

1

Это зависит от вашей политики. Я бы не хранил ничего серверного, пока не начнется действительный платеж. Таким образом, пользователи не могут блокировать дома, а затем менять свое мнение. Я передавал объекты (дома и даты) туда и обратно между разными страницами мастера. Когда начнется платеж, я сохраню резервную копию в базе данных, так что с оптимистичной точки зрения - и это заблокирует Дом. Если после этого платеж не удался, уничтожьте резервную копию и отправьте соответствующие сообщения (электронные письма). Таким образом, каждый может перезапустить весь процесс. Но это действительно зависит от того, сколько пользователей будет и насколько одновременно будет среда

+0

Многие пользователи по-прежнему используют _bank tranfer_ в качестве метода оплаты. С банковским траспортом вам нужно несколько дней, чтобы получить деньги, я не думаю, что это отличный проблема, если дом заблокирован на несколько дней, пока деньги приходят. Если это проблема, вероятно, вы можете использовать этот подход, но учитывать, что пользователи «старого пути» не учитываются. –

+0

Извините, последнее предложение должно быть «если это не проблема», вы можете использовать этот подход [...] » –

Смежные вопросы