public async Task <IActionResult> GetAvailableRooms(int guests, string checkIn, string checkOut) { Log.Information("Controller method starting: [BookingController] GetAvailableRooms"); try { var roomAvailability = new RoomAvailabilityRequest { Guests = guests, CheckInDate = DateTime.Parse(checkIn), CheckOutDate = DateTime.Parse(checkOut) }; var result = await _bookingService.GetAvailableRoomTypesAsync(roomAvailability); if (!result.Success) { return(BadRequest()); } return(Ok(result.Entity)); } catch { return(BadRequest()); } }
public void SetBookingRequest(RoomAvailabilityRequest availabilityRequest) { BookingRequest.CheckInDate = availabilityRequest.CheckInDate; BookingRequest.CheckOutDate = availabilityRequest.CheckOutDate; BookingRequest.Guests = availabilityRequest.Guests; NotifyStateChanged(); }
public ProxyResult <RoomAvailabilityResponse> GetRoomAvailability(RoomAvailabilityRequest req) { var operationResult = _vleisureApiRequest.GetRoomAvailability(req); return(operationResult.ToProxyResult()); }
public void Flush() { Rooms = null; ConfirmedBooking = null; PickedRoom = null; BookingRequest = new BookingRequest(); AvailabilityRequest = new RoomAvailabilityRequest(); BookingRequest.BookingNumber = "<placeholder>"; }
public IQueryable <int> GetUnavailableRoomIds(RoomAvailabilityRequest request) { Log.Information("BookingRepository processing request for GetUnavailableRoomIds {@Request}", request); var ids = ctx.Bookings .Where(e => !(request.CheckOutDate.Date <= e.CheckInDate.Date || request.CheckInDate.Date >= e.CheckOutDate.Date) && e.Room != null && !e.IsCanceled) // request in 6 out 7 .Include(e => e.Room) // blocking in 5 out 6 .Select(e => e.Room.Id); return(ids); }
public override RoomAvailabilityResponse GetRoomAvailability(RoomAvailabilityRequest roomAvailabilityRequest) { string path = PathFor("HotelRoomAvailabilityResponse.json"); string content = Regex.Replace(File.ReadAllText(path), ""); JsonDeserializer jsonDeserializer = new JsonDeserializer() { RootElement = "HotelRoomAvailabilityResponse" }; RoomAvailabilityResponse hotelRoomAvailabilityResponse = jsonDeserializer.Deserialize <RoomAvailabilityResponse>(new RestResponse() { Content = content }); return(hotelRoomAvailabilityResponse); }
public OperationResult <RoomAvailabilityResponse> GetRoomAvailability(RoomAvailabilityRequest request) { var client = new RestClient("https://hotels-dev.mekongleisuretravel.com/ihs/v2/roomavail"); var restRequest = InitRestRequest(request); var response = client.Execute(restRequest); if (response.IsSuccessful) { if (response.ContentType.Contains("application/json")) { var roomAvailabilityResponse = _javaScriptScriptSerializer.Deserialize <RoomAvailabilityResponse>(response.Content); return(new OperationResult <RoomAvailabilityResponse>(roomAvailabilityResponse)); } } return(new OperationResult <RoomAvailabilityResponse>(OperationResult.OperationStatus.GeneralError, response.ErrorMessage.ToString())); }
public void SetAvailabilityRequest(RoomAvailabilityRequest availabilityRequest) { AvailabilityRequest = availabilityRequest; NotifyStateChanged(); }
public async Task <ServiceResponse <List <RoomInfo> > > GetAvailableRoomTypesAsync(RoomAvailabilityRequest request) { Log.Information("BookingService processing request for GetAvailableRoomTypes {@request}", request); if (request.CheckInDate.Date < DateTime.Now.Date) { return(new ServiceResponse <List <RoomInfo> >("Check in date cannot be set earlier than today.")); } if (request.CheckOutDate.Date <= DateTime.Now.Date) { return(new ServiceResponse <List <RoomInfo> >("Check out date cannot be set earlier than today.")); } if (request.CheckInDate.Date >= request.CheckOutDate.Date) { return(new ServiceResponse <List <RoomInfo> >("Check out date cannot occur before or same date as Check in date.")); } var unavailablequery = repo.GetUnavailableRoomIds(request); var roomTypes = await repo.GetAvailableRooms(unavailablequery) .Select(s => new { Beds = s.Beds, DoubleBeds = s.DoubleBeds }) .Distinct() .ToArrayAsync(); List <RoomInfo> roomtypes = new List <RoomInfo>(); // map the objects foreach (var roomtype in roomTypes) { roomtypes.Add(new RoomInfo { Beds = roomtype.Beds, DoubleBeds = roomtype.DoubleBeds }); } return(new ServiceResponse <List <RoomInfo> >(roomtypes)); }
public abstract RoomAvailabilityResponse GetRoomAvailability(RoomAvailabilityRequest roomAvailabilityRequest);
/** * http://api.ean.com/ean‑services/rs/hotel/v3/avail?minorRev=[current minorRev #] * &cid=55505 * &apiKey=[xxx-yourOwnKey-xxx] * &customerUserAgent=[xxx] * &customerIpAddress=[xxx] * &customerSessionId=[xxx] * &locale=en_US * ¤cyCode=USD * &hotelId=109496 * &arrivalDate=08/03/2012 * &departureDate=08/04/2012 * &includeDetails=true * &room1=2 * &options=HOTEL_DETAILS */ public override RoomAvailabilityResponse GetRoomAvailability(RoomAvailabilityRequest roomAvailabilityRequest) { Require.Argument("roomAvailabilityRequest", roomAvailabilityRequest); RestRequest request = new RestRequest(); request.Resource = "avail"; request.Method = Method.GET; request.RootElement = "HotelRoomAvailabilityResponse"; //required parameters request.AddParameter("hotelId", roomAvailabilityRequest.HotelId); request.AddParameter("arrivalDate", roomAvailabilityRequest.ArrivalDate.ToShortDateString()); request.AddParameter("departureDate", roomAvailabilityRequest.DepartureDate.ToShortDateString()); if (roomAvailabilityRequest.RoomGroup != null) { for (int i = 0; i < roomAvailabilityRequest.NumberOfBedrooms; i++) { var parameter = new Parameter(); parameter.Value = roomAvailabilityRequest.RoomGroup[i].NumberOfAdults + (roomAvailabilityRequest.RoomGroup[i].ChildAges == null ? string.Empty : ("," + String.Join(",", roomAvailabilityRequest.RoomGroup[i].ChildAges.Take(roomAvailabilityRequest.RoomGroup[i].NumberOfChildren).ToArray()))); parameter.Type = ParameterType.GetOrPost; parameter.Name = "room" + (roomAvailabilityRequest.RoomGroup.IndexOf(roomAvailabilityRequest.RoomGroup[i]) + 1); request.AddParameter(parameter); } } //optional parameters if (roomAvailabilityRequest.NumberOfBedrooms.HasValue) { request.AddParameter("numberOfBedrooms", roomAvailabilityRequest.NumberOfBedrooms.Value); } if (roomAvailabilityRequest.SupplierType.HasValue) { request.AddParameter("supplierType", roomAvailabilityRequest.SupplierType.Value.ToString()); } if (!String.IsNullOrWhiteSpace(roomAvailabilityRequest.RateKey)) { request.AddParameter("rateKey", roomAvailabilityRequest.RateKey); } if (!String.IsNullOrWhiteSpace(roomAvailabilityRequest.RoomTypeCode)) { request.AddParameter("roomTypeCode", roomAvailabilityRequest.RoomTypeCode); } if (!String.IsNullOrWhiteSpace(roomAvailabilityRequest.RateCode)) { request.AddParameter("rateCode", roomAvailabilityRequest.RateCode); } request.AddParameter("includeDetails", roomAvailabilityRequest.IncludeDetails); request.AddParameter("includeRoomImages", roomAvailabilityRequest.IncludeRoomImages); request.AddParameter("includeHotelFeeBreakdown", roomAvailabilityRequest.IncludeHotelFeeBreakdown); if (roomAvailabilityRequest.Options.Any()) { request.AddParameter("options", String.Join(",", roomAvailabilityRequest.Options)); } return(Execute <RoomAvailabilityResponse>(request)); }