/// <summary>
        /// Можно менять только имя рейса
        /// </summary>
        public async Task <DictionaryCrudResponse> TripWithDaysCrud(DictionaryCrudRequest input)
        {
            var data = input.TripWithDays;

            if (data == null && input.IdToDelete == null)
            {
                throw new ValidationException(Error.ParserError);
            }

            var sqlR = new TripsRepository(_logger);

            if (input?.IdToDelete != null)
            {
                await sqlR.Delete((int)input.IdToDelete);

                return(new DictionaryCrudResponse {
                    IsDeleted = true, TripWithDays = data
                });
            }

            var all = await sqlR.GetAll();

            if (data?.Id == null && all.Any(x => x.Name.Equals(input.TripWithDays.Name)))
            {
                throw new ValidationException(Error.AlreadyAddWithThisName);
            }

            if (data?.Id == 0)
            {
                var item = await sqlR.Add(data);

                return(new DictionaryCrudResponse {
                    IsAdd = true, TripWithDays = item
                });
            }
            else
            {
                var item = await sqlR.Update(data);

                return(new DictionaryCrudResponse {
                    IsUpdated = true, TripWithDays = item
                });
            }
        }
        /// <summary>
        /// Добавить хуету
        /// </summary>
        public async Task <TripOnRouteWithStationsDto> AddTripOnRoute(TripOnRouteWithStationsDto input)
        {
            if (input.TripWithDateTimeStations.Id != 0)
            {
                if (!await CompareDaysFromTurnover(input))
                {
                    throw new ValidationException("Не совпадают дни графика оборота и рейса");
                }
            }

            using (var transaction = new TransactionScope(asyncFlowOption: TransactionScopeAsyncFlowOption.Enabled))
            {
                //var sqlRTripOnRoute = new TripsOnRouteRepository(_logger);
                var sqlRTrip          = new TripsRepository(_logger);
                var sqlRStationOnTrip = new StantionOnTripsRepository(_logger);
                var sqlRDaysOfTrip    = new DayOfTripsRepoisitory(_logger);
                var all = await sqlRTrip.GetAll();

                if (input.TripWithDateTimeStations.Id == 0 &&
                    all.Any(x => x.Name.Equals(input.TripWithDateTimeStations.Name)))
                {
                    throw new ValidationException(Error.AlreadyAddWithThisName);
                }
                var result = new TripOnRouteWithStationsDto
                {
                    Days = new List <DayOfWeek>(),
                    TripWithDateTimeStations = new TripWithDateTimeStations
                    {
                        StantionOnTrips = new List <StantionOnTrip>(),
                        StantionOnTripsWithStringTime = new List <StationOnTripWithStringDateTime>()
                    }
                };

                if (input.TripWithDateTimeStations.Id == 0)
                {
                    var newTrip =
                        await sqlRTrip.Add(_mapper.Map <TripWithDateTimeStations, Trip>(input.TripWithDateTimeStations));

                    result.TripWithDateTimeStations.Id          = newTrip.Id;
                    result.TripWithDateTimeStations.Name        = newTrip.Name;
                    result.TripWithDateTimeStations.Description = newTrip.Description;
                    result.TripId = newTrip.Id;
                }

                foreach (var day in input.Days)
                {
                    var addedDay = await sqlRDaysOfTrip.Add(new DayOfTrip { TripId = result.TripId, Day = day });

                    result.Days.Add(addedDay.Day);
                }

                foreach (var item in input.TripWithDateTimeStations.StantionOnTripsWithStringTime)
                {
                    var toAdd = _mapper.Map <StationOnTripWithStringDateTime, StantionOnTrip>(item);
                    if (toAdd.InTime > toAdd.OutTime)
                    {
                        throw new ValidationException(Error.IncorrectTimeRange);
                    }
                    toAdd.TripId = result.TripWithDateTimeStations.Id;
                    var stationOnTrip = await sqlRStationOnTrip.Add(toAdd);

                    result.TripWithDateTimeStations.StantionOnTripsWithStringTime.Add(
                        _mapper.Map <StantionOnTrip, StationOnTripWithStringDateTime>(stationOnTrip));
                }

                //await CheckTimelineUsing(input.RouteId, input.TripId);

                transaction.Complete();
                return(result);
            }
        }