Exemplo n.º 1
0
        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));
            }
        }
    }
Exemplo n.º 2
0
 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));
     }
 }