public void Checkout_IfPaymentTypeIsAccount_Successful() { var(_, _, agentChannel) = GetAgentInfoFromConfig(); var parameters = new BookingParameters { Reference = configuration["Checkout:TestBookingReferenceForAgentConfirmation"], ChannelId = agentChannel, Shopper = new Shopper { Email = "*****@*****.**", Title = "Mrs", FirstName = "clientFName", LastName = "clientLName", TelephoneNumber = "123321321321", }, BillingAddress = new Address { Line1 = "47-51 Great Suffolk St", Line2 = "", PostalCode = "SE1 0BS", City = "London", CountryCode = "UK", }, RedirectUrl = "http://localhost:8000/", DeliveryMethod = DeliveryMethod.Collection, PaymentType = PaymentType.Account, PaymentId = "111", }; var paymentInfo = service.Checkout(parameters); Assert.IsNotNull(paymentInfo.PaymentType); }
public async Task <IActionResult> GetBookings([FromQuery] BookingParameters bookingParameters) { var bookings = await _repository.Booking.GetAllBookingsAsync(bookingParameters, trackChanges : false); var bookingDtos = _mapper.Map <IEnumerable <BookingDto> >(bookings); return(Ok(bookingDtos)); }
public void Checkout_IfParametersAreInvalid_Exception400() { var invalidParameters = new BookingParameters(); var exception = Assert.Catch <ApiException>(() => { var result = service.Checkout(invalidParameters); }); Assert.AreEqual(HttpStatusCode.BadRequest, exception.ResponseCode); }
public void Checkout_IfBookingIsExpired_Exception400() { var parameters = new BookingParameters { Reference = configuration["Checkout:TestExpiredBookingReference"], ChannelId = configuration["Checkout:TestChannelId"], Shopper = new Shopper { Email = "*****@*****.**", Title = "Miss", FirstName = "Shawn", LastName = "Butler", TelephoneNumber = "07882571812", ExternalId = "8263702", }, BillingAddress = new Address { Line1 = "Barnard's Inn", Line2 = "86 Fetter Lane", PostalCode = "EC4A 1EN", City = "London", CountryCode = "GB", CountryName = "United Kingdom", StateOrProvince = "NY", }, Origin = "https://example.com", RedirectUrl = "https://example.com", DeliveryMethod = DeliveryMethod.Collection, DeliveryCharge = 245, RecipientName = "Mr. Someone Else", GiftVoucherMessage = "Happy Birthday to you.", DeliveryAddress = new Address { Line1 = "Barnard's Inn", Line2 = "86 Fetter Lane", PostalCode = "EC4A 1EN", City = "London", CountryCode = "GB", CountryName = "United Kingdom", StateOrProvince = "NY", }, HasFlexiTickets = true, PaymentType = PaymentType.Card, }; var exception = Assert.Catch <ApiException>(() => { var result = service.Checkout(parameters); }); Assert.AreEqual(HttpStatusCode.BadRequest, exception.ResponseCode); }
public void Checkout_IfPaymentTypeIsCard_Successful() { var parameters = new BookingParameters { Reference = configuration["Checkout:TestBookingReference"], ChannelId = configuration["Checkout:TestChannelId"], Shopper = new Shopper { Email = "*****@*****.**", Title = "Miss", FirstName = "Shawn", LastName = "Butler", TelephoneNumber = "07882571812", ExternalId = "8263702", }, BillingAddress = new Address { Line1 = "Barnard's Inn", Line2 = "86 Fetter Lane", PostalCode = "EC4A 1EN", City = "London", CountryCode = "GB", CountryName = "United Kingdom", StateOrProvince = "NY", }, Origin = "https://example.com", RedirectUrl = "https://example.com", DeliveryMethod = DeliveryMethod.Collection, DeliveryCharge = 245, RecipientName = "Mr. Someone Else", GiftVoucherMessage = "Happy Birthday to you.", DeliveryAddress = new Address { Line1 = "Barnard's Inn", Line2 = "86 Fetter Lane", PostalCode = "EC4A 1EN", City = "London", CountryCode = "GB", CountryName = "United Kingdom", StateOrProvince = "NY", }, HasFlexiTickets = false, PaymentType = PaymentType.Card, }; var paymentInfo = service.Checkout(parameters); Assert.IsNotNull(paymentInfo.PaymentId); }
public BookingQueryParameters(BookingParameters parameters) { DeliveryMethod = GetDeliveryMethod(parameters.DeliveryMethod); PaymentType = parameters.PaymentType.ToString().ToLowerInvariant(); PaymentId = parameters.PaymentId; Reference = parameters.Reference; ChannelId = parameters.ChannelId; Shopper = parameters.Shopper; BillingAddress = parameters.BillingAddress; Origin = parameters.Origin; RedirectUrl = parameters.RedirectUrl; DeliveryCharge = parameters.DeliveryCharge; RecipientName = parameters.RecipientName; GiftVoucherMessage = parameters.GiftVoucherMessage; DeliveryAddress = parameters.DeliveryAddress; HasFlexiTickets = parameters.HasFlexiTickets; }
/// <inheritdoc /> public PaymentInfo Checkout(BookingParameters bookingParameters) { if (bookingParameters == null) { throw new ArgumentException("booking parameters must be set"); } var requestParameters = new ExecuteApiRequestParameters { Endpoint = $"v{ApiVersion}/checkout", Method = RequestMethod.Post, Body = new BookingQueryParameters(bookingParameters), Serializer = new DefaultJsonSerializer(new DefaultNamingStrategy()), }; var result = Executor.ExecuteApiWithWrappedResponse <PaymentInfo>(requestParameters); return(result.DataOrException); }
public void Checkout_IfBookingIsSet_CallsApiWithRightParameters(BookingParameters parameters, string requestBody) { mockers.SetupAnyExecution <ApiResponse <PaymentInfo> >(); try { Checkout(parameters); } catch { // ignored } mockers.VerifyExecution <ApiResponse <PaymentInfo> >( BaseUrl, $"v{ApiVersion}/checkout", Method.POST, bodyInJson: requestBody, expectedHeaders: null, expectedQueryParameters: null); }
public async Task <IActionResult> GetBookingsByUserId([FromQuery] BookingParameters parameters) { if (!int.TryParse(User.FindFirst(ClaimTypes.NameIdentifier)?.Value ?? string.Empty, out var userId)) { return(Unauthorized()); } var bookings = await _bookingRepository.GetBookingsByUserId(userId, parameters); if (bookings == null) { return(BadRequest("Could not find any bookings for this user")); } foreach (var booking in bookings) { var flightDetails = await _flightRepository.GetDetailsById(booking.FlightId); if (flightDetails == null) { return(BadRequest("Could not find any flight for this booking")); } booking.FlightDetails = flightDetails; var passengers = await _passengerRepository.GetPassengersForBooking(booking.Id, userId); if (passengers == null) { return(BadRequest("Could not find any passengers for this booking")); } booking.Passengers = passengers; } Response.AddPaginationHeader(bookings.CurrentPage, bookings.PageSize, bookings.TotalCount, bookings.TotalPages); return(Ok(bookings)); }
public async Task <IEnumerable <Booking> > GetAllBookingsAsync(BookingParameters bookingParameters, bool trackChanges) => await FindByCondition(b => b.Start >= bookingParameters.Start && b.End <= bookingParameters.End, trackChanges) .OrderBy(r => r.Start) .Skip((bookingParameters.PageNumber - 1) * bookingParameters.PageSize) .Take(bookingParameters.PageSize) .ToListAsync();
public async Task <PagedList <BookingForListDto> > GetBookingsByUserId(int userId, BookingParameters parameters) { try { var bookings = _context.Bookings .Where(x => x.UserId == userId) .OrderByDescending(x => x.DateOfBooking) .ProjectTo <BookingForListDto>(_mapper.ConfigurationProvider) .AsNoTracking(); return(await PagedList <BookingForListDto> .CreateAsync(bookings, parameters.PageNumber, parameters.PageSize)); } catch (Exception e) { Console.WriteLine(e); return(null); } }