private async Task <GenericReadModelResponse <string> > CreateBookingAsync(ProceedBookingRequest webRequest, string paxId) { var response = new GenericReadModelResponse <string>(); var bookingProductModel = new BookingProductModel { ProductId = webRequest.ProductId, DateCheckIn = webRequest.BookDate, PaxIds = new string[] { paxId }, Nights = 1 }; var apiRequest = new CreateBookingRequest(); apiRequest.BookingProducts.Add(bookingProductModel); var apiResponse = await this._heroApiManager.CreateBookingAsync(apiRequest); if (apiResponse.IsError()) { response.AddErrorMessages(apiResponse.GetErrorMessages()); return(response); } response.Model = apiResponse.Model.Id; return(response); }
public async Task <IActionResult> Proceed([FromBody] ProceedBookingRequest request) { var createPaxResponse = await this.CreatePax(request); if (createPaxResponse.IsError()) { return(this.ErrorResponseResult(createPaxResponse)); } var createBookingResponse = await this.CreateBookingAsync(request, createPaxResponse.Model); if (createBookingResponse.IsError()) { return(this.ErrorResponseResult(createBookingResponse)); } var getTotalPriceResponse = await this.GetTotalPriceAsync(request.ProductId, request.BookDate); if (getTotalPriceResponse.IsError()) { return(this.ErrorResponseResult(getTotalPriceResponse)); } var createPaymentResponse = await this.CreatePaymentAsync(createBookingResponse.Model, getTotalPriceResponse.Model); if (createPaymentResponse.IsError()) { return(this.ErrorResponseResult(createPaymentResponse)); } var finalizeBookingResponse = await this.FinalizeBookingAsync(createBookingResponse.Model); if (finalizeBookingResponse.IsError()) { return(this.ErrorResponseResult(finalizeBookingResponse)); } return(this.SuccessResponseResult(new { BookingId = createBookingResponse.Model, PaxId = createPaxResponse.Model })); }
private async Task <GenericReadModelResponse <string> > CreatePax(ProceedBookingRequest webRequest) { var response = new GenericReadModelResponse <string>(); var apiRequest = new CreatePaxRequest { FirstName = webRequest.FirstName, LastName = webRequest.LastName, PhoneNumber = webRequest.PhoneNumber, EmailAddress = webRequest.EmailAddress }; var apiResponse = await this._heroApiManager.CreatePaxAsync(apiRequest); if (apiResponse.IsError()) { response.AddErrorMessages(apiResponse.GetErrorMessages()); return(response); } response.Model = apiResponse.Model.Id; return(response); }