/// <summary> /// Make Booking /// </summary> /// <param name="booking"></param> /// <returns></returns> public async Task <Tuple <HttpStatusCode, string> > MakeBooking(CreateBookingRequestDeatils booking) { if (booking.FlightDetails != null && !String.IsNullOrEmpty(booking.FlightDetails.DepartureDate) && !String.IsNullOrEmpty(booking.FlightDetails.ArrivalDate) && !String.IsNullOrEmpty(booking.FlightDetails.DepartureCityCode) && !String.IsNullOrEmpty(booking.FlightDetails.ArrivalCityCode) && !String.IsNullOrEmpty(booking.FlightDetails.DepartureTime) && !String.IsNullOrEmpty(booking.FlightDetails.ArrivalTime)) { var flightDetails = await flightManager.GetFlightDetails(booking.FlightDetails); if (flightDetails != null && booking.Passenger != null && booking.Passenger.Count() > 0) { var passengerCount = booking.Passenger.Count(); if (flightDetails.Capacity > booking.Passenger.Count()) { var pnr = String.Format("{0:000000}", new Random().Next(000000, 999999)); var status = await UpdateBooking(pnr, flightDetails, passengerCount); if (status) { foreach (Passenger passenger in booking.Passenger) { var passengerId = await passengerManager.CreatePassenger(passenger); await passengerManager.UpdatePassengerBookingRecord(passengerId, pnr); } return(new Tuple <HttpStatusCode, string>(HttpStatusCode.OK, pnr)); } else { return(new Tuple <HttpStatusCode, string>(HttpStatusCode.BadRequest, "something went wrong while creating booking")); } } else { return(new Tuple <HttpStatusCode, string>(HttpStatusCode.NotFound, "capacity exceeded")); } } else { return(new Tuple <HttpStatusCode, string>(HttpStatusCode.BadRequest, "flight details not valid")); } } else { return(new Tuple <HttpStatusCode, string>(HttpStatusCode.BadRequest, "Supplied flight details are not correct")); } }
public async Task <IHttpActionResult> MakeBooking(CreateBookingRequestDeatils booking) { var result = await bookingManager.MakeBooking(booking); if (result != null && result.Item1 == HttpStatusCode.OK) { return(Ok(new BookingResponse { PNR = result.Item2 })); } else { return(BadRequest(result.Item2)); } }
public void BookingController_CheckForValidPNR_Are_Equal() { //Arrange var mockRepository = new Mock <IBookingManager>(); CreateBookingRequestDeatils moqdata = new CreateBookingRequestDeatils(); mockRepository.Setup(x => x.MakeBooking(moqdata)).ReturnsAsync(new Tuple <HttpStatusCode, string>(HttpStatusCode.OK, "27373")); var controller = new BookingsController(mockRepository.Object); //Act var result = controller.MakeBooking(moqdata); var contentResult = result.Result as OkNegotiatedContentResult <BookingResponse>; //Assert Assert.IsNotNull(contentResult); Assert.IsNotNull(contentResult.Content); Assert.AreEqual(contentResult.Content.PNR, "27373"); }
public void BookingController_NotValidFlightDetail_BAD_REQUEST() { //Arrange var mockRepository = new Mock <IBookingManager>(); CreateBookingRequestDeatils moqdata = new CreateBookingRequestDeatils(); moqdata.FlightDetails = new FlightDetailRequest { DepartureCityCode = "DXB", ArrivalCityCode = "" }; mockRepository.Setup(x => x.MakeBooking(moqdata)).ReturnsAsync(new Tuple <HttpStatusCode, string>(HttpStatusCode.BadRequest, "bad request")); var controller = new BookingsController(mockRepository.Object); //Act var result = controller.MakeBooking(moqdata); var contentResult = result.Result as BadRequestErrorMessageResult; //Assert Assert.IsInstanceOfType(contentResult, typeof(BadRequestErrorMessageResult)); Assert.AreEqual(contentResult.Message, "bad request"); }