public int Count(FlightGetBinding binding) { using (var context = GetMainContext()) { return(context.Flights.WhereUser(UserId) .Where(binding) .Count()); } }
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()); } }
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)); }
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()); } }