Esempio n. 1
0
        public async Task <FavoriteStation> GetFavoriteStation(string stationName)
        {
            var stations = await _bikeShareClient.GetStationsAsync();

            StationIdentity    stationIdentifier;
            StationCoordinates stationCoordinates;

            try
            {
                stationIdentifier = new StationIdentity(
                    stations.First(s => s.Name.ToLower().Equals(stationName.ToLower())).Name,
                    stations.First(s => s.Name.ToLower().Equals(stationName.ToLower())).Id
                    );
                stationCoordinates = new StationCoordinates
                {
                    Latitude  = stations.First(s => s.Name.ToLower().Equals(stationName.ToLower())).Latitude,
                    Longitude = stations.First(s => s.Name.ToLower().Equals(stationName.ToLower())).Longitude
                };
            }
            catch (InvalidOperationException noElementException)
            {
                if (!stationName.Equals(_defaultStationName))
                {
                    return(await GetFavoriteStation(_defaultStationName));
                }
                var bikeSystemInfo = await _bikeShareClient.GetSystemInformationAsync();

                throw new ArgumentException($"Can't find {_defaultStationName} station in bikeshare-provider {bikeSystemInfo.Name} ({bikeSystemInfo.OperatorName})");
            }
            var stationsStatuses = await _bikeShareClient.GetStationsStatusAsync();

            var stationStatus = stationsStatuses.First(s => s.Id.Equals(stationIdentifier.Id));

            return(new FavoriteStation(stationIdentifier.Name, stationStatus.BikesAvailable, stationStatus.DocksAvailable, stationCoordinates));
        }
        public async Task <SystemStatus> GetAsync()
        {
            var allStations = await _bikeshareClient.GetStationsAsync();

            var stationStatuses = await _bikeshareClient.GetStationsStatusAsync();

            var systemInfo = await _bikeshareClient.GetSystemInformationAsync();

            return(new SystemStatus
            {
                SystemName = systemInfo.Name,
                SystemOperator = systemInfo.OperatorName,
                Stations = allStations.Count(),
                StationsWithAvailableBikes = stationStatuses.Count(s => s.BikesAvailable > 0),
                StationsWithAvailableLocks = stationStatuses.Count(s => s.DocksAvailable > 0),
                StationsInstalled = stationStatuses.Count(s => s.Installed),
                StationsRenting = stationStatuses.Count(s => s.Renting),
                StationsReturning = stationStatuses.Count(s => s.Returning)
            });
        }