public static SearchResultsDTO Failure(string errorMessage)
    {
        var results = new SearchResultsDTO
        {
            ErrorMessage = errorMessage
        };

        return(results);
    }
    public static SearchResultsDTO Success(ICollection <SearchResultDTO> results)
    {
        var results = new SearchResultsDTO
        {
            IsSuccessful = true,
            Results      = results
        };

        return(results);
    }
        public static SearchResultsDTO FindPath(SearchDTO search)
        {
            try
            {
                var result = new SearchResultsDTO();

                if (!ValidateSearch(search))
                {
                    return(result);
                }

                if (search.IsRoundAbout)
                {
                    var oneWaySearch = SearchDTO.FromDTO(search);

                    var roundWaySearch = new RedisSearch()
                    {
                        NumberOfCards    = search.NumberOfCards,
                        ArrivalStationId = search.TakeOfStationId,
                        TakeOfStationId  = search.ArrivalStationId,
                        TakeOfDate       = search.TakeOfDateRoundAbout,
                        ArrivalDate      = search.ArrivalDateRoundAbout,
                        MaxCardPrice     = search.MaxCardPrice,
                        RideTypes        = search.RideTypes
                    };

                    var resultOneWay   = GetTripsInPath(oneWaySearch);
                    var resultRoundWay = GetTripsInPath(roundWaySearch);

                    result.OneWayTrip     = resultOneWay;
                    result.RoundAboutTrip = resultRoundWay;
                }
                else
                {
                    var oneWaySearch = SearchDTO.FromDTO(search);
                    var resultOneWay = GetTripsInPath(oneWaySearch);

                    result.OneWayTrip = resultOneWay;
                }

                return(result);
            }
            catch (Exception e)
            {
                return(new SearchResultsDTO());
            }
        }