예제 #1
0
        public void BookFlightForNewPassenger_ShouldNotBookedFlight()
        {
            // Arrange
            var booking = new BookingFlightModel
            {
                BookNumber   = "WO-171576",
                FlightNumber = "PZ69", // this flight does not exist
                Customer     = new PassengerModel
                {
                    Name      = "Uladislau Pavlowski",
                    DateBirth = DateTime.Parse("1998-11-27T00:00:00"),
                    Gender    = GenderType.Male,
                    Address   = "fake town",
                    Email     = "*****@*****.**"
                },
                Passengers = new[]
                {
                    new PassengerModel
                    {
                        Name      = "Uladislau Pavlowski",
                        DateBirth = DateTime.Parse("1998-11-27T00:00:00"),
                        Gender    = GenderType.Male,
                        Address   = "fake town",
                        Email     = "*****@*****.**"
                    }
                }
            };

            // Act
            var result = _passengersService.BookFlight(booking);

            // Assert
            Assert.Null(result);
        }
예제 #2
0
        public void BookFlightForNewPassenger_ShouldBookedFlight()
        {
            // Arrange
            var booking = new BookingFlightModel
            {
                BookNumber   = "WO-171576",
                FlightNumber = "PZ696",
                Customer     = new PassengerModel
                {
                    Name      = "Uladislau Pavlowski",
                    DateBirth = DateTime.Parse("1998-11-27T00:00:00"),
                    Gender    = GenderType.Male,
                    Address   = "fake town",
                    Email     = "*****@*****.**"
                },
                Passengers = new[]
                {
                    new PassengerModel
                    {
                        Name      = "Uladislau Pavlowski",
                        DateBirth = DateTime.Parse("1998-11-27T00:00:00"),
                        Gender    = GenderType.Male,
                        Address   = "fake town",
                        Email     = "*****@*****.**"
                    }
                }
            };

            // Act
            var result = _passengersService.BookFlight(booking);

            // Assert
            Assert.Contains(result, _mockBookingRepository.Object.GetAll().ToList());
        }
예제 #3
0
        /// <summary>
        /// Get package information asynchromusly
        /// </summary>
        /// <param name="data">Package indentifer</param>
        /// <returns>Deal package model</returns>
        public async Task <int> UpdateBookingFlightInformation(BookingFlightModel data)
        {
            try
            {
                await this.bookingFlightRepository.UpdateAsync(data);

                return(data.Id);
            }
            catch (Exception ex)
            {
                string msg = ex.ToString();
                return(0);
            }
        }
예제 #4
0
        public Booking BookFlight(BookingFlightModel model)
        {
            var flight = _flightRepository.GetAll()
                         .SingleOrDefault(f => f.Number == model.FlightNumber);

            if (flight == null)
            {
                return(null);
            }

            var customer = new Person
            {
                Id        = new Random().Next(0, 10000),
                Name      = model.Customer.Name,
                Address   = model.Customer.Address,
                Email     = model.Customer.Email,
                DateBirth = model.Customer.DateBirth,
                Gender    = model.Customer.Gender
            };

            var passengers = model.Passengers.Select(passenger => new Person
            {
                Id        = new Random().Next(0, 10000),
                Name      = passenger.Name,
                Address   = passenger.Address,
                Email     = passenger.Email,
                DateBirth = passenger.DateBirth,
                Gender    = passenger.Gender
            })
                             .ToList();

            var booking = new Booking
            {
                Id          = new Random().Next(0, 10000),
                Number      = model.BookNumber,
                Flight      = flight,
                Customer    = customer,
                Passengers  = passengers,
                DateBooking = DateTime.Parse(
                    DateTime.Now.ToLongTimeString(),
                    new CultureInfo("nl-NL"))
            };

            _bookingRepository.Save(booking);

            return(booking);
        }
        public ActionResult <Booking> BookFlight([FromBody] BookingFlightModel model)
        {
            if (!ModelState.IsValid)
            {
                var errorMessage = "Model is not valid";
                _logger.LogError(errorMessage, HttpContext.Request.Path);

                return(BadRequest(new { ErrorMessage = errorMessage }));
            }

            var newBooking = _passengersService.BookFlight(model);

            if (newBooking == null)
            {
                var errorMessage = $"Flight № {model.FlightNumber} does not exist";
                _logger.LogError(errorMessage, HttpContext.Request.Path);

                return(BadRequest(new { ErrorMessage = errorMessage }));
            }

            return(CreatedAtAction(nameof(BookFlight), new { id = newBooking.Id }, newBooking));
        }