public async Task <IEnumerable <Person> > Handle(GetPassengersRequest request, CancellationToken cancellationToken)
        {
            _validator.ValidateAndThrow(request);
            var flight = await _mediator.Send(new GetFlightByNumberRequest(request.Number));

            return(_bookingRepository.GetAll()
                   .Where(b => b.Flight.Id == flight.Id)
                   .SelectMany(b => b.Passengers));
        }
Esempio n. 2
0
        public ActionResult <List <PassengerDto> > GetFlightPassengers(string flightNumber)
        {
            var getPassengersRequest = new GetPassengersRequest {
                FlightNumber = flightNumber
            };
            var passengers = _passengerService.GetPassengers(getPassengersRequest);

            if (passengers == null || !passengers.Any())
            {
                return(NotFound($"Passengers of {flightNumber} flight are not found."));
            }

            return(Ok(passengers));
        }
Esempio n. 3
0
        public void GetAll_WhenGenderIsSet_ShouldReturnPassengersByGender()
        {
            // Arrange
            var getPassengersRequest = new GetPassengersRequest
            {
                Gender = Gender.Male
            };

            var passengersByGender = new List <Person>
            {
                new Person {
                    Id = 1, Name = "Test1", DateBirth = DateTime.Now.Date, Gender = GenderType.Male, Address = "TestAddress", Email = "*****@*****.**"
                },
                new Person {
                    Id = 2, Name = "Test2", DateBirth = DateTime.Now.Date, Gender = GenderType.Female, Address = "TestAddress", Email = "*****@*****.**"
                },
                new Person {
                    Id = 3, Name = "Test3", DateBirth = DateTime.Now.Date, Gender = GenderType.Male, Address = "TestAddress", Email = "*****@*****.**"
                }
            };

            Mapper.Reset();
            Mapper.Initialize(cfg => cfg.CreateMap <Person, PassengerDto>());

            var malePassengers = Mapper.Map <List <Person>, List <PassengerDto> >(passengersByGender.Where(pas => pas.Gender == GenderType.Male).ToList());

            var mockPersonRepository  = new Mock <IRepository <Person> >();
            var mockBookingRepository = new Mock <IRepository <Booking> >();
            var mockFlightRepository  = new Mock <IRepository <Flight> >();

            mockPersonRepository.Setup(x => x.GetAll()).Returns(passengersByGender);

            var passengerService = new PassengerService(Mapper.Instance, mockPersonRepository.Object, mockBookingRepository.Object, mockFlightRepository.Object);

            // Act
            var passengers = passengerService.GetPassengers(getPassengersRequest);

            // Assert
            Assert.AreEqual(malePassengers.Count, passengers.Count);
            Assert.AreEqual(malePassengers.Select(pas => pas.Id).ToList(), passengers.Select(pas => pas.Id).ToList());
        }
Esempio n. 4
0
        public void GetAll_WhenNoPassengers_ShouldThrowAppropriateException()
        {
            // Arrange
            var getPassengersRequest = new GetPassengersRequest();

            Mapper.Reset();
            Mapper.Initialize(cfg => cfg.CreateMap <Person, PassengerDto>());

            var mockPersonRepository  = new Mock <IRepository <Person> >();
            var mockBookingRepository = new Mock <IRepository <Booking> >();
            var mockFlightRepository  = new Mock <IRepository <Flight> >();

            mockPersonRepository.Setup(x => x.GetAll()).Returns((IEnumerable <Person>)null);

            var passengerService = new PassengerService(Mapper.Instance, mockPersonRepository.Object, mockBookingRepository.Object, mockFlightRepository.Object);

            // Act & Assert
            var exception = Assert.Throws <WingsOnNotFoundException>(() => passengerService.GetPassengers(getPassengersRequest));

            Assert.AreEqual(exception.Message, "Passengers are not found.");
        }
Esempio n. 5
0
        public List <PassengerDto> GetPassengers(GetPassengersRequest getPassengersRequest)
        {
            var passengers = _personRepository.GetAll()?.ToList();

            if (passengers == null || !passengers.Any())
            {
                throw new WingsOnNotFoundException("Passengers are not found.");
            }

            if (getPassengersRequest.Gender != null)
            {
                passengers = passengers?.Where(person => person.Gender == (GenderType)getPassengersRequest.Gender)?.ToList();
            }

            if (getPassengersRequest.FlightNumber != null)
            {
                var flightPassengersIds = PrepareFlightPassengers(getPassengersRequest.FlightNumber)
                                          ?.Select(person => person.Id).ToList();

                passengers = passengers?.Where(person => flightPassengersIds.Contains(person.Id))?.ToList();
            }

            return(_mapper.Map <List <Person>, List <PassengerDto> >(passengers));
        }
 public ActionResult <List <PassengerDto> > Get([FromQuery] GetPassengersRequest getPassengersRequest)
 {
     return(Ok(_passengerService.GetPassengers(getPassengersRequest)));
 }