public ConnexionzRoute(RoutePatternProjectRoute routePatternProjectRoute)
        {
            RouteNo = routePatternProjectRoute.RouteNo;

            // Some routes have multiple paths. Let's just take whichever path is longest.
            var longestPattern = routePatternProjectRoute.Destination
                                 .Select(d => d.Pattern.First())
                                 .Aggregate((p1, p2) => p1.Platform.Length > p2.Platform.Length ? p1 : p2);

            IsActive = longestPattern.Schedule == "Active";

            Polyline = EncodePolyline(GetPoints(longestPattern.Mif));

            Path = longestPattern.Platform
                   .Select(p => new ConnexionzRoutePlatform(p))
                   .Distinct(ConnexionzRoutePlatformComparer.Instance)
                   .ToList();
        }
        public ConnexionzRoute(RoutePatternProjectRoute routePatternProjectRoute)
        {
            RouteNo = routePatternProjectRoute.RouteNo;

            // Some routes have multiple paths. Let's just take whichever path is longest.
            var longestPattern = routePatternProjectRoute.Destination
                                 .Select(d => d.Pattern.First())
                                 .Aggregate((p1, p2) => p1.Platform.Length > p2.Platform.Length ? p1 : p2);

            IsActive = longestPattern.Schedule == "Active";

            Polyline = EncodePolyline(GetPoints(longestPattern.Mif));

            Path = longestPattern.Platform
                   .Select(p => new ConnexionzRoutePlatform(p))
                   .Distinct(ConnexionzRoutePlatformComparer.Instance)
                   .ToList();
        }
        public ConnexionzRoute(RoutePatternProjectRoute routePatternProjectRoute)
        {
            RouteNo = routePatternProjectRoute.RouteNo;

            var longestPattern = routePatternProjectRoute.Destination
                                 .Select(d => d.Pattern)
                                 .Aggregate((p1, p2) => p1.Platform.Length > p2.Platform.Length ? p1 : p2);

            IsActive = longestPattern.Schedule == "Active";

            Polyline = EncodePolyline(GetPoints(longestPattern.Mif));

            var points = GetPoints(longestPattern.Mif);

            // TODO: get the actual data fixed
            if (RouteNo == "4")
            {
                var pointsList = points.ToList();

                // there's a weird point on philomath blvd messing up the route path. just filter it out.
                var lowestIndex = 0;
                for (var i = 1; i < pointsList.Count; i++)
                {
                    if (pointsList[i].Lat < pointsList[lowestIndex].Lat)
                    {
                        lowestIndex = i;
                    }
                }

                pointsList.RemoveAt(lowestIndex);
                points = pointsList;
            }

            Polyline = EncodePolyline(points);

            Path = longestPattern.Platform
                   .Where(p => !string.IsNullOrEmpty(p.PlatformNo))
                   .Select(p => new ConnexionzRoutePlatform(p))
                   .Distinct(ConnexionzRoutePlatformComparer.Instance)
                   .ToList();
        }