public async Task ComputeCompanyStatistics() { numOfDrivers = await _driverRepository.CountAsync(); IEnumerable <Leg> legs = await _legRepository.ListAsync(); pickups = legs.Select(leg => leg.NumOfPassengersPickedUp).Sum(); milesDriven = legs.Select(leg => leg.Distance).Sum(); if (await _legRepository.CountAsync() > 0) { averagePickupDelay = legs.Select(leg => leg.StartTime.Subtract(leg.PickupRequestTime.GetValueOrDefault(leg.StartTime)).TotalMinutes).Average(); } totalFares = legs.Select(leg => leg.Fare * leg.NumOfPassengersAboard).Sum(); totalCosts = legs.Select(leg => leg.GetTotalFuelCost()).Sum(); netProfit = totalFares - totalCosts; }