public async Task <RoutesWithTripsAndToPaging> GetRoutesWithTripsAndToByTurnoverId(int turnoverId, int skip, int limit, int?routeId = null)
        {
            var sqlRRoute            = new RoutesRepository(_logger);
            var sqlRTripsOnRoute     = new TripsOnRouteRepository(_logger);
            var sqlRTrips            = new TripsRepository(_logger);
            var sqlRStationOnTrips   = new StantionOnTripsRepository(_logger);
            var sqlRInspectionRoutes = new InspectionRoutesRepository(_logger);

            var routes = new List <Route>();
            var total  = 0;

            if (routeId == null)
            {
                var paging = await sqlRRoute.GetByTurnoverIdPaging(turnoverId, skip, limit);

                routes.AddRange(paging.Data);
                total = paging.Total;
            }
            else
            {
                routes.Add(await sqlRRoute.ById(routeId.Value));
            }

            var result = new RoutesWithTripsAndToPaging {
                Data = new List <RoutesWithTripsAndTo>(), Total = total
            };


            foreach (var route in routes)
            {
                var data = new RoutesWithTripsAndTo
                {
                    Id               = route.Id,
                    Name             = route.Name,
                    Mileage          = route.Mileage,
                    Description      = route.Description,
                    TurnoverId       = route.TurnoverId,
                    InspectionRoutes = await sqlRInspectionRoutes.GetByRouteId(route.Id)
                };
                var tripsOnRoute = await sqlRTripsOnRoute.ByRouteId(route.Id);

                var trips = new List <TripWithTripOnRouteId>();
                foreach (var tripOnRoute in tripsOnRoute)
                {
                    var trip = await sqlRTrips.ById(tripOnRoute.TripId);

                    var toAdd = _mapper.Map <Trip, TripWithTripOnRouteId>(trip);
                    toAdd.TripOnRouteId = tripOnRoute.Id;
                    trips.Add(toAdd);
                }

                data.Trips = trips;


                foreach (var trip in data.Trips)
                {
                    trip.StantionOnTrips = new List <StantionOnTrip>();
                    var stationsOnTrip = await sqlRStationOnTrips.ByTripId(trip.Id);

                    foreach (var stationOnTrip in stationsOnTrip)
                    {
                        trip.StantionOnTrips.Add(stationOnTrip);
                    }
                }

                result.Data.Add(data);
            }

            return(result);
        }