public async Task <IEnumerable <FlightSummaryViewModel> > GetAllFlights( [FromServices] IQueryHandler <ListFlightsQuery, IEnumerable <FlightSummary> > queryHandler, [FromServices] IMapper mapper) { var query = new ListFlightsQuery(); var flightSummaries = await queryHandler.HandleAsync(query); var viewModels = flightSummaries.Select(mapper.Map <FlightSummaryViewModel>); return(viewModels); }
public async Task <IEnumerable <FlightSummary> > HandleAsync(ListFlightsQuery query) { const string statement = @" SELECT [Id], JSON_VALUE([JsonDocument], '$.Capacity') AS [Capacity], ( SELECT COALESCE(SUM([NumberOfBookedSeats]), 0) FROM OPENJSON(JSON_QUERY([JsonDocument], '$.Bookings')) WITH ( [NumberOfBookedSeats] INT '$.NumberOfSeats' ) ) AS [NumberOfBookedSeats] FROM [Flights] "; var rows = await _sqlConnection.QueryAsync <FlightSummaryRow>(statement); return(rows.Select(x => x.ToFlightSummary())); }