Example #1
0
 public int Count(FlightGetBinding binding)
 {
     using (var context = GetMainContext())
     {
         return(context.Flights.WhereUser(UserId)
                .Where(binding)
                .Count());
     }
 }
Example #2
0
 public IEnumerable <KeyValuePair <int, int> > CountByYear(FlightGetBinding binding)
 {
     using (var context = GetMainContext())
     {
         return(context.Flights.WhereUser(UserId)
                .Where(binding)
                .GroupBy(x => x.DateOfDeparture.Year)
                .OrderByDescending(x => x.Key)
                .Select(x => new KeyValuePair <int, int>(x.Key, x.Count()))
                .ToList());
     }
 }
Example #3
0
        public PagedView <Views.Flight.Flight> Get(FlightGetBinding binding)
        {
            using (var context = GetMainContext())
            {
                int?destinationAirportId = binding.DestinationId is null ? null : context.Airports.SingleOrDefault(x => x.Iata == binding.DestinationId)?.Id;
                int?originAirportId      = binding.OriginId is null ? null : context.Airports.SingleOrDefault(x => x.Iata == binding.OriginId)?.Id;

                return(context.Flights.WhereUser(UserId)
                       .Where(binding)
                       .WhereIf(destinationAirportId, x => x.DestinationAirportId == destinationAirportId)
                       .WhereIf(originAirportId, x => x.OriginAirportId == originAirportId)
                       .Include(x => x.DestinationAirport)
                       .ThenInclude(x => x.Poi)
                       .Include(x => x.OriginAirport)
                       .ThenInclude(x => x.Poi)
                       .OrderByDescending(x => x.DateOfArrival)
                       .Select(x => new Views.Flight.Flight(x))
                       .ToPagedView(binding));
            }
        }
 public IActionResult Get([FromQuery] FlightGetBinding binding) => Ok(_flightHandler.Get(binding));
 public IActionResult GetCountByYear(FlightGetBinding binding) => Ok(_flightHandler.CountByYear(binding));
 public IActionResult GetCountByAirport(FlightGetBinding binding) => Ok(_flightHandler.CountByAirport(binding));
 public static IQueryable <Flight> Where(this IQueryable <Flight> query, FlightGetBinding binding)
 {
     return(query.WhereIf(binding.From.HasValue, x => x.DateOfDeparture >= binding.From)
            .WhereIf(binding.To.HasValue, x => x.DateOfDeparture <= binding.To));
 }
Example #8
0
        public IEnumerable <KeyValuePair <Views.Airport.Airport, int> > CountByAirport(FlightGetBinding binding)
        {
            using (var context = GetMainContext())
            {
                var userAirports = context.Flights.WhereUser(UserId)
                                   .Where(binding)
                                   .Include(x => x.DestinationAirport)
                                   .ThenInclude(x =>  x.Poi)
                                   .Include(x => x.OriginAirport)
                                   .ThenInclude(x => x.Poi);

                return(userAirports.Select(x => x.DestinationAirport)
                       .Concat(userAirports.Select(x => x.OriginAirport))
                       .GroupBy(x => new
                {
                    x.Iata,
                    x.Name,
                    x.Poi.Latitude,
                    x.Poi.Longitude
                })
                       .OrderByDescending(x => x.Count())
                       .Select(x => new KeyValuePair <Views.Airport.Airport, int>(new()
                {
                    Iata = x.Key.Iata,
                    Name = x.Key.Name,
                    Poi = new Views.Poi.Poi()
                    {
                        Location = new Location(x.Key.Latitude, x.Key.Longitude)
                    }
                }, x.Count()))
                       .ToList());
            }
        }