Я работаю над приложением по бронированию, и у меня возникают проблемы при написании правильного запроса при попытке получить свободные номера. Идея проста, клиент выбирает дату начала и окончания, количество жильцов и приложение предоставляет ему свободные номера. Это означает, что даже если номер в настоящее время забронирован, пока текущее бронирование не продлится до даты начала бронирования клиента, оно будет отображаться как опция. Тем не менее, я считаю, что код, который я написал, проверяет только те комнаты, в которых были какие-либо бронирования, связанные с ними, в базе данных, хотя он, очевидно, должен проверять их все. Это таблицы
Номера
int RoomId
int AccommodationId
Rooms_Reservations
int Rooms_ReservationsId
int RoomId
int ReservationId
Бронирование
int ReservationId
int ReservationStatusId
DateTime DateFrom
DateTime DateTo
ReservationStatus
int ReservationStatusId
string ReservationStatusName
(в основном Status = 2 означает, что это активное резервирование, поэтому, если отложенное или отмененное резервирование охватывает диапазон дат, оно все равно отображается как вариант)
Я пропустил остальные поля и упомянул только те, которые имеют отношение к этому вопросу. Я попытался использовать принятый вопрос, связанный с бронированием номеров, но все равно получил те же результаты, поэтому, пожалуйста, не связывайте меня с другим заданным вопросом. Это мой текущий (если есть какие-то базовые c intellisense ошибки, это потому, что я перевожу код)
var list = (from room in _context.Rooms.Where(x => x.AccommodationId == search.AccommodationId)
join rooms_reservations in _context.Rooms_Reservations
on room.RoomId equals rooms_reservations.RoomId
join reservation in _context.Rezervacija
on rooms_reservations.ReservationId equals reservation.ReservationId
join ReservationStatus in _context.ReservationStatus
on reservation.ReservationStatusId equals ReservationStatus.ReservationStatusId
where ((reservation.DateFrom >= search.DateTo) ||
(reservation.DateTo <= search.DateFrom)) &&
ReservationStatus.ReservationStatusId != 2
select new RoomModel()
{
// code to add inside the model
}).ToList();
Это определенно не работает, так как у меня нет ни одного резервирования в моя база данных пока, но когда этот запрос дает 0 результатов, когда я ищу, хотя он должен перечислить все комнаты от размещения. Итак, в заключение, это должно показать мне любую доступную комнату, даже те, которые никогда не были зарезервированы ранее, и я считаю, что, поскольку я использую «бронирование резервирования», он включает только те комнаты, которые отображаются в записях Rooms_Reservations.