コード例 #1
0
        public async Task <IList <Airport> > Get(AirportQuery query)
        {
            var result = new List <Airport>();

            if (string.IsNullOrEmpty(query.Code) && string.IsNullOrEmpty(query.Name) &&
                string.IsNullOrEmpty(query.Location))
            {
                return(await _context.Airports.ToListAsync());
            }

            if (!string.IsNullOrEmpty(query.Code))
            {
                var listByCode = await _context.Airports.Where(x => x.Code.StartsWith(query.Code)).ToListAsync();

                result.AddRange(listByCode);
            }

            if (!string.IsNullOrEmpty(query.Name))
            {
                var listByName = await _context.Airports.Where(x => x.Name.Contains(query.Name)).ToListAsync();

                if (result.Count == 0)
                {
                    result.AddRange(listByName);
                }
                else
                {
                    foreach (var airport in listByName)
                    {
                        if (result.Any(x => x.Id != airport.Id))
                        {
                            result.Add(airport);
                        }
                    }
                }
            }

            if (!string.IsNullOrEmpty(query.Location))
            {
                var listByLocation = await _context.Airports.Where(x => x.Location.Contains(query.Location))
                                     .ToListAsync();

                if (result.Count == 0)
                {
                    result.AddRange(listByLocation);
                }
                else
                {
                    foreach (var airport in listByLocation)
                    {
                        if (result.Any(x => x.Id != airport.Id))
                        {
                            result.Add(airport);
                        }
                    }
                }
            }

            return(result);
        }
コード例 #2
0
        public async Task AirportRepository_GetByCode_MustExisted()
        {
            // Arrange
            var airportQuery = new AirportQuery
            {
                Code     = "PNH",
                Name     = "Phnom Penh",
                Location = "Cambodia"
            };

            // Act
            var result = await AirportRepository.Get(airportQuery);

            // Assert

            Assert.That(result.Any());
        }
コード例 #3
0
        public async Task <IHttpActionResult> GetAirport([FromUri] AirportBindingModel model)
        {
            var query = new AirportQuery()
            {
                Code     = model.Code,
                Name     = model.Name,
                Location = model.Location
            };

            var airports = await AirportRepository.Get(query);

            if (!airports.Any())
            {
                return(NotFound());
            }

            return(Ok(airports));
        }