public ResponseModel <List <SearchHotelResponseDTO> > SearchHotels(SearchHotelRequestDTO dto) { if (dto == null) { return new ResponseModel <List <SearchHotelResponseDTO> >() { Code = ResultActionModelCode.NoData, Message = "No data" } } ; using (var unity = _factory.GetUnitOfWork(UnitOfWorkContext.ReadOnly)) { var result = unity.GetRepository <Hotel>() .AsQueryable() .Where(x => x.Name == dto.Place || x.Country.Name == dto.Place || x.City == dto.Place) .SelectMany(x => x.Rooms) .Where(x => x.PersonNumbers == dto.PersonsNumber && (x.Reservations.All(z => !(z.DateFrom == dto.From && z.DateTo == dto.To || x.Reservations.Count == 0)))) .Select(x => new SearchHotelResponseDTO() { HotelId = x.Hotel.Id, City = x.Hotel.City, Country = x.Hotel.Country.Name, HotelName = x.Hotel.Name, Price = x.Price, RoomId = x.Id }).ToList(); return(ResponseModel <List <SearchHotelResponseDTO> > .OK(result)); } } }
public HttpResponseMessage Search([FromUri] SearchHotelRequestDTO model) { try { var result = _service.SearchHotels(model); return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch (Exception e) { logger.Error(e, "Search"); return(Request.CreateResponse(HttpStatusCode.InternalServerError, e)); } }