Esempio n. 1
0
        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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
            }
        }