Esempio n. 1
0
        public void DeleteFlightTest()
        {
            FlightRepository.Delete(new Flight(id));
            Entity flight = FlightRepository.Find(id);

            Assert.That(flight, Is.Null);
        }
        public void Flight_FindById()
        {
            FlightRepository repository = new FlightRepository(dbConnectionString);
            var flight = repository.Find(1);

            Assert.IsNotNull(flight);
            Assert.AreEqual("FL001", flight.Number);
            Assert.AreEqual(6, flight.PassengerCapacity);
        }
Esempio n. 3
0
        public void UpdateFlightTest()
        {
            testflight.loc_arrival.Id = 6;
            testflight.Id             = id;
            FlightRepository.Update(testflight);
            Flight flight = (Flight)FlightRepository.Find(id);

            Assert.True(flight.loc_arrival.Id == 6);
        }
Esempio n. 4
0
        public void FindFlightTest()
        {
            Entity flight = FlightRepository.Find(id);

            Assert.That(flight, Is.Not.Null);
        }
Esempio n. 5
0
        public IActionResult Book([FromBody] Booking bookingRequest)
        {
            if (!(bookingRequest.PassengerCount > 0))
            {
                return(BadRequest("At least 1 passenger is required."));
            }

            Flight flight = flightRepository.Find(bookingRequest.FlightId);

            if (flight == null || flight.PassengerCapacity <= 0)
            {
                return(BadRequest("Invalid Flight."));
            }

            Passenger passenger = passengerRepository.Find(bookingRequest.PassengerId);

            if (passenger == null || string.IsNullOrWhiteSpace(passenger.IdentityNumber))
            {
                return(BadRequest("Invalid Passenger."));
            }

            if (bookingRequest.PassengerCount > flight.PassengerCapacity)
            {
                return(BadRequest("Passenger Capacity exceeded."));
            }

            Booking booking = bookingRepository.Find(bookingRequest.TravelDate, bookingRequest.FlightId, bookingRequest.PassengerId);

            if (booking != null && booking.PassengerCount > 0)
            {
                return(BadRequest("Flight already booked for the same travel day by the same passenger."));
            }
            else
            {
                // Valid booking request, so proceed.
                bookingRepository.Add(bookingRequest);
            }

            FlightBooking flightBooking = flightBookingRepository.Find(bookingRequest.FlightId, bookingRequest.TravelDate);

            if (flightBooking != null && flightBooking.FlightBookingId > 0)
            {
                var currentPassengerCount = flightBooking.PassengerCount;

                if ((currentPassengerCount + bookingRequest.PassengerCount) > flight.PassengerCapacity)
                {
                    return(BadRequest("Passenger Capacity exceeded."));
                }
                else
                {
                    // Valid passenger count.
                    flightBooking.PassengerCount = (short)(currentPassengerCount + bookingRequest.PassengerCount);
                    flightBookingRepository.Update(flightBooking);
                }
            }

            if (flightBooking == null || flightBooking.FlightBookingId <= 0)
            {
                flightBooking = new FlightBooking
                {
                    TravelDate     = bookingRequest.TravelDate,
                    FlightId       = bookingRequest.FlightId,
                    PassengerCount = bookingRequest.PassengerCount
                };

                // Valid booking request, so proceed.
                flightBookingRepository.Add(flightBooking);
            }

            return(Ok("Flight Booked."));
        }