diff --git a/.vsspell b/.vsspell
new file mode 100644
index 0000000..4de3b8d
--- /dev/null
+++ b/.vsspell
@@ -0,0 +1,17 @@
+
+
+
+ True
+
+ .\\
+
+
+ True
+
+ True
+ IgnoredWords.dic
+ True
+ True
+ True
+
\ No newline at end of file
diff --git a/IgnoredWords.dic b/IgnoredWords.dic
new file mode 100644
index 0000000..dd9ac93
--- /dev/null
+++ b/IgnoredWords.dic
@@ -0,0 +1,11 @@
+cts
+Darmstadt
+enum
+Freiburg
+haveltec
+javaminister
+konrad
+Mein
+sharee
+tink
+xdoc
diff --git a/LastenradBayern/TINK.Android/Properties/AndroidManifest.xml b/LastenradBayern/TINK.Android/Properties/AndroidManifest.xml
index 6aecb5c..56cc448 100644
--- a/LastenradBayern/TINK.Android/Properties/AndroidManifest.xml
+++ b/LastenradBayern/TINK.Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/LastenradBayern/TINK.iOS/Info.plist b/LastenradBayern/TINK.iOS/Info.plist
index d39ac4d..82e88d6 100644
--- a/LastenradBayern/TINK.iOS/Info.plist
+++ b/LastenradBayern/TINK.iOS/Info.plist
@@ -56,8 +56,8 @@
CFBundleDisplayNameLastenradBayernCFBundleVersion
- 362
+ 363CFBundleShortVersionString
- 3.0.362
+ 3.0.363
diff --git a/LastenradBayern/TINK/View/Contact/ContactPage.xaml b/LastenradBayern/TINK/View/Contact/ContactPage.xaml
index c3abaeb..7cce371 100644
--- a/LastenradBayern/TINK/View/Contact/ContactPage.xaml
+++ b/LastenradBayern/TINK/View/Contact/ContactPage.xaml
@@ -66,7 +66,7 @@
-
+
+
+
+
+ Grid.RowSpan="2"
+ Spacing="0"
+ HorizontalOptions="End"
+ VerticalOptions="End"
+ IsVisible="{Binding AaRideType}">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+ Text="{Binding ButtonText}"
+ IsVisible="{Binding IsButtonVisible}"
+ Command="{Binding OnButtonClicked}"/>
+ Style="{StaticResource SecondaryButton}"
+ Text="{Binding LockitButtonText}"
+ IsVisible="{Binding IsLockitButtonVisible}"
+ Command="{Binding OnLockitButtonClicked}"/>
+
+ RowSpacing="0"
+ IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
@@ -115,19 +198,52 @@
+
+
+ Text= "{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
+ IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
+ Grid.Row="0"
+ FontAttributes="Bold"/>
+ Text="{Binding TariffDescription.Header}"
+ IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
+ Grid.Row="0"
+ Grid.Column="1"
+ FontAttributes="Bold"/>
+
+
+
+
+
+
+
+ Grid.Column="1"
+ Grid.ColumnSpan="2"/>
+ Grid.Column="1"
+ Grid.ColumnSpan="2"/>
+ Grid.Column="1"
+ Grid.ColumnSpan="2"/>
+ Grid.Column="1"
+ Grid.ColumnSpan="2"/>
+ Grid.Column="1"
+ Grid.ColumnSpan="2"/>
+ Grid.Column="1"
+ Grid.ColumnSpan="2"/>
+ Grid.Column="1"
+ Grid.ColumnSpan="2"/>
+ Grid.Column="1"
+ Grid.ColumnSpan="2"/>
+ Grid.Column="1"
+ Grid.ColumnSpan="2"/>
+ Grid.ColumnSpan="3"/>
+ Grid.ColumnSpan="3"/>
+ Grid.ColumnSpan="3"/>
-
+ Grid.ColumnSpan="3"/>
diff --git a/Meinkonrad/TINK/View/Contact/ContactPage.xaml b/Meinkonrad/TINK/View/Contact/ContactPage.xaml
index b082967..783ea72 100644
--- a/Meinkonrad/TINK/View/Contact/ContactPage.xaml
+++ b/Meinkonrad/TINK/View/Contact/ContactPage.xaml
@@ -1,4 +1,4 @@
-
+
-
+
\ No newline at end of file
+
diff --git a/Meinkonrad/TINK/View/FeedbackPopup.xaml.cs b/Meinkonrad/TINK/View/FeedbackPopup.xaml.cs
index c5b1ae3..9ad4c42 100644
--- a/Meinkonrad/TINK/View/FeedbackPopup.xaml.cs
+++ b/Meinkonrad/TINK/View/FeedbackPopup.xaml.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
using Xamarin.CommunityToolkit.UI.Views;
using Xamarin.Forms.Xaml;
@@ -70,7 +70,7 @@ namespace TINK.View
#endif
{
///
- /// Holds the current chargeing level of the battery entered by user in bars, null if unkonwn.
+ /// Holds the current charging level of the battery entered by user in bars, null if unknown.
///
public int? CurrentChargeBars { get; set; }
@@ -88,4 +88,4 @@ namespace TINK.View
public string Message { get; set; }
}
}
-}
\ No newline at end of file
+}
diff --git a/Meinkonrad/TINK/View/MyBikes/MyBikesPage.xaml.cs b/Meinkonrad/TINK/View/MyBikes/MyBikesPage.xaml.cs
index 0efb430..75c265c 100644
--- a/Meinkonrad/TINK/View/MyBikes/MyBikesPage.xaml.cs
+++ b/Meinkonrad/TINK/View/MyBikes/MyBikesPage.xaml.cs
@@ -100,7 +100,7 @@ namespace TINK.View.MyBikes
{
if (m_oViewModel == null)
{
- // View model might be null (Example: Occured when page to querry for location permissions was opened)
+ // View model might be null (Example: Occured when page to query for location permissions was opened)
return;
}
diff --git a/Meinkonrad/TINK/View/RootFlyout/RootPage.xaml.cs b/Meinkonrad/TINK/View/RootFlyout/RootPage.xaml.cs
index 7a0ecd0..ba4cbdb 100644
--- a/Meinkonrad/TINK/View/RootFlyout/RootPage.xaml.cs
+++ b/Meinkonrad/TINK/View/RootFlyout/RootPage.xaml.cs
@@ -1,5 +1,5 @@
-using System;
-using TINK.Model.Station;
+using System;
+using TINK.Model.Stations;
#if USEFLYOUT
using TINK.View.MasterDetail;
#endif
@@ -9,12 +9,12 @@ using Xamarin.Forms.Xaml;
namespace TINK.View.Root
{
///
- /// Mamages creation of detail pages if a flyout page menu entry is selected.
+ /// Manages creation of detail pages if a flyout page menu entry is selected.
/// Exposes flyout page style navigation which is used by detail pages.
///
///
/// Examples of use cases when detail pages do navigation:
- // - switch to map page after succesfully logging in/ logging out
+ // - switch to map page after successfully logging in/ logging out
// - switch to login page form bikes at station page if not yet logged in
///
[XamlCompilation(XamlCompilationOptions.Compile)]
@@ -29,7 +29,7 @@ namespace TINK.View.Root
InitializeComponent();
FlyoutPage.ListView.ItemSelected += OnListViewItemSelected;
- // Any type of split behaviour conflics with map shifting functionality (assuming FlyoutPage behaves same like MasterDetailPage).
+ // Any type of split behavior conflics with map shifting functionality (assuming FlyoutPage behaves same like MasterDetailPage).
FlyoutLayoutBehavior = FlyoutLayoutBehavior.Popover;
var navigationPage = Detail as NavigationPage;
@@ -62,7 +62,7 @@ namespace TINK.View.Root
}
// Set selected station to new
- App.ModelRoot.SelectedStation = new NullStation();
+ App.ModelRoot.SelectedStation = new TINK.Model.Stations.StationNS.NullStation();
ShowPage(item.TargetType, item.Title);
@@ -92,4 +92,4 @@ namespace TINK.View.Root
Detail = new NavigationPage(page);
}
}
-}
\ No newline at end of file
+}
diff --git a/TINK.sln b/TINK.sln
index c5ebbf7..1e70058 100644
--- a/TINK.sln
+++ b/TINK.sln
@@ -46,6 +46,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D5B69C6F-3413-4773-923E-21A65B21C3A3}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
+ .vsspell = .vsspell
EndProjectSection
EndProject
Global
diff --git a/TINK/TINK.Android/Properties/AndroidManifest.xml b/TINK/TINK.Android/Properties/AndroidManifest.xml
index ca461f2..b17954c 100644
--- a/TINK/TINK.Android/Properties/AndroidManifest.xml
+++ b/TINK/TINK.Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/TINK/TINK.iOS/Info.plist b/TINK/TINK.iOS/Info.plist
index ee4f0ee..dd82d2a 100644
--- a/TINK/TINK.iOS/Info.plist
+++ b/TINK/TINK.iOS/Info.plist
@@ -56,8 +56,8 @@
CFBundleDisplayNamesharee.bikeCFBundleVersion
- 362
+ 363CFBundleShortVersionString
- 3.0.362
+ 3.0.363
diff --git a/TINK/TINK/App.xaml b/TINK/TINK/App.xaml
index 0aec9a0..fe81277 100644
--- a/TINK/TINK/App.xaml
+++ b/TINK/TINK/App.xaml
@@ -32,7 +32,11 @@
-
+
+
+
+
+
diff --git a/TINK/TINK/View/Bike/ILockItBike.xaml b/TINK/TINK/View/Bike/ILockItBike.xaml
index 9dce76b..da523ad 100644
--- a/TINK/TINK/View/Bike/ILockItBike.xaml
+++ b/TINK/TINK/View/Bike/ILockItBike.xaml
@@ -25,77 +25,158 @@
Orientation="Vertical"
Padding="10">
-
-
+
+ RowDefinitions="Auto,Auto,Auto">
-
+
+ Grid.Column="0"
+ Grid.Row="0"
+ Grid.RowSpan="2"
+ VerticalOptions="End"
+ Source="{Binding DisplayedBikeImageSourceString}"
+ HeightRequest="60"
+ Aspect="AspectFit"/>
-
+
+ Grid.Column="1"
+ Grid.Row="0"
+ Grid.RowSpan="2"
+ VerticalOptions="End"
+ Current="{Binding CurrentChargeBars}"
+ Maximum="{Binding MaxChargeBars}"
+ IsVisible="{Binding IsBatteryChargeVisible}"/>
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
@@ -113,59 +194,58 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
+ FontAttributes="Bold"/>
+
+
+
+
+
+
diff --git a/TINK/TINK/View/Contact/ContactPage.xaml b/TINK/TINK/View/Contact/ContactPage.xaml
index 78237ef..a5a0036 100644
--- a/TINK/TINK/View/Contact/ContactPage.xaml
+++ b/TINK/TINK/View/Contact/ContactPage.xaml
@@ -1,4 +1,4 @@
-
+
-
+
\ No newline at end of file
+
diff --git a/TINK/TINK/View/FeedbackPopup.xaml.cs b/TINK/TINK/View/FeedbackPopup.xaml.cs
index 2c73611..bd1b32f 100644
--- a/TINK/TINK/View/FeedbackPopup.xaml.cs
+++ b/TINK/TINK/View/FeedbackPopup.xaml.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
using Xamarin.CommunityToolkit.UI.Views;
using Xamarin.Forms.Xaml;
@@ -69,7 +69,7 @@ namespace TINK.View
#endif
{
///
- /// Holds the current chargeing level of the battery entered by user in bars, null if unkonwn.
+ /// Holds the current charging level of the battery entered by user in bars, null if unknown.
///
public int? CurrentChargeBars { get; set; }
@@ -87,4 +87,4 @@ namespace TINK.View
public string Message { get; set; }
}
}
-}
\ No newline at end of file
+}
diff --git a/TINK/TINK/View/MyBikes/MyBikesPage.xaml.cs b/TINK/TINK/View/MyBikes/MyBikesPage.xaml.cs
index 0efb430..75c265c 100644
--- a/TINK/TINK/View/MyBikes/MyBikesPage.xaml.cs
+++ b/TINK/TINK/View/MyBikes/MyBikesPage.xaml.cs
@@ -100,7 +100,7 @@ namespace TINK.View.MyBikes
{
if (m_oViewModel == null)
{
- // View model might be null (Example: Occured when page to querry for location permissions was opened)
+ // View model might be null (Example: Occured when page to query for location permissions was opened)
return;
}
diff --git a/TINK/TINK/View/RootFlyout/RootPage.xaml.cs b/TINK/TINK/View/RootFlyout/RootPage.xaml.cs
index 7a0ecd0..ba4cbdb 100644
--- a/TINK/TINK/View/RootFlyout/RootPage.xaml.cs
+++ b/TINK/TINK/View/RootFlyout/RootPage.xaml.cs
@@ -1,5 +1,5 @@
-using System;
-using TINK.Model.Station;
+using System;
+using TINK.Model.Stations;
#if USEFLYOUT
using TINK.View.MasterDetail;
#endif
@@ -9,12 +9,12 @@ using Xamarin.Forms.Xaml;
namespace TINK.View.Root
{
///
- /// Mamages creation of detail pages if a flyout page menu entry is selected.
+ /// Manages creation of detail pages if a flyout page menu entry is selected.
/// Exposes flyout page style navigation which is used by detail pages.
///
///
/// Examples of use cases when detail pages do navigation:
- // - switch to map page after succesfully logging in/ logging out
+ // - switch to map page after successfully logging in/ logging out
// - switch to login page form bikes at station page if not yet logged in
///
[XamlCompilation(XamlCompilationOptions.Compile)]
@@ -29,7 +29,7 @@ namespace TINK.View.Root
InitializeComponent();
FlyoutPage.ListView.ItemSelected += OnListViewItemSelected;
- // Any type of split behaviour conflics with map shifting functionality (assuming FlyoutPage behaves same like MasterDetailPage).
+ // Any type of split behavior conflics with map shifting functionality (assuming FlyoutPage behaves same like MasterDetailPage).
FlyoutLayoutBehavior = FlyoutLayoutBehavior.Popover;
var navigationPage = Detail as NavigationPage;
@@ -62,7 +62,7 @@ namespace TINK.View.Root
}
// Set selected station to new
- App.ModelRoot.SelectedStation = new NullStation();
+ App.ModelRoot.SelectedStation = new TINK.Model.Stations.StationNS.NullStation();
ShowPage(item.TargetType, item.Title);
@@ -92,4 +92,4 @@ namespace TINK.View.Root
Detail = new NavigationPage(page);
}
}
-}
\ No newline at end of file
+}
diff --git a/TINKLib/Model/Bikes/BikeCollectionMutable.cs b/TINKLib/Model/Bikes/BikeCollectionMutable.cs
index 58279e3..8561dd1 100644
--- a/TINKLib/Model/Bikes/BikeCollectionMutable.cs
+++ b/TINKLib/Model/Bikes/BikeCollectionMutable.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Serilog;
-using TINK.Model.Station;
+using TINK.Model.Stations.StationNS;
using BikeInfo = TINK.Model.Bikes.BikeInfoNS.BC.BikeInfo;
using BikeInfoMutable = TINK.Model.Bikes.BikeInfoNS.BC.BikeInfoMutable;
@@ -25,7 +25,7 @@ namespace TINK.Model.Bikes
///
/// Object holding bikes info from copri to update from. Holds station id but not station name.
/// All stations to get station names from.
- /// Provices date time information.
+ /// Provides date time information.
public void Update(
IEnumerable bikesAll,
IEnumerable stations)
@@ -74,18 +74,18 @@ namespace TINK.Model.Bikes
}
///
- /// Adds a new bike to collecion of bike.
+ /// Adds a new bike to collection of bike.
///
/// New bike to add.
/// Thrown if bike is not unique.
public new void Add(BikeInfoMutable newBike)
{
- // Ensure that bike id of new bike is is unique
+ // Ensure that bike id of new bike is unique
foreach (BikeInfoMutable bike in Items)
{
if (bike.Id == newBike.Id)
{
- throw new Exception(string.Format("Can not add bike with {0} to collection ob bike. Id is not unnique.", newBike));
+ throw new Exception(string.Format("Can not add bike with {0} to collection ob bike. Id is not unique.", newBike));
}
}
@@ -93,7 +93,7 @@ namespace TINK.Model.Bikes
}
///
- /// Bike selected by user for regerving or cancel reservation.
+ /// Bike selected by user for reserving or cancel reservation.
///
public BikeInfoMutable SelectedBike
{
@@ -115,7 +115,7 @@ namespace TINK.Model.Bikes
=> this.FirstOrDefault(bike => bike.Id == id);
///
- /// Deteermines whether a bike by given key exists.
+ /// Determines whether a bike by given key exists.
///
/// Key to check.
/// True if bike exists.
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/BC/BikeInfo.cs b/TINKLib/Model/Bikes/BikeInfoNS/BC/BikeInfo.cs
index 7588b25..1a2fe18 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/BC/BikeInfo.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/BC/BikeInfo.cs
@@ -6,7 +6,7 @@ using TINK.Model.State;
namespace TINK.Model.Bikes.BikeInfoNS.BC
{
- public class BikeInfo : IBikeInfo
+ public abstract class BikeInfo : IBikeInfo
{
/// Default value of demo property.
public const bool DEFAULTVALUEISDEMO = false;
@@ -64,72 +64,6 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
bikeInfo.TariffDescription)
{ }
- ///
- /// Constructs a bike info object for a available bike.
- ///
- /// Specified the source of the data.
- /// Id of station where bike is located.
- /// Holds the uri of the operator or null, in case of single operator setup.
- /// Hold tariff description of bike.
- public BikeInfo(
- Bike bike,
- Drive drive,
- DataSource dataSource,
- string stationId,
- Uri operatorUri = null,
- RentalDescription tariffDescription = null,
- bool? isDemo = DEFAULTVALUEISDEMO,
- IEnumerable group = null) : this(
- new StateInfo(),
- bike,
- drive,
- dataSource,
- isDemo,
- group,
- stationId,
- operatorUri,
- tariffDescription)
- {
- }
-
- ///
- /// Constructs a bike info object for a booked bike.
- ///
- /// Specified the source of the data.
- /// Provider for current date time to calculate remainig time on demand for state of type reserved.
- /// Name of station where bike is located, null if bike is on the road.
- /// Holds the uri of the operator or null, in case of single operator setup.
- /// Hold tariff description of bike.
- /// Date time when bike was booked
- /// Mail address of user which booked bike.
- /// Booking code.
- public BikeInfo(
- Bike bike,
- Drive drive,
- DataSource dataSource,
- bool? isDemo,
- IEnumerable group,
- string currentStationId,
- Uri operatorUri,
- RentalDescription tariffDescription,
- DateTime bookedAt,
- string mailAddress,
- string code) : this(
- new StateInfo(
- bookedAt,
- mailAddress,
- code),
- bike,
- drive,
- dataSource,
- isDemo,
- group,
- currentStationId,
- operatorUri,
- tariffDescription)
- {
- }
-
/// True if device is demo device, false otherwise.
public bool IsDemo { get; }
@@ -141,7 +75,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
///
public string StationId { get; }
- /// Holds description about the tarif.
+ /// Holds description about the tariff.
public RentalDescription TariffDescription { get; }
/// Holds the rent state of the bike.
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/BC/BikeInfoMutable.cs b/TINKLib/Model/Bikes/BikeInfoNS/BC/BikeInfoMutable.cs
index f9231a1..5a5be8b 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/BC/BikeInfoMutable.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/BC/BikeInfoMutable.cs
@@ -9,7 +9,7 @@ using TINK.Model.State;
namespace TINK.Model.Bikes.BikeInfoNS.BC
{
[DataContract]
- public class BikeInfoMutable : IBikeInfoMutable, INotifyPropertyChanged
+ public abstract class BikeInfoMutable : IBikeInfoMutable, INotifyPropertyChanged
{
/// Holds the bike.
private readonly Bike _Bike;
@@ -24,7 +24,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
/// Constructs a bike.
///
/// True if device is demo device, false otherwise.
- /// Provider for current date time to calculate remainig time on demand for state of type reserved.
+ /// Provider for current date time to calculate remaining time on demand for state of type reserved.
/// Name of station where bike is located, null if bike is on the road.
/// Holds the uri of the operator or null, in case of single operator setup.
/// Hold tariff description of bike.
@@ -55,24 +55,6 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
TariffDescription = tariffDescription;
}
- /// Constructs a bike object from source.
- public BikeInfoMutable(IBikeInfo bike, string stationName) : this(
- bike != null
- ? bike.Bike
- : throw new ArgumentNullException(nameof(bike)),
- bike.Drive,
- bike.DataSource,
- bike.IsDemo,
- bike.Group,
- bike.StationId,
- stationName,
- bike.OperatorUri,
- bike.TariffDescription,
- null /* date time provider */,
- bike.State)
- {
- }
-
/// Id of station a which bike is located, null otherwise.
[DataMember]
public string StationId { get; }
@@ -81,7 +63,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
[DataMember]
public string StationName { get; }
- /// Holds description about the tarif.
+ /// Holds description about the tariff.
[DataMember]
public RentalDescription TariffDescription { get; private set; }
@@ -113,6 +95,12 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
public TypeOfBike? TypeOfBike => _Bike.TypeOfBike;
+ ///
+ /// Gets whether bike is a AA bike (bike must be always returned a the same station) or AB bike (start and end stations can be different stations).
+ ///
+ public AaRideType? AaRideType => _Bike.AaRideType;
+
+
public LockModel LockModel => _Bike.LockModel;
public string Description => _Bike.Description;
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/BC/IBikeInfoMutable.cs b/TINKLib/Model/Bikes/BikeInfoNS/BC/IBikeInfoMutable.cs
index 4d59cc9..982e25b 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/BC/IBikeInfoMutable.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/BC/IBikeInfoMutable.cs
@@ -30,6 +30,11 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
///
TypeOfBike? TypeOfBike { get; }
+ ///
+ /// Gets whether bike is a AA bike (bike must be always returned a the same station) or AB bike (start and end stations can be different stations).
+ ///
+ AaRideType? AaRideType { get; }
+
/// Gets the model of the lock.
LockModel LockModel { get; }
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/BikeNS/Bike.cs b/TINKLib/Model/Bikes/BikeInfoNS/BikeNS/Bike.cs
index fa3ca78..c7df9d4 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/BikeNS/Bike.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/BikeNS/Bike.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
namespace TINK.Model.Bikes.BikeInfoNS.BikeNS
@@ -21,12 +21,19 @@ namespace TINK.Model.Bikes.BikeInfoNS.BikeNS
City = 2,
}
+ /// Holds whether bike is a AA bike (bike must be always returned a the same station) or AB bike (start and end stations can be different stations).
+ public enum AaRideType
+ {
+ NoAaRide = 0,
+ AaRide = 1,
+ }
+
/// Holds the model of lock.
public enum LockModel
{
ILockIt, // haveltec GbmH Brandenburg, Germany bluetooth lock
- BordComputer, // Teilrad BC
- Sigo, // Sigo Gmbh Darmstadt, Germany bike lock
+ BordComputer, // TeilRad BC
+ Sigo, // Sigo GmbH Darmstadt, Germany bike lock
}
/// Holds the type of lock.
@@ -47,10 +54,12 @@ namespace TINK.Model.Bikes.BikeInfoNS.BikeNS
LockModel lockModel,
WheelType? wheelType = null,
TypeOfBike? typeOfBike = null,
+ AaRideType? aaRideType = null,
string description = null)
{
WheelType = wheelType;
TypeOfBike = typeOfBike;
+ AaRideType = aaRideType;
LockModel = lockModel;
Id = id;
Description = description;
@@ -71,6 +80,11 @@ namespace TINK.Model.Bikes.BikeInfoNS.BikeNS
///
public TypeOfBike? TypeOfBike { get; }
+ ///
+ /// Gets whether bike is a AA bike (bike must be always returned a the same station) or AB bike (start and end stations can be different stations).
+ ///
+ public AaRideType? AaRideType { get; }
+
/// Gets the model of the lock.
public LockModel LockModel { get; private set; }
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/BluetoothLock/BikeInfo.cs b/TINKLib/Model/Bikes/BikeInfoNS/BluetoothLock/BikeInfo.cs
index 0263b8b..db81549 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/BluetoothLock/BikeInfo.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/BluetoothLock/BikeInfo.cs
@@ -33,9 +33,10 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
bike != null
? new Bike(
bike.Id,
- LockModel.ILockIt /* Ensure consistend lock model value */,
+ LockModel.ILockIt /* Ensure consistent lock model value */,
bike.WheelType,
bike.TypeOfBike,
+ bike.AaRideType,
bike.Description)
: throw new ArgumentNullException(nameof(bike)),
drive,
@@ -53,7 +54,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
/// Constructs a bike info object for a requested bike.
///
/// Specified the source of the data.
- /// Provider for current date time to calculate remainig time on demand for state of type reserved.
+ /// Provider for current date time to calculate remaining time on demand for state of type reserved.
/// Id of the lock.
/// GUID specifying the lock.
/// Date time when bike was requested
@@ -61,7 +62,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
/// Name of station where bike is located, null if bike is on the road.
/// Holds the uri of the operator or null, in case of single operator setup.
/// Hold tariff description of bike.
- /// Date time provider to calculate reaining time.
+ /// Date time provider to calculate remaining time.
public BikeInfo(
Bike bike,
Drive drive,
@@ -87,9 +88,10 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
bike != null
? new Bike(
bike.Id,
- LockModel.ILockIt /* Ensure consistend lock model value */,
+ LockModel.ILockIt /* Ensure consistent lock model value */,
bike.WheelType,
bike.TypeOfBike,
+ bike.AaRideType,
bike.Description)
: throw new ArgumentNullException(nameof(bike)),
drive,
@@ -139,9 +141,10 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
bike != null
? new Bike(
bike.Id,
- LockModel.ILockIt /* Ensure consistend lock model value */,
+ LockModel.ILockIt /* Ensure consistent lock model value */,
bike.WheelType,
bike.TypeOfBike,
+ bike.AaRideType,
bike.Description)
: throw new ArgumentNullException(),
drive,
@@ -155,7 +158,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
LockInfo = new LockInfo.Builder { Id = lockId, Guid = lockGuid, UserKey = userKey, AdminKey = adminKey, Seed = seed }.Build();
}
- public BikeInfo(Model.Bikes.BikeInfoNS.BC.BikeInfo bikeInfo, LockInfo lockInfo) : base(
+ public BikeInfo(BC.BikeInfo bikeInfo, LockInfo lockInfo) : base(
bikeInfo ?? throw new ArgumentException($"Can not copy-construct {typeof(BikeInfo).Name}-object. Source bike info must not be null."))
{
LockInfo = lockInfo
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/CopriLock/BikeInfo.cs b/TINKLib/Model/Bikes/BikeInfoNS/CopriLock/BikeInfo.cs
index 5c12bb3..1092939 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/CopriLock/BikeInfo.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/CopriLock/BikeInfo.cs
@@ -38,8 +38,9 @@ namespace TINK.Model.Bikes.BikeInfoNS.CopriLock
? new Bike(
bike.Id,
LockModel.Sigo,
- bike.WheelType /* Ensure consistend lock model value */,
+ bike.WheelType /* Ensure consistent lock model value */,
bike.TypeOfBike,
+ bike.AaRideType,
bike.Description)
: throw new ArgumentNullException(nameof(bike)),
drive,
@@ -66,7 +67,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.CopriLock
/// Lock info.
/// Holds the uri of the operator or null, in case of single operator setup.
/// Hold tariff description of bike.
- /// Provider for current date time to calculate remainig time on demand for state of type reserved.
+ /// Provider for current date time to calculate remaining time on demand for state of type reserved.
public BikeInfo(
Bike bike,
Drive drive,
@@ -88,9 +89,10 @@ namespace TINK.Model.Bikes.BikeInfoNS.CopriLock
bike != null
? new Bike(
bike.Id,
- LockModel.Sigo /* Ensure consistend lock model value */,
+ LockModel.Sigo /* Ensure consistent lock model value */,
bike.WheelType,
bike.TypeOfBike,
+ bike.AaRideType,
bike.Description)
: throw new ArgumentNullException(nameof(bike)),
drive,
@@ -136,9 +138,10 @@ namespace TINK.Model.Bikes.BikeInfoNS.CopriLock
bike != null
? new Bike(
bike.Id,
- LockModel.Sigo /* Ensure consistend lock model value */,
+ LockModel.Sigo /* Ensure consistent lock model value */,
bike.WheelType,
bike.TypeOfBike,
+ bike.AaRideType,
bike.Description)
: throw new ArgumentNullException(nameof(bike)),
drive,
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/CopriLock/BikeInfoMutable.cs b/TINKLib/Model/Bikes/BikeInfoNS/CopriLock/BikeInfoMutable.cs
index 6d813bb..9896b3a 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/CopriLock/BikeInfoMutable.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/CopriLock/BikeInfoMutable.cs
@@ -35,7 +35,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.CopriLock
return;
}
- // Add a dummy querry. Querries are not yet read from COPRI but compiled into the app.
+ // Add a dummy query. Querries are not yet read from COPRI but compiled into the app.
BookingFinishedModel.MiniSurvey.Questions.Add("q1", new MiniSurvey.QuestionModel());
}
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/DriveNS/BatteryNS/Battery.cs b/TINKLib/Model/Bikes/BikeInfoNS/DriveNS/BatteryNS/Battery.cs
index dc8da99..0734581 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/DriveNS/BatteryNS/Battery.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/DriveNS/BatteryNS/Battery.cs
@@ -1,4 +1,4 @@
-using Serilog;
+using Serilog;
namespace TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS
{
@@ -12,12 +12,12 @@ namespace TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS
public double CurrentChargePercent { get; private set; } = double.NaN;
///
- /// Holds the current chargeing level of the battery in bars, null if unkonwn.
+ /// Holds the current charging level of the battery in bars, null if unknown.
///
public int? CurrentChargeBars { get; private set; } = null;
///
- /// Holds the maximum chargeing level of the battery in bars, null if unkonwn.
+ /// Holds the maximum charging level of the battery in bars, null if unknown.
///
public int? MaxChargeBars { get; private set; } = null;
@@ -34,12 +34,12 @@ namespace TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS
public class Builder
{
///
- /// Holds the current chargeing level of the battery in bars.
+ /// Holds the current charging level of the battery in bars.
///
public int? CurrentChargeBars { get; set; } = null;
///
- /// Holds the maximum chargeing level of the battery in bars.
+ /// Holds the maximum charging level of the battery in bars.
///
public int? MaxChargeBars { get; set; } = null;
@@ -83,7 +83,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS
&& MaxChargeBars == null)
{
// If current charge bars is set, max charge must be set as well.
- Log.ForContext().Error($"Current bars value can not be set to {CurrentChargeBars} if max bars is not se.");
+ Log.ForContext().Error($"Current bars value can not be set to {CurrentChargeBars} if max bars is not set.");
CurrentChargeBars = null;
}
@@ -92,7 +92,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS
&& CurrentChargeBars > MaxChargeBars)
{
// If current charge bars must never be larger than max charge bars.
- Log.ForContext().Error($"Invalid current bars value {CurrentChargeBars} detected. Value must never be largen than max value bars {MaxChargeBars}.");
+ Log.ForContext().Error($"Invalid current bars value {CurrentChargeBars} detected. Value must never be larger than max value bars {MaxChargeBars}.");
CurrentChargeBars = null;
}
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/DriveNS/BatteryNS/IBattery.cs b/TINKLib/Model/Bikes/BikeInfoNS/DriveNS/BatteryNS/IBattery.cs
index 63a62cd..1ee330d 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/DriveNS/BatteryNS/IBattery.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/DriveNS/BatteryNS/IBattery.cs
@@ -1,4 +1,4 @@
-
+
namespace TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS
{
public interface IBattery
@@ -9,12 +9,12 @@ namespace TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS
double CurrentChargePercent { get; }
///
- /// Holds the current chargeing level of the battery in bars. Must not be arger than MaxChargeBars, null if unkonwn.
+ /// Holds the current charging level of the battery in bars. Must not be larger than MaxChargeBars, null if unknown.
///
int? CurrentChargeBars { get; }
///
- /// Holds the maximum chargeing level of the battery in bars, null if unkonwn.
+ /// Holds the maximum charging level of the battery in bars, null if unknown.
///
int? MaxChargeBars { get; }
diff --git a/TINKLib/Model/Bikes/IBikeCollection.cs b/TINKLib/Model/Bikes/IBikeCollection.cs
index f8cf387..910e592 100644
--- a/TINKLib/Model/Bikes/IBikeCollection.cs
+++ b/TINKLib/Model/Bikes/IBikeCollection.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace TINK.Model.Bikes
{
@@ -12,7 +12,7 @@ namespace TINK.Model.Bikes
T GetById(string id);
///
- /// Deteermines whether a bike by given key exists.
+ /// Determines whether a bike by given key exists.
///
/// Key to check.
/// True if bike exists.
@@ -27,7 +27,7 @@ namespace TINK.Model.Bikes
void RemoveById(string id);
///
- /// Adds a new element to dictinary.
+ /// Adds a new element to dictionary.
///
/// New element to add.
void Add(T newElement);
diff --git a/TINKLib/Model/Connector/Command/ICommand.cs b/TINKLib/Model/Connector/Command/ICommand.cs
index 8098e7d..760f11a 100644
--- a/TINKLib/Model/Connector/Command/ICommand.cs
+++ b/TINKLib/Model/Connector/Command/ICommand.cs
@@ -129,7 +129,7 @@ namespace TINK.Model.Connector
string BikeId { get; }
///
- /// Holds the current chargeing level of the battery in bars, null if unkonwn.
+ /// Holds the current charging level of the battery in bars, null if unknown.
///
int? CurrentChargeBars { get; set; }
diff --git a/TINKLib/Model/Connector/Command/UserFeedbackDto.cs b/TINKLib/Model/Connector/Command/UserFeedbackDto.cs
index 0b28c78..abf9712 100644
--- a/TINKLib/Model/Connector/Command/UserFeedbackDto.cs
+++ b/TINKLib/Model/Connector/Command/UserFeedbackDto.cs
@@ -1,4 +1,4 @@
-
+
namespace TINK.Model.Connector
{
#if USCSHARP9
@@ -18,7 +18,7 @@ namespace TINK.Model.Connector
public string BikeId { get; set; }
///
- /// Holds the current chargeing level of the battery in bars, null if unkonwn.
+ /// Holds the current charging level of the battery in bars, null if unknown.
///
public int? CurrentChargeBars { get; set; }
diff --git a/TINKLib/Model/Connector/FilteredConnector.cs b/TINKLib/Model/Connector/FilteredConnector.cs
index e9d3a59..629ed29 100644
--- a/TINKLib/Model/Connector/FilteredConnector.cs
+++ b/TINKLib/Model/Connector/FilteredConnector.cs
@@ -1,17 +1,17 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using TINK.Model.Bikes;
using TINK.Model.Connector.Filter;
using TINK.Model.Services.CopriApi;
-using TINK.Model.Station;
-
+using TINK.Model.Stations;
+using TINK.Model.Stations.StationNS;
using BikeInfo = TINK.Model.Bikes.BikeInfoNS.BC.BikeInfo;
namespace TINK.Model.Connector
{
- /// Filters connector respones.
+ /// Filters connector responses.
/// Former name: Filter
public class FilteredConnector : IFilteredConnector
{
@@ -50,7 +50,7 @@ namespace TINK.Model.Connector
/// Holds the filter.
private IGroupFilter Filter { get; }
- /// Holds the reference to object which performs copry queries.
+ /// Holds the reference to object which performs copri queries.
private IQuery m_oInnerQuery;
/// Constructs a query object.
@@ -111,7 +111,7 @@ namespace TINK.Model.Connector
return bikes.Where(x => filter.DoFilter(x.Group).Count() > 0).ToDictionary(x => x.Id);
}
- /// Filter stations by broup.
+ /// Filter stations by group.
///
private static Dictionary DoFilter(StationDictionary stations, IGroupFilter filter)
{
diff --git a/TINKLib/Model/Connector/NullFilterConnector.cs b/TINKLib/Model/Connector/NullFilterConnector.cs
index 96fca26..f979858 100644
--- a/TINKLib/Model/Connector/NullFilterConnector.cs
+++ b/TINKLib/Model/Connector/NullFilterConnector.cs
@@ -1,16 +1,16 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using TINK.Model.Bikes;
using TINK.Model.Services.CopriApi;
-using TINK.Model.Station;
-
+using TINK.Model.Stations;
+using TINK.Model.Stations.StationNS;
using BikeInfo = TINK.Model.Bikes.BikeInfoNS.BC.BikeInfo;
namespace TINK.Model.Connector
{
- /// Filters connector respones.
+ /// Filters connector responses.
public class NullFilterConnector : IFilteredConnector
{
/// Constructs a filter object.
@@ -44,7 +44,7 @@ namespace TINK.Model.Connector
/// Object to perform filtered queries.
private class QueryProvider : IQuery
{
- /// Holds the reference to object which performs copry queries.
+ /// Holds the reference to object which performs copri queries.
private IQuery m_oInnerQuery;
/// Constructs a query object.
@@ -100,7 +100,7 @@ namespace TINK.Model.Connector
return bikes.Where(x => x.Group.Intersect(filter).Count() > 0).ToDictionary(x => x.Id);
}
- /// Filter stations by broup.
+ /// Filter stations by group.
///
public static Dictionary DoFilter(StationDictionary stations, IEnumerable p_oFilter)
{
diff --git a/TINKLib/Model/Connector/Query/CachedQuery.cs b/TINKLib/Model/Connector/Query/CachedQuery.cs
index 2c0e631..68ce6d5 100644
--- a/TINKLib/Model/Connector/Query/CachedQuery.cs
+++ b/TINKLib/Model/Connector/Query/CachedQuery.cs
@@ -29,7 +29,7 @@ namespace TINK.Model.Connector
}
}
- /// Gets all stations including postions and bikes.
+ /// Gets all stations including positions and bikes.
public async Task> GetBikesAndStationsAsync()
{
var resultStations = await server.GetStations();
@@ -73,7 +73,7 @@ namespace TINK.Model.Connector
/// Collection of bikes.
public async Task> GetBikesOccupiedAsync()
{
- Log.ForContext().Error("Unexpected call to get be bikes occpied detected. No user is logged in.");
+ Log.ForContext().Error("Unexpected call to get be bikes occupied detected. No user is logged in.");
return new Result(
typeof(CopriCallsMonkeyStore),
diff --git a/TINKLib/Model/Connector/Query/CachedQueryLoggedIn.cs b/TINKLib/Model/Connector/Query/CachedQueryLoggedIn.cs
index 8b8d87b..c9d3611 100644
--- a/TINKLib/Model/Connector/Query/CachedQueryLoggedIn.cs
+++ b/TINKLib/Model/Connector/Query/CachedQueryLoggedIn.cs
@@ -29,7 +29,7 @@ namespace TINK.Model.Connector
}
}
- /// Gets all stations including postions.
+ /// Gets all stations including positions.
public async Task> GetBikesAndStationsAsync()
{
var stationsResponse = await Server.GetStations();
diff --git a/TINKLib/Model/Connector/Query/IQuery.cs b/TINKLib/Model/Connector/Query/IQuery.cs
index 6ca9013..40b8987 100644
--- a/TINKLib/Model/Connector/Query/IQuery.cs
+++ b/TINKLib/Model/Connector/Query/IQuery.cs
@@ -1,4 +1,4 @@
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using TINK.Model.Bikes;
using TINK.Model.Services.CopriApi;
@@ -6,7 +6,7 @@ namespace TINK.Model.Connector
{
public interface IQuery
{
- /// Gets all stations including postions.
+ /// Gets all stations including positions.
Task> GetBikesAndStationsAsync();
/// Gets bikes occupied is a user is logged in.
diff --git a/TINKLib/Model/Connector/Query/Query.cs b/TINKLib/Model/Connector/Query/Query.cs
index b517df4..985d9c8 100644
--- a/TINKLib/Model/Connector/Query/Query.cs
+++ b/TINKLib/Model/Connector/Query/Query.cs
@@ -28,7 +28,7 @@ namespace TINK.Model.Connector
}
}
- /// Gets all stations including postions.
+ /// Gets all stations including positions.
public async Task> GetBikesAndStationsAsync()
{
var stationsAllResponse = await server.GetStationsAsync();
@@ -44,7 +44,7 @@ namespace TINK.Model.Connector
/// Collection of bikes.
public async Task> GetBikesOccupiedAsync()
{
- Log.ForContext().Error("Unexpected call to get be bikes occpied detected. No user is logged in.");
+ Log.ForContext().Error("Unexpected call to get be bikes occupied detected. No user is logged in.");
return new Result(
typeof(CopriCallsMonkeyStore),
await Task.FromResult(new BikeCollection(new Dictionary())),
diff --git a/TINKLib/Model/Connector/Query/QueryLoggedIn.cs b/TINKLib/Model/Connector/Query/QueryLoggedIn.cs
index 871d1c1..0cb3749 100644
--- a/TINKLib/Model/Connector/Query/QueryLoggedIn.cs
+++ b/TINKLib/Model/Connector/Query/QueryLoggedIn.cs
@@ -30,7 +30,7 @@ namespace TINK.Model.Connector
server = copriServer as ICopriServer;
}
- /// Gets all stations including postions.
+ /// Gets all stations including positions.
public async Task> GetBikesAndStationsAsync()
{
var stationResponse = await server.GetStationsAsync();
diff --git a/TINKLib/Model/Connector/TextToTypeHelper.cs b/TINKLib/Model/Connector/TextToTypeHelper.cs
index e577e59..eb56b6f 100644
--- a/TINKLib/Model/Connector/TextToTypeHelper.cs
+++ b/TINKLib/Model/Connector/TextToTypeHelper.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -9,6 +9,7 @@ using TINK.Model.Services.CopriApi.ServerUris;
using TINK.Model.State;
using TINK.Repository.Exception;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations.Station;
namespace TINK.Model.Connector
{
@@ -26,7 +27,7 @@ namespace TINK.Model.Connector
///
/// Object to get information from.
/// Position information.
- public static IPosition GetPosition(this StationsAvailableResponse.StationInfo stationInfo)
+ public static IPosition GetPosition(this StationInfo stationInfo)
=> GetPosition(stationInfo.gps);
/// Gets the position from StationInfo object.
@@ -52,14 +53,14 @@ namespace TINK.Model.Connector
if (group == null || group.Length == 0)
{
// If not logged in stations groups are empty form COPRI version v4.1.
- Log.Debug("Can not get goup form string. Group text can not be null.");
+ Log.Debug("Can not get group form string. Group text can not be null.");
return new List();
}
return new HashSet(group).ToList();
}
- /// Gets if user acknowldged ags or not.
+ /// Gets if user acknowledged AGBs or not.
/// Object to get information from.
/// Position information.
public static bool GetIsAgbAcknowledged(this AuthorizationResponse authorizationResponse)
@@ -77,7 +78,7 @@ namespace TINK.Model.Connector
/// Gets the position from StationInfo object.
/// Object to get information from.
/// Position information.
- public static IEnumerable GetGroup(this StationsAvailableResponse.StationInfo stationInfo)
+ public static IEnumerable GetGroup(this StationInfo stationInfo)
{
try
{
@@ -297,8 +298,19 @@ namespace TINK.Model.Connector
? typeOfBike
: (TypeOfBike?)null;
+ ///
+ /// Gets whether bike is a AA bike (bike must be always returned a the same station) or AB bike (start and end stations can be different stations).
+ ///
+ /// Object to get AA info from.
+ /// AA info.
+ public static AaRideType? GetAaRideType(this BikeInfoBase bikeInfo)
+ => Enum.TryParse(bikeInfo?.aa_ride, true, out AaRideType aaRide)
+ ? aaRide
+ : (AaRideType?)null;
+
+
/// Get position from a ,- separated string.
- /// Text to extract positon from.
+ /// Text to extract position from.
/// Position object.
public static IPosition GetPosition(Repository.Response.Position gps)
=> PositionFactory.Create(
@@ -306,7 +318,7 @@ namespace TINK.Model.Connector
double.TryParse(gps?.longitude, NumberStyles.Float, CultureInfo.InvariantCulture, out double longitude) ? longitude : double.NaN);
/// Get position from a ,- separated string.
- /// Text to extract positon from.
+ /// Text to extract position from.
/// Position object.
public static Map.IMapSpan GetMapSpan(this MapSpan mapSpan)
=> Map.MapSpanFactory.Create(
@@ -343,7 +355,7 @@ namespace TINK.Model.Connector
/// Gets the operator Uri from response.
///
/// Response to get uri from.
- /// Operatore Uri
+ /// Operator Uri
public static Uri GetOperatorUri(this BikeInfoBase bikeInfo)
{
return bikeInfo?.uri_operator != null && !string.IsNullOrEmpty(bikeInfo?.uri_operator)
@@ -351,7 +363,7 @@ namespace TINK.Model.Connector
: null;
}
- /// Tries to get the copriversion from response.
+ /// Tries to get the copri version from response.
/// Response to get version info from.
/// COPRI version
public static bool TryGetCopriVersion(this CopriVersion response, out Version copriVersion)
@@ -362,7 +374,7 @@ namespace TINK.Model.Connector
&& Version.TryParse(response.copri_version, out copriVersion);
}
- /// Gets the copriversion from.
+ /// Gets the copri version from.
/// Response to get version info from.
/// COPRI version
public static Version GetCopriVersion(this CopriVersion response)
diff --git a/TINKLib/Model/Connector/Updater/BikeInfoFactory.cs b/TINKLib/Model/Connector/Updater/BikeInfoFactory.cs
index cc85858..fba4800 100644
--- a/TINKLib/Model/Connector/Updater/BikeInfoFactory.cs
+++ b/TINKLib/Model/Connector/Updater/BikeInfoFactory.cs
@@ -7,7 +7,6 @@ using TINK.Model.MiniSurvey;
using TINK.Model.State;
using TINK.Repository.Response;
using BikeExtension = TINK.Model.Bikes.BikeInfoNS.BikeNS.BikeExtension;
-using BikeInfo = TINK.Model.Bikes.BikeInfoNS.BC.BikeInfo;
namespace TINK.Model.Connector.Updater
{
@@ -63,7 +62,7 @@ namespace TINK.Model.Connector.Updater
var lockType = lockModel.HasValue
? BikeExtension.GetLockType(lockModel.Value)
- : BikeExtension.GetLockType(DEFAULTLOCKMODEL); // Map bikes without "system"- entry in response to backend- locks.
+ : BikeExtension.GetLockType(DEFAULTLOCKMODEL); // Map bikes without "system"- entry in response to back end- locks.
try
{
@@ -76,6 +75,7 @@ namespace TINK.Model.Connector.Updater
LockModel.Sigo,
bikeInfo.GetWheelType(),
bikeInfo.GetTypeOfBike(),
+ bikeInfo.GetAaRideType(),
bikeInfo.description),
DriveFactory.Create(bikeInfo?.bike_type),
dataSource,
@@ -94,7 +94,7 @@ namespace TINK.Model.Connector.Updater
bikeInfo.GetGroup(),
miniSurvey: bikeInfo.user_miniquery != null
? new MiniSurveyModel(new Dictionary {
- { "q1", new QuestionModel()} // Add a dummy querry. Querries are not yet read from COPRI but compiled into the app.
+ { "q1", new QuestionModel()} // Add a dummy query. Queries are not yet read from COPRI but compiled into the app.
})
: new MiniSurveyModel(),
co2Saving: bikeInfo.co2saving);
@@ -106,6 +106,7 @@ namespace TINK.Model.Connector.Updater
LockModel.ILockIt,
bikeInfo.GetWheelType(),
bikeInfo.GetTypeOfBike(),
+ bikeInfo.GetAaRideType(),
bikeInfo.description),
DriveFactory.Create(bikeInfo?.bike_type),
dataSource,
@@ -129,7 +130,7 @@ namespace TINK.Model.Connector.Updater
}
catch (ArgumentException ex)
{
- // Contructor reported invalid arguemts (missing lock id, ....).
+ // Constructor reported invalid arguments (missing lock id, ....).
Log.Error($"Can not create new {nameof(BikeInfo)}-object from {nameof(BikeInfoAvailable)} argument. Invalid response detected. Available bike with id {bikeInfo.bike} skipped. {ex.Message}");
return null;
}
@@ -184,6 +185,7 @@ namespace TINK.Model.Connector.Updater
LockModel.ILockIt,
bikeInfo.GetWheelType(),
bikeInfo.GetTypeOfBike(),
+ bikeInfo.GetAaRideType(),
bikeInfo.description),
DriveFactory.Create(bikeInfo?.bike_type),
dataSource,
@@ -214,6 +216,7 @@ namespace TINK.Model.Connector.Updater
LockModel.Sigo,
bikeInfo.GetWheelType(),
bikeInfo.GetTypeOfBike(),
+ bikeInfo.GetAaRideType(),
bikeInfo.description),
DriveFactory.Create(bikeInfo?.bike_type),
dataSource,
@@ -238,7 +241,7 @@ namespace TINK.Model.Connector.Updater
}
catch (ArgumentException ex)
{
- // Contructor reported invalid arguemts (missing lock id, ....).
+ // Constructor reported invalid arguments (missing lock id, ....).
Log.Error($"Can not create new {nameof(BikeInfo)}-object from {nameof(BikeInfoReservedOrBooked)} argument. Invalid response detected. Reserved bike with id {bikeInfo.bike} skipped. {ex.Message}");
return null;
}
@@ -255,6 +258,7 @@ namespace TINK.Model.Connector.Updater
LockModel.ILockIt,
bikeInfo.GetWheelType(),
bikeInfo.GetTypeOfBike(),
+ bikeInfo.GetAaRideType(),
bikeInfo.description),
DriveFactory.Create(bikeInfo?.bike_type),
dataSource,
@@ -278,29 +282,8 @@ namespace TINK.Model.Connector.Updater
bikeInfo.GetGroup());
case LockModel.BordComputer:
- return new BikeInfo(
- new Bike(
- bikeInfo.bike,
- LockModel.BordComputer,
- bikeInfo.GetWheelType(),
- bikeInfo.GetTypeOfBike(),
- bikeInfo.description),
- DriveFactory.Create(bikeInfo?.bike_type),
- dataSource,
- bikeInfo.GetIsDemo(),
- bikeInfo.GetGroup(),
- bikeInfo.station,
- bikeInfo.GetOperatorUri(),
-#if !NOTARIFFDESCRIPTION
- bikeInfo.rental_description != null
- ? RentalDescriptionFactory.Create(bikeInfo.rental_description)
- : TariffDescriptionFactory.Create(bikeInfo.tariff_description),
-#else
- Create((TINK.Repository.Response.TariffDescription)null),
-#endif
- bikeInfo.GetFrom(),
- mailAddress,
- bikeInfo.timeCode);
+ throw new NotSupportedException($"Bikes with lock model of type {lockModel} are no more supported.");
+
default:
return new Bikes.BikeInfoNS.CopriLock.BikeInfo(
new Bike(
@@ -308,6 +291,7 @@ namespace TINK.Model.Connector.Updater
LockModel.Sigo,
bikeInfo.GetWheelType(),
bikeInfo.GetTypeOfBike(),
+ bikeInfo.GetAaRideType(),
bikeInfo.description),
DriveFactory.Create(bikeInfo?.bike_type),
DataSource.Copri,
diff --git a/TINKLib/Model/Connector/Updater/UpdaterJSON.cs b/TINKLib/Model/Connector/Updater/UpdaterJSON.cs
index 7fbcf35..1f07055 100644
--- a/TINKLib/Model/Connector/Updater/UpdaterJSON.cs
+++ b/TINKLib/Model/Connector/Updater/UpdaterJSON.cs
@@ -1,17 +1,14 @@
using System;
-using System.Collections.Generic;
-using Serilog;
-using TINK.Model.Bikes;
using TINK.Model.Bikes.BikeInfoNS.BC;
using TINK.Model.State;
-using TINK.Model.Station;
-using TINK.Model.Station.Operator;
+using TINK.Model.Stations;
+using TINK.Model.Stations.StationNS.Operator;
using TINK.Model.User.Account;
using TINK.Repository.Exception;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
using TINK.Services.CopriApi;
using Xamarin.Forms;
-using BikeInfo = TINK.Model.Bikes.BikeInfoNS.BC.BikeInfo;
using IBikeInfoMutable = TINK.Model.Bikes.BikeInfoNS.BC.IBikeInfoMutable;
namespace TINK.Model.Connector.Updater
@@ -31,7 +28,7 @@ namespace TINK.Model.Connector.Updater
=> bike.State.Load(InUseStateEnum.Disposable, notifyLevel: notifyLevel);
///
- /// Gets all statsion for station provider and add them into station list.
+ /// Gets all station for station provider and add them into station list.
///
/// List of stations to update.
public static StationDictionary GetStationsAllMutable(this StationsAvailableResponse stationsAllResponse)
@@ -57,7 +54,7 @@ namespace TINK.Model.Connector.Updater
string.Format("Station id {0} is not unique.", station.Value.station), stationsAllResponse);
}
- stations.Add(new Station.Station(
+ stations.Add(new Stations.StationNS.Station(
station.Value.station,
station.Value.GetGroup(),
station.Value.GetPosition(),
@@ -89,7 +86,7 @@ namespace TINK.Model.Connector.Updater
new ResourceUrls(response.tariff_info_html, response.bike_info_html, response.agb_html, response.privacy_html, response.impress_html));
/// Gets account object from login response.
- /// Needed to extract cookie from autorization response.
+ /// Needed to extract cookie from authorization response.
/// Response to get session cookie and debug level from.
/// Mail address needed to construct a complete account object (is not part of response).
/// Password needed to construct a complete account object (is not part of response).
diff --git a/TINKLib/Model/GroupFilterHelper.cs b/TINKLib/Model/GroupFilterHelper.cs
index caad842..1c9a7db 100644
--- a/TINKLib/Model/GroupFilterHelper.cs
+++ b/TINKLib/Model/GroupFilterHelper.cs
@@ -1,11 +1,11 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using TINK.Model.Connector;
using TINK.ViewModel.Map;
using TINK.ViewModel.Settings;
namespace TINK.Model
{
- /// Holds collecion of filters to filter options (TINK, Konrad, ....).
+ /// Holds collection of filters to filter options (TINK, Konrad, ....).
/// Former name: FilterCollection.
public static class GroupFilterHelper
{
diff --git a/TINKLib/Model/ITinkApp.cs b/TINKLib/Model/ITinkApp.cs
index 53d3173..5e43e0f 100644
--- a/TINKLib/Model/ITinkApp.cs
+++ b/TINKLib/Model/ITinkApp.cs
@@ -7,7 +7,7 @@ using TINK.Model.Connector;
using TINK.Model.Device;
using TINK.Model.Services.CopriApi.ServerUris;
using TINK.Model.Settings;
-using TINK.Model.Station;
+using TINK.Model.Stations.StationNS;
using TINK.Services;
using TINK.Services.BluetoothLock;
using TINK.Settings;
@@ -46,15 +46,15 @@ namespace TINK.Model
/// Name of the station which is selected.
IStation SelectedStation { get; set; }
- /// Polling periode.
+ /// Polling period.
PollingParameters Polling { get; set; }
TimeSpan ExpiresAfter { get; set; }
- /// Holds status about whants new page.
+ /// Holds status about whats new page.
WhatsNew WhatsNew { get; }
- /// Gets whether device is connected to internet or not.
+ /// Gets whether device is connected to Internet or not.
bool GetIsConnected();
/// Action to post to GUI thread.
@@ -69,7 +69,7 @@ namespace TINK.Model
/// Settings determining the startup behavior of the app.
IStartupSettings StartupSettings { get; }
- /// Value indicating whether map is centerted to current position or not.
+ /// Value indicating whether map is centered to current position or not.
bool CenterMapToCurrentLocation { get; set; }
/// Holds the map area where user is or was located or null if position is unknown.
@@ -98,7 +98,7 @@ namespace TINK.Model
/// Holds the different lock service implementations.
LocksServicesContainerMutable LocksServices { get; }
- /// Holds the flavor of the app, i.e. specifies if app is sharee.bike, Mein konrad or Lastenrad Bayern.
+ /// Holds the flavor of the app, i.e. specifies if app is sharee.bike, Mein konrad or LastenRad Bayern.
AppFlavor Flavor { get; }
/// Holds available app themes.
@@ -113,7 +113,7 @@ namespace TINK.Model
/// Holds the external path.
string ExternalFolder { get; }
- /// Holds the stations availalbe.
+ /// Holds the stations centered.
IEnumerable Stations { get; set; }
/// Holds the Urs to query resources from.
diff --git a/TINKLib/Model/Logging/LoggingDirectoryManager.cs b/TINKLib/Model/Logging/LoggingDirectoryManager.cs
index b6bf227..0632c01 100644
--- a/TINKLib/Model/Logging/LoggingDirectoryManager.cs
+++ b/TINKLib/Model/Logging/LoggingDirectoryManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
@@ -25,7 +25,7 @@ namespace TINK.Model.Logging
if (directoryExistsChecker == null)
{
- throw new ArgumentException($"Can not instantiate {nameof(LoggingDirectoryManager)}- object. Directory existance checker delegate can not be null.");
+ throw new ArgumentException($"Can not instantiate {nameof(LoggingDirectoryManager)}- object. Directory existence checker delegate can not be null.");
}
if (directoryCreator == null)
@@ -42,7 +42,7 @@ namespace TINK.Model.Logging
if (string.IsNullOrEmpty(directorySeparatorChar.ToString()))
{
- throw new ArgumentException($"Can not instantiate {nameof(LoggingDirectoryManager)}- object. Directory separtor character can not be null or empty.");
+ throw new ArgumentException($"Can not instantiate {nameof(LoggingDirectoryManager)}- object. Directory separator character can not be null or empty.");
}
if (p_iRetainedFilesCountLimit < 1)
diff --git a/TINKLib/Model/NullPostion.cs b/TINKLib/Model/NullPostion.cs
index 0b91a46..b5dce9e 100644
--- a/TINKLib/Model/NullPostion.cs
+++ b/TINKLib/Model/NullPostion.cs
@@ -1,9 +1,9 @@
-
+
namespace TINK.Model
{
- public class NullPostion : IPosition
+ public class NullPosition : IPosition
{
- internal NullPostion() { }
+ internal NullPosition() { }
public double Latitude => double.NaN;
diff --git a/TINKLib/Model/PositionFactory.cs b/TINKLib/Model/PositionFactory.cs
index 5cb3739..7954775 100644
--- a/TINKLib/Model/PositionFactory.cs
+++ b/TINKLib/Model/PositionFactory.cs
@@ -6,6 +6,6 @@ namespace TINK.Model
public static IPosition Create(double latitude = double.NaN, double longitude = double.NaN)
=> Position.GetIsValid(longitude, latitude)
? new Position(latitude, longitude) as IPosition
- : new NullPostion();
+ : new NullPosition();
}
}
diff --git a/TINKLib/Model/Settings/JsonSettingsDictionary.cs b/TINKLib/Model/Settings/JsonSettingsDictionary.cs
index 8a34d7b..2033453 100644
--- a/TINKLib/Model/Settings/JsonSettingsDictionary.cs
+++ b/TINKLib/Model/Settings/JsonSettingsDictionary.cs
@@ -194,7 +194,7 @@ namespace TINK.Model.Settings
}
- /// Sets whether polling is on or off and the periode if polling is on.
+ /// Sets whether polling is on or off and the period if polling is on.
/// Dictionary to write entries to.
public static Dictionary SetPollingParameters(
this IDictionary targetDictionary,
@@ -210,19 +210,19 @@ namespace TINK.Model.Settings
}).ToDictionary(key => key.Key, value => value.Value);
}
- /// Get whether polling is on or off and the periode if polling is on.
+ /// Get whether polling is on or off and the period if polling is on.
/// Dictionary holding parameters from JSON.
/// Polling parameters.
public static PollingParameters GetPollingParameters(this IDictionary settingsJSON)
{
- // Check if dictionary contains entry for periode.
- if (settingsJSON.TryGetValue($"{typeof(PollingParameters).Name}_{typeof(TimeSpan).Name}", out string periode)
+ // Check if dictionary contains entry for period.
+ if (settingsJSON.TryGetValue($"{typeof(PollingParameters).Name}_{typeof(TimeSpan).Name}", out string period)
&& settingsJSON.TryGetValue($"{typeof(PollingParameters).Name}_{typeof(bool).Name}", out string active)
- && !string.IsNullOrEmpty(periode)
+ && !string.IsNullOrEmpty(period)
&& !string.IsNullOrEmpty(active))
{
return new PollingParameters(
- JsonConvert.DeserializeObject(periode),
+ JsonConvert.DeserializeObject(period),
JsonConvert.DeserializeObject(active));
}
diff --git a/TINKLib/Model/Settings/PollingParameters.cs b/TINKLib/Model/Settings/PollingParameters.cs
index 9c8b0d0..031c8ce 100644
--- a/TINKLib/Model/Settings/PollingParameters.cs
+++ b/TINKLib/Model/Settings/PollingParameters.cs
@@ -16,15 +16,15 @@ namespace TINK.Settings
false);
/// Constructs a polling parameter object.
- /// Polling periode.
+ /// Polling period.
/// True if polling is activated.
- public PollingParameters(TimeSpan periode, bool activated)
+ public PollingParameters(TimeSpan period, bool activated)
{
- Periode = periode; // Can not be null because is a struct.
+ Periode = period; // Can not be null because is a struct.
IsActivated = activated;
}
- /// Holds the polling periode.
+ /// Holds the polling period.
public TimeSpan Periode { get; }
/// Holds value whether polling is activated or not.
diff --git a/TINKLib/Model/Settings/Settings.cs b/TINKLib/Model/Settings/Settings.cs
index 1834a68..813e498 100644
--- a/TINKLib/Model/Settings/Settings.cs
+++ b/TINKLib/Model/Settings/Settings.cs
@@ -18,7 +18,7 @@ namespace TINK.Model.Settings
public const bool DEFAULTREPOTLEVEL = false;
/// Gets the type of the default geolocation service.
- /// Swtiched from GeolocationService (GeolocationAccuracyMediumService) to GeolocationAccuracyHighService in app version 3.0.290.
+ /// Switched from GeolocationService (GeolocationAccuracyMediumService) to GeolocationAccuracyHighService in app version 3.0.290.
public static Type DefaultLocationService => typeof(GeolocationAccuracyHighService);
// Default value of the expires after entry. Controls the expiration time of the cache values.
@@ -54,8 +54,8 @@ namespace TINK.Model.Settings
bool? isSiteCachingOn = null,
string activeTheme = null)
{
- GroupFilterMapPage = groupFilterMapPage ?? new GroupFilterMapPage(); // Default behaviour: No filtering.
- GroupFilterSettings = groupFilterSettings ?? new GroupFilterSettings(); // Default behaviour: No filtering.
+ GroupFilterMapPage = groupFilterMapPage ?? new GroupFilterMapPage(); // Default behavior: No filtering.
+ GroupFilterSettings = groupFilterSettings ?? new GroupFilterSettings(); // Default behavior: No filtering.
StartupSettings = startupSettings ?? new StartupSettings();
ActiveUri = GetActiveUri(activeUri);
PollingParameters = pollingParameters ?? PollingParameters.Default;
@@ -64,7 +64,7 @@ namespace TINK.Model.Settings
ExpiresAfter = expiresAfter ?? DEFAULTEXPIRESAFTER;
ActiveLockService = activeLockService ?? LocksServicesContainerMutable.DefaultLocksservice;
ConnectTimeout = connectTimeout ?? new TimeSpan(0, 0, TimeOutProvider.DEFAULT_BLUETOOTHCONNECT_TIMEOUTSECONDS); // Try one sec. to connect.
- ActiveGeolocationService = activeGeolocationService ?? DefaultLocationService.Name;
+ ActiveGeolocationService = activeGeolocationService ?? DefaultLocationService.FullName;
CenterMapToCurrentLocation = centerMapToCurrentLocation ?? GetCenterMapToCurrentLocation(activeUri);
MapSpan = mapSpan;
LogToExternalFolder = logToExternalFolder ?? false;
@@ -78,7 +78,7 @@ namespace TINK.Model.Settings
/// Holds the filters loaded from settings.
public IGroupFilterSettings GroupFilterSettings { get; }
- /// Holds the stettings determining app startup behavior.
+ /// Holds the settings determining app startup behavior.
public IStartupSettings StartupSettings { get; }
/// Holds the uri to connect to.
@@ -102,7 +102,7 @@ namespace TINK.Model.Settings
/// Gets the geolocation service to use.
public string ActiveGeolocationService { get; }
- /// True if map is centered to current positon, false if not to center map.
+ /// True if map is centered to current position, false if not to center map.
public bool CenterMapToCurrentLocation { get; }
/// Holds the map area to display.
@@ -121,7 +121,7 @@ namespace TINK.Model.Settings
public static bool GetCenterMapToCurrentLocation(Uri activeUri)
{
- // TINK does not require acess to current location. Deactivate center map to current location for this reason.
+ // TINK does not require access to current location. Deactivate center map to current location for this reason.
return !GetActiveUri(activeUri).Host.GetIsCopri();
}
}
diff --git a/TINKLib/Model/State/StateInfoMutable.cs b/TINKLib/Model/State/StateInfoMutable.cs
index 241308f..04cb2f7 100644
--- a/TINKLib/Model/State/StateInfoMutable.cs
+++ b/TINKLib/Model/State/StateInfoMutable.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace TINK.Model.State
{
@@ -262,7 +262,7 @@ namespace TINK.Model.State
if (_RemainingTime.HasValue == false)
{
// Value was not yet querried.
- // Do querry before returning object.
+ // Do query before returning object.
_StateInfo.GetIsStillReserved(out _RemainingTime);
}
diff --git a/TINKLib/Model/Station/StationCollection.cs b/TINKLib/Model/Stations/StationCollection.cs
similarity index 94%
rename from TINKLib/Model/Station/StationCollection.cs
rename to TINKLib/Model/Stations/StationCollection.cs
index da1602a..56b2b77 100644
--- a/TINKLib/Model/Station/StationCollection.cs
+++ b/TINKLib/Model/Stations/StationCollection.cs
@@ -1,8 +1,9 @@
-using System;
+using System;
using System.Collections;
using System.Collections.Generic;
+using TINK.Model.Stations.StationNS;
-namespace TINK.Model.Station
+namespace TINK.Model.Stations
{
public class StationDictionary : IEnumerable
{
@@ -31,7 +32,7 @@ namespace TINK.Model.Station
}
///
- /// Deteermines whether a station by given key exists.
+ /// Determines whether a station by given key exists.
///
/// Key to check.
/// True if station exists.
diff --git a/TINKLib/Model/Station/IStation.cs b/TINKLib/Model/Stations/StationNS/IStation.cs
similarity index 80%
rename from TINKLib/Model/Station/IStation.cs
rename to TINKLib/Model/Stations/StationNS/IStation.cs
index 778d487..920883a 100644
--- a/TINKLib/Model/Station/IStation.cs
+++ b/TINKLib/Model/Stations/StationNS/IStation.cs
@@ -1,7 +1,7 @@
-using System.Collections.Generic;
-using TINK.Model.Station.Operator;
+using System.Collections.Generic;
+using TINK.Model.Stations.StationNS.Operator;
-namespace TINK.Model.Station
+namespace TINK.Model.Stations.StationNS
{
public interface IStation
{
diff --git a/TINKLib/Model/Station/NullStation.cs b/TINKLib/Model/Stations/StationNS/NullStation.cs
similarity index 84%
rename from TINKLib/Model/Station/NullStation.cs
rename to TINKLib/Model/Stations/StationNS/NullStation.cs
index 50e2e4e..55ab9e6 100644
--- a/TINKLib/Model/Station/NullStation.cs
+++ b/TINKLib/Model/Stations/StationNS/NullStation.cs
@@ -1,7 +1,7 @@
-using System.Collections.Generic;
-using TINK.Model.Station.Operator;
+using System.Collections.Generic;
+using TINK.Model.Stations.StationNS.Operator;
-namespace TINK.Model.Station
+namespace TINK.Model.Stations.StationNS
{
/// Holds object representing null station.
public class NullStation : IStation
diff --git a/TINKLib/Model/Station/Operator/Data.cs b/TINKLib/Model/Stations/StationNS/Operator/Data.cs
similarity index 93%
rename from TINKLib/Model/Station/Operator/Data.cs
rename to TINKLib/Model/Stations/StationNS/Operator/Data.cs
index 16b6d3b..4a3d066 100644
--- a/TINKLib/Model/Station/Operator/Data.cs
+++ b/TINKLib/Model/Stations/StationNS/Operator/Data.cs
@@ -1,6 +1,6 @@
-using Xamarin.Forms;
+using Xamarin.Forms;
-namespace TINK.Model.Station.Operator
+namespace TINK.Model.Stations.StationNS.Operator
{
/// Holds operator related data.
public class Data : IData
diff --git a/TINKLib/Model/Station/Operator/IData.cs b/TINKLib/Model/Stations/StationNS/Operator/IData.cs
similarity index 87%
rename from TINKLib/Model/Station/Operator/IData.cs
rename to TINKLib/Model/Stations/StationNS/Operator/IData.cs
index 417565d..b709786 100644
--- a/TINKLib/Model/Station/Operator/IData.cs
+++ b/TINKLib/Model/Stations/StationNS/Operator/IData.cs
@@ -1,6 +1,6 @@
-using Xamarin.Forms;
+using Xamarin.Forms;
-namespace TINK.Model.Station.Operator
+namespace TINK.Model.Stations.StationNS.Operator
{
public interface IData
{
diff --git a/TINKLib/Model/Station/Station.cs b/TINKLib/Model/Stations/StationNS/Station.cs
similarity index 93%
rename from TINKLib/Model/Station/Station.cs
rename to TINKLib/Model/Stations/StationNS/Station.cs
index 34d9964..1023309 100644
--- a/TINKLib/Model/Station/Station.cs
+++ b/TINKLib/Model/Stations/StationNS/Station.cs
@@ -1,8 +1,8 @@
-using System;
+using System;
using System.Collections.Generic;
-using TINK.Model.Station.Operator;
+using TINK.Model.Stations.StationNS.Operator;
-namespace TINK.Model.Station
+namespace TINK.Model.Stations.StationNS
{
/// Holds station info.
public class Station : IStation
diff --git a/TINKLib/Model/TinkApp.cs b/TINKLib/Model/TinkApp.cs
index 1eddc29..29c7dfc 100644
--- a/TINKLib/Model/TinkApp.cs
+++ b/TINKLib/Model/TinkApp.cs
@@ -13,7 +13,7 @@ using TINK.Model.Device;
using TINK.Model.Logging;
using TINK.Model.Services.CopriApi.ServerUris;
using TINK.Model.Settings;
-using TINK.Model.Station;
+using TINK.Model.Stations.StationNS;
using TINK.Model.User.Account;
using TINK.Services;
using TINK.Services.BluetoothLock;
@@ -42,7 +42,7 @@ namespace TINK.Model
public static string MerchantId { get; private set; }
///
- /// Holds status about whants new page.
+ /// Holds status about whats new page.
///
public WhatsNew WhatsNew { get; private set; }
@@ -65,7 +65,7 @@ namespace TINK.Model
set => m_oFilterDictionaryMapPage = value ?? new GroupFilterMapPage();
}
- /// Value indicating whether map is centerted to current position or not.
+ /// Value indicating whether map is centered to current position or not.
public bool CenterMapToCurrentLocation { get; set; }
/// Holds the map area to display when starting app for first time/ when center map to is off.
@@ -123,7 +123,7 @@ namespace TINK.Model
///
/// Update connector from filters when
/// - login state changes
- /// - view is toggled (TINK to Kornrad and vice versa)
+ /// - view is toggled (TINK to Konrad and vice versa)
///
public void UpdateConnector()
{
@@ -133,7 +133,7 @@ namespace TINK.Model
m_oConnector.Connector);
}
- /// Polling periode.
+ /// Polling period.
public PollingParameters Polling { get; set; }
public TimeSpan ExpiresAfter { get; set; }
@@ -155,7 +155,7 @@ namespace TINK.Model
///
///
///
- /// Null in productive context. Service to querry geoloation for testing purposes. Parameter can be made optional.
+ /// Null in productive context. Service to query geolocation for testing purposes. Parameter can be made optional.
/// Null in productive context. Service to control locks/ get locks information for testing proposes. Parameter can be made optional.
/// Object allowing platform specific operations.
///
@@ -303,7 +303,7 @@ namespace TINK.Model
throw new ArgumentException($"Can not instantiate {nameof(TinkApp)}- object. Polling parameters must never be null.");
Polling = (lastVersion != null && lastVersion < new Version(3, 0, 358))
- ? PollingParameters.Default // Default polling periode was 10s up to 3.0.357. Is 60s for later versions.
+ ? PollingParameters.Default // Default polling period was 10s up to 3.0.357. Is 60s for later versions.
: settings.PollingParameters;
AppVersion = currentVersion ?? new Version(3, 0, 122);
@@ -342,7 +342,7 @@ namespace TINK.Model
/// Holds delegate to determine whether device is connected or not.
private readonly Func isConnectedFunc;
- /// Gets whether device is connected to internet or not.
+ /// Gets whether device is connected to Internet or not.
public bool GetIsConnected() => isConnectedFunc();
/// Holds the folder where settings files are stored.
@@ -365,8 +365,8 @@ namespace TINK.Model
/// Name of the station which is selected.
public IStation SelectedStation { get; set; } = new NullStation();
- /// Holds the stations availalbe.
- public IEnumerable Stations { get; set; } = new List();
+ /// Holds the stations centered.
+ public IEnumerable Stations { get; set; } = new List();
public IResourceUrls ResourceUrls { get; set; } = new ResourceUrls();
diff --git a/TINKLib/Model/User/Account/Account.cs b/TINKLib/Model/User/Account/Account.cs
index b85ba0f..8fd1a6d 100644
--- a/TINKLib/Model/User/Account/Account.cs
+++ b/TINKLib/Model/User/Account/Account.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
@@ -10,15 +10,15 @@ namespace TINK.Model.User.Account
{
None = 0, // No extra permissions.
PickCopriServer = 2, // Allows user to switch COPRI server.
- ManageCopriCacheExpiration = 4, // Allows to manage the livetime of COPRI cache entries.
- ManagePolling = 8, // Turn polling off or on and set pollig frequency.
- PickLockServiceImplementation = 16, // Allows to pick the implementation which controls bluetooth lock mangement.
+ ManageCopriCacheExpiration = 4, // Allows to manage the live time of COPRI cache entries.
+ ManagePolling = 8, // Turn polling off or on and set polling frequency.
+ PickLockServiceImplementation = 16, // Allows to pick the implementation which controls bluetooth lock management.
PickLocationServiceImplementation = 32, // Allows to pick the implementation which gets location information.
PickLoggingLevel = 64, // Allows to select the logging level.
ShowDiagnostics = 128, // Turns on display of diagnostics.
SwitchNoSiteCaching = 1024, // Allows to turn off/ on caching of sites displayed in app hosted by COPRI
ReportLevel = 2048, // Allows extent to show error messages.
- SwitchTheme = 4096, // Allows user to switch theme (sharee.bike, Meinkonrad, Lastenrad Bayern)
+ SwitchTheme = 4096, // Allows user to switch theme (sharee.bike, Mein konrad, LastenRad Bayern)
All = PickCopriServer +
ManageCopriCacheExpiration +
ManagePolling +
@@ -57,7 +57,7 @@ namespace TINK.Model.User.Account
/// Mail address of the account holder.
/// Password.
/// Session cookie from copri.
- /// Group holdig info about Group (TINK, Konrad, ...)
+ /// Group holding info about Group (TINK, Konrad, ...)
/// Flag which controls display of debug settings.
public Account(
string mail,
@@ -87,7 +87,7 @@ namespace TINK.Model.User.Account
/// Password of to authenticate.
public string Pwd { get; }
- /// True if user acknowleged agbs.
+ /// True if user acknowledged AGBs.
public bool IsAgbAcknowledged { get; }
/// Session cookie used to sign in to copri.
diff --git a/TINKLib/Model/WhatsNew.cs b/TINKLib/Model/WhatsNew.cs
index 8de4baf..0cfd0e7 100644
--- a/TINKLib/Model/WhatsNew.cs
+++ b/TINKLib/Model/WhatsNew.cs
@@ -683,8 +683,8 @@ namespace TINK.Model
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
- new Version(3, 0, 362),
- AppResources.ChangeLog_3_0_362_MK_SB,
+ new Version(3, 0, 363),
+ AppResources.ChangeLog_3_0_363_MK_SB,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
};
@@ -693,7 +693,7 @@ namespace TINK.Model
/// Current version of the app.
/// Version of app which was used before this session, null if app is installed for the first time.
/// Null or version in which whats new dialog was shown last. Used to determine if AGB dialog has to be shown.
- /// Flavor of the app, i.e. specified if app is sharee.bike, Lastenrad Bayern, ...
+ /// Flavor of the app, i.e. specified if app is sharee.bike, LastenRad Bayern, ...
/// Platform on which app is running.
/// Messages to inject for testing.
public WhatsNew(
@@ -727,7 +727,7 @@ namespace TINK.Model
IsShowRequired = true;
}
- /// Gets or sets value whehter whats new was alreay shonw in current settion or not.
+ /// Gets or sets value whether whats new was already shown in current session or not.
public bool WasShownInCurrentSession { get; set; }
/// Holds the information in which version of the app the whats new dialog has been shown.
@@ -736,10 +736,10 @@ namespace TINK.Model
/// Holds information whether whats new page was already shown or not.
public bool IsShowRequired { get; }
- /// True if info about modified agb has to be displayed.
+ /// True if info about modified AGB has to be displayed.
public bool IsShowAgbRequired => (WasShownVersion ?? AGBMODIFIEDBUILD) < AGBMODIFIEDBUILD;
- /// Get the whats new text depening of version gap.
+ /// Get the whats new text depending of version gap.
/// Messages to process.
public IDictionary WhatsNewText { get; }
}
diff --git a/TINKLib/MultilingualResources/AppResources.Designer.cs b/TINKLib/MultilingualResources/AppResources.Designer.cs
index 1f3363b..4b6d653 100644
--- a/TINKLib/MultilingualResources/AppResources.Designer.cs
+++ b/TINKLib/MultilingualResources/AppResources.Designer.cs
@@ -781,6 +781,18 @@ namespace TINK.MultilingualResources {
}
}
+ ///
+ /// Looks up a localized string similar to - Bikes that must be returned to the starting station are marked as such with an icon and the station id.<br/>
+ ///- What used to be called 'return bike' is now called 'end rental'. Always make sure to end your chargeable rental!<br/>
+ ///- Bug fixes<br/>
+ ///- Package updates.
+ ///
+ public static string ChangeLog_3_0_363_MK_SB {
+ get {
+ return ResourceManager.GetString("ChangeLog_3_0_363_MK_SB", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to We have fixed some bugs. Enjoy the ride!.
///
@@ -2406,6 +2418,15 @@ namespace TINK.MultilingualResources {
}
}
+ ///
+ /// Looks up a localized string similar to Circular drives only!.
+ ///
+ public static string MessageAaRideTypeInfoTitle {
+ get {
+ return ResourceManager.GetString("MessageAaRideTypeInfoTitle", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Log out.
///
@@ -2552,7 +2573,7 @@ namespace TINK.MultilingualResources {
}
///
- /// Looks up a localized string similar to Rental charges.
+ /// Looks up a localized string similar to Rental costs.
///
public static string MessageBikesManagementTariffDescriptionFeeEuroPerHour {
get {
@@ -2579,7 +2600,7 @@ namespace TINK.MultilingualResources {
}
///
- /// Looks up a localized string similar to Max. charges.
+ /// Looks up a localized string similar to Max. costs.
///
public static string MessageBikesManagementTariffDescriptionMaxFeeEuroPerDay {
get {
diff --git a/TINKLib/MultilingualResources/AppResources.de.resx b/TINKLib/MultilingualResources/AppResources.de.resx
index e38c8ef..9b616b1 100644
--- a/TINKLib/MultilingualResources/AppResources.de.resx
+++ b/TINKLib/MultilingualResources/AppResources.de.resx
@@ -475,7 +475,7 @@ Bitte App neu starten, um Radinfos zu bekommen.
Gratis Nutzung
- Max. Gebühr
+ Max. Kosten€/Std.
@@ -1165,6 +1165,15 @@ Treten Sie an das Rad heran, schalten Sie Bluetooth und Standortdienste ein und
<br/>
Außerdem:<br/>
- Kleinere Fehlerbehebungen<br/>
+- Paketaktualisierungen
+
+
+ Nur Kreisfahrten!
+
+
+ - Räder, die an der Startstation zurückgegeben werden müssen, sind als solche mit einem Symbol und der Stations-ID gekennzeichnet<br/>
+- Was früher als "Fahrrad zurückgeben" bezeichnet wurde, heißt jetzt "Miete beenden". Vergewissern Sie sich immer, dass Sie Ihre kostenpflichtige Miete beenden!<br/>
+- Fehlerbehebungen<br/>
- Paketaktualisierungen
\ No newline at end of file
diff --git a/TINKLib/MultilingualResources/AppResources.resx b/TINKLib/MultilingualResources/AppResources.resx
index 9e96c30..3887937 100644
--- a/TINKLib/MultilingualResources/AppResources.resx
+++ b/TINKLib/MultilingualResources/AppResources.resx
@@ -581,7 +581,7 @@ Please restart app in order to get bike info.
€/hour
- Rental charges
+ Rental costsFree use
@@ -590,7 +590,7 @@ Please restart app in order to get bike info.
hour(s)/day
- Max. charges
+ Max. costsTariff
@@ -1254,6 +1254,15 @@ Approach the bike, turn on Bluetooth and Location services and try again.
+
+
+ Circular drives only!
+
+
+ - Bikes that must be returned to the starting station are marked as such with an icon and the station id.<br/>
+- What used to be called 'return bike' is now called 'end rental'. Always make sure to end your chargeable rental!<br/>
+- Bug fixes<br/>
- Package updates
\ No newline at end of file
diff --git a/TINKLib/MultilingualResources/TINKLib.de.xlf b/TINKLib/MultilingualResources/TINKLib.de.xlf
index 0a1615a..d7b0850 100644
--- a/TINKLib/MultilingualResources/TINKLib.de.xlf
+++ b/TINKLib/MultilingualResources/TINKLib.de.xlf
@@ -20,8 +20,7 @@
- Schloss schließen & Miete beenden
- Please verify the translation’s accuracy as the source string was updated after it was translated.
+ Schloss schließen & Miete beenden
@@ -41,8 +40,7 @@
- Miete beenden
- Please verify the translation’s accuracy as the source string was updated after it was translated.
+ Miete beenden
@@ -307,8 +305,7 @@ Bitte melden Sie sich erneut an.
- Kostenlos registrieren
- Please verify the translation’s accuracy as the source string was updated after it was translated.
+ Kostenlos registrieren
@@ -628,16 +625,17 @@ Bitte App neu starten, um Radinfos zu bekommen.
Abo-Preis
-
+
Mietkosten
+ Please verify the translation’s accuracy as the source string was updated after it was translated.Gratis Nutzung
-
- Max. Gebühr
+
+ Max. KostenPlease verify the translation’s accuracy as the source string was updated after it was translated.
@@ -729,7 +727,7 @@ Bitte kontaktieren sie den Betreiber!
- Seite zur Eingabe von Rückmeldungen hinzugefügt, der nach Rückgabe eines Rads angezeigt wird.
+ Seite zur Eingabe von Rückmeldungen hinzugefügt, der nach Rückgabe eines Rads angezeigt wird.Please verify the translation’s accuracy as the source string was updated after it was translated.
@@ -784,7 +782,7 @@ Layout Anzeige Radnamen und nummern verbessert.
- Hard- und software information werden an Backend übermittelt bei Radrückgabe.
+ Hard- und software information werden an Backend übermittelt bei Radrückgabe.Please verify the translation’s accuracy as the source string was updated after it was translated.
@@ -875,8 +873,7 @@ Kleinere Verbesserungen.
- Fehler bei Standortabfrage!
- Please verify the translation’s accuracy as the source string was updated after it was translated.
+ Fehler bei Standortabfrage!
@@ -884,7 +881,7 @@ Kleinere Verbesserungen.
- Fehler beim Start der Standortabfrage!
+ Fehler beim Start der Standortabfrage!Please verify the translation’s accuracy as the source string was updated after it was translated.
@@ -1239,12 +1236,12 @@ Kleinere Fehlerbehebungen.
- Rückmeldung zur App
+ Rückmeldung zur AppPlease verify the translation’s accuracy as the source string was updated after it was translated.
- {0}-App Anfrage
+ {0}-App AnfrageSubject of contact mail to ("Feedback about the app").Please verify the translation’s accuracy as the source string was updated after it was translated.
@@ -1567,7 +1564,7 @@ Wichtig: Schicken Sie eine E-Mail an den Betreiber (ansonsten läuft Ihre kosten
- Ups, es ist keine Internetverbindung vorhanden.
+ Ups, es ist keine Internetverbindung vorhanden.Please verify the translation’s accuracy as the source string was updated after it was translated.
@@ -1614,6 +1611,21 @@ Also:<br/>
<br/>
Außerdem:<br/>
- Kleinere Fehlerbehebungen<br/>
+- Paketaktualisierungen
+
+
+
+ Nur Kreisfahrten!
+ Please verify the translation’s accuracy as the source string was updated after it was translated.
+
+
+
+ - Räder, die an der Startstation zurückgegeben werden müssen, sind als solche mit einem Symbol und der Stations-ID gekennzeichnet<br/>
+- Was früher als "Fahrrad zurückgeben" bezeichnet wurde, heißt jetzt "Miete beenden". Vergewissern Sie sich immer, dass Sie Ihre kostenpflichtige Miete beenden!<br/>
+- Fehlerbehebungen<br/>
- Paketaktualisierungen
diff --git a/TINKLib/Repository/CopriCallsHttps.cs b/TINKLib/Repository/CopriCallsHttps.cs
index ea1ff0b..7500ef0 100644
--- a/TINKLib/Repository/CopriCallsHttps.cs
+++ b/TINKLib/Repository/CopriCallsHttps.cs
@@ -13,6 +13,7 @@ using TINK.Model.Logging;
using TINK.Repository.Exception;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TINK.Repository
{
@@ -24,7 +25,7 @@ namespace TINK.Repository
/// Initializes a instance of the copri calls https object.
/// Host to connect to.
- /// Provides app related info (app name and version, merchantid) to pass to COPRI.
+ /// Provides app related info (app name and version, merchant id) to pass to COPRI.
/// Two letter ISO language name.
/// Holds info about smart device.
/// Session cookie if user is logged in, null otherwise.
@@ -50,7 +51,7 @@ namespace TINK.Repository
/// Holds the URL for rest calls.
private Uri m_oCopriHost;
- /// Spacifies name and version of app.
+ /// Specifies name and version of app.
private string UserAgent { get; }
/// Returns true because value requested form copri server are returned.
@@ -63,7 +64,7 @@ namespace TINK.Repository
public string SessionCookie => requestBuilder.SessionCookie;
/// Logs user in.
- /// Mailaddress of user to log in.
+ /// Mail address of user to log in.
/// Password to log in.
/// Id specifying user and hardware.
/// Response which holds auth cookie
@@ -87,7 +88,7 @@ namespace TINK.Repository
public async Task GetBikesAvailableAsync()
=> await GetBikesAvailableAsync(m_oCopriHost.AbsoluteUri, requestBuilder.GetBikesAvailable(), UserAgent);
- /// Gets a list of bikes reserved/ booked by acctive user.
+ /// Gets a list of bikes reserved/ booked by active user.
/// Response holding list of bikes.
public async Task GetBikesOccupiedAsync()
{
@@ -127,7 +128,7 @@ namespace TINK.Repository
requestBuilder.DoReserve(bikeId),
UserAgent);
- /// Gets canel booking request response.
+ /// Gets cancel booking request response.
/// Id of the bike to book.
/// Holds the uri of the operator or null, in case of single operator setup.
/// Response on cancel booking request.
@@ -183,13 +184,13 @@ namespace TINK.Repository
requestBuilder.UpateLockingState(bikeId, state, location, batteryLevel, versionInfo),
UserAgent);
- /// Gets booking request request.
+ /// Gets booking request.
/// Holds the uri of the operator or null, in case of single operator setup.
/// Id of the bike to book.
/// Used to publish GUID from app to copri. Used for initial setup of bike in copri.
/// Holds the filling level percentage of the battery.
/// If not null next locking action which is performed after booking.
- /// Requst on booking request.
+ /// Request on booking request.
public async Task DoBookAsync(
Uri operatorUri,
string bikeId,
@@ -296,7 +297,7 @@ namespace TINK.Repository
copriHost,
command,
userAgent,
- displayCommand); // Do not include password into exception output when an error occurres.
+ displayCommand); // Do not include password into exception output when an error occurs.
}
catch (System.Exception l_oException)
{
@@ -437,7 +438,7 @@ namespace TINK.Repository
#endif
}
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
/// URL of the copri host to connect to.
/// Command to post.
/// Response holding list of bikes.
@@ -785,8 +786,8 @@ namespace TINK.Repository
#endif
}
- /// http get- request.
- /// Ulr to get info from.
+ /// Https get- request.
+ /// Url to get info from.
/// response from server
public static async Task Get(string Url)
{
@@ -804,7 +805,7 @@ namespace TINK.Repository
return result;
}
- /// http- post request.
+ /// Https- post request.
/// Command to send.
/// Command to display/ log used for error handling.
/// Address of server to communicate with.
@@ -838,7 +839,7 @@ namespace TINK.Repository
#if !WINDOWS_UWP
var l_strHost = uRL;
- // Returns a http request.
+ // Returns a https request.
var request = WebRequest.CreateHttp(l_strHost);
request.Method = "POST";
diff --git a/TINKLib/Repository/CopriCallsMemory.cs b/TINKLib/Repository/CopriCallsMemory.cs
index 6f58000..84efb4a 100644
--- a/TINKLib/Repository/CopriCallsMemory.cs
+++ b/TINKLib/Repository/CopriCallsMemory.cs
@@ -5,12 +5,13 @@ using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
using TINK.Model.Connector;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TINK.Repository
{
- public class CopriCallsMemory : ICopriServer
+ public class CopriCallsMemory : ICopriServer
{
- /// Part in file specifying apiserver.
+ /// Part in file specifying api server.
private static string CopriDevelHostUri = @"https://tinkwwp.copri-bike.de/APIjsonserver";
public const string DO_AUTH_Unknown_User_FILE = @"
@@ -1335,7 +1336,7 @@ namespace TINK.Repository
}
///
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
///
/// Cookie to authenticate user.
/// Response holding list of bikes.
@@ -1343,7 +1344,7 @@ namespace TINK.Repository
{
try
{
- requestBuilder.GetBikesOccupied(); // Non mock implementation if ICopriServer call this member as well. To ensure comparable behaviour this member is called here as well.
+ requestBuilder.GetBikesOccupied(); // Non mock implementation if ICopriServer call this member as well. To ensure comparable behavior this member is called here as well.
}
catch (NotSupportedException)
{
@@ -1673,7 +1674,7 @@ namespace TINK.Repository
=> null;
///
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
///
/// Cookie to authenticate user.
/// Sample set to use.
diff --git a/TINKLib/Repository/CopriCallsMonkeyStore.cs b/TINKLib/Repository/CopriCallsMonkeyStore.cs
index 592821b..a3d3e90 100644
--- a/TINKLib/Repository/CopriCallsMonkeyStore.cs
+++ b/TINKLib/Repository/CopriCallsMonkeyStore.cs
@@ -8,6 +8,7 @@ using TINK.Model.Device;
using TINK.Model.Services.CopriApi;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TINK.Repository
{
diff --git a/TINKLib/Repository/ICopriServer.cs b/TINKLib/Repository/ICopriServer.cs
index b389801..4b61d22 100644
--- a/TINKLib/Repository/ICopriServer.cs
+++ b/TINKLib/Repository/ICopriServer.cs
@@ -3,9 +3,9 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
using TINK.Model.Connector;
-using TINK.Model.Device;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TINK.Repository
{
@@ -13,7 +13,7 @@ namespace TINK.Repository
public interface ICopriServerBase
{
/// Logs user in.
- /// Mailaddress of user to log in.
+ /// Mail address of user to log in.
/// Password to log in.
/// Id specifying user and hardware.
/// Response which holds auth cookie
@@ -34,7 +34,7 @@ namespace TINK.Repository
string bikeId,
Uri operatorUri);
- /// Cancels reservation of bik.
+ /// Cancels reservation of bike.
/// Id of the bike to reserve.
/// Holds the uri of the operator or null, in case of single operator setup.
/// Response on cancel reservation request.
@@ -162,7 +162,7 @@ namespace TINK.Repository
/// Response holding list of bikes.
Task GetBikesAvailableAsync();
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
/// Response holding list of bikes.
Task GetBikesOccupiedAsync();
}
diff --git a/TINKLib/Repository/Request/IRequestBuilder.cs b/TINKLib/Repository/Request/IRequestBuilder.cs
index f8af57e..a9878dd 100644
--- a/TINKLib/Repository/Request/IRequestBuilder.cs
+++ b/TINKLib/Repository/Request/IRequestBuilder.cs
@@ -15,10 +15,10 @@ namespace TINK.Repository.Request
string SessionCookie { get; }
/// Gets request to log user in.
- /// Mailaddress of user to log in.
+ /// Mail address of user to log in.
/// Password to log in.
/// Id specifying user and hardware.
- /// Requst which holds auth cookie
+ /// Request which holds auth cookie
string DoAuthorization(
string mailAddress,
string password,
@@ -37,7 +37,7 @@ namespace TINK.Repository.Request
/// Request to query list of bikes available.
string GetBikesAvailable();
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
/// Request to query list of bikes occupied.
string GetBikesOccupied();
diff --git a/TINKLib/Repository/Request/RequestBuilder.cs b/TINKLib/Repository/Request/RequestBuilder.cs
index 7318fee..ca2d831 100644
--- a/TINKLib/Repository/Request/RequestBuilder.cs
+++ b/TINKLib/Repository/Request/RequestBuilder.cs
@@ -81,7 +81,7 @@ namespace TINK.Repository.Request
SmartDevice.GetSmartDeviceParameters() +
UiIsoLanguageNameParameter;
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
/// Request to query list of bikes occupied.
public string GetBikesOccupied()
=> throw new NotSupportedException();
diff --git a/TINKLib/Repository/Request/RequestBuilderLoggedIn.cs b/TINKLib/Repository/Request/RequestBuilderLoggedIn.cs
index 65b38b8..6d948f6 100644
--- a/TINKLib/Repository/Request/RequestBuilderLoggedIn.cs
+++ b/TINKLib/Repository/Request/RequestBuilderLoggedIn.cs
@@ -78,7 +78,7 @@ namespace TINK.Repository.Request
AuthCookieParameter +
UiIsoLanguageNameParameter;
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
/// Request to query list of bikes occupied.
public string GetBikesOccupied()
=> "request=user_bikes_occupied&system=all&genkey=1" +
diff --git a/TINKLib/Repository/Response/BikeInfoBase.cs b/TINKLib/Repository/Response/BikeInfoBase.cs
index 745cf56..aa068eb 100644
--- a/TINKLib/Repository/Response/BikeInfoBase.cs
+++ b/TINKLib/Repository/Response/BikeInfoBase.cs
@@ -1,4 +1,4 @@
-using System.Runtime.Serialization;
+using System.Runtime.Serialization;
namespace TINK.Repository.Response
{
@@ -27,7 +27,7 @@ namespace TINK.Repository.Response
public string station { get; private set; }
///
- /// Holds the localized (german) description of the bike.
+ /// Holds the localized (German) description of the bike.
///
[DataMember]
public string description { get; private set; }
@@ -78,6 +78,12 @@ namespace TINK.Repository.Response
/// Describes type of the bike.
public BikeType bike_type { get; private set; }
+ ///
+ /// Holds whether bike is a AA bike (bike must be always returned a the same station) or AB bike (start and end stations can be different stations).
+ ///
+ [DataMember]
+ public string aa_ride { get; private set; }
+
/// Loading state of motor battery in % ]0..100[.
[DataMember]
public string bike_charge { get; private set; }
diff --git a/TINKLib/Repository/Response/BikeType.cs b/TINKLib/Repository/Response/BikeType.cs
index 4bef5b2..8017922 100644
--- a/TINKLib/Repository/Response/BikeType.cs
+++ b/TINKLib/Repository/Response/BikeType.cs
@@ -1,4 +1,4 @@
-using System.Runtime.Serialization;
+using System.Runtime.Serialization;
namespace TINK.Repository.Response
{
@@ -40,7 +40,7 @@ namespace TINK.Repository.Response
public string charge_current_percent { get; private set; }
///
- /// Holds the maximum chargeing level of the battery in bars.
+ /// Holds the maximum charging level of the battery in bars.
///
[DataMember]
public string charge_max_bars { get; private set; }
diff --git a/TINKLib/Repository/Response/ResponseHelper.cs b/TINKLib/Repository/Response/ResponseHelper.cs
index b9071a9..cd44a8a 100644
--- a/TINKLib/Repository/Response/ResponseHelper.cs
+++ b/TINKLib/Repository/Response/ResponseHelper.cs
@@ -1,4 +1,4 @@
-using System.Linq;
+using System.Linq;
using TINK.MultilingualResources;
using TINK.Repository.Exception;
@@ -80,7 +80,7 @@ namespace TINK.Repository.Response
/// Gets if a call to reserve bike succeeded or not by checking a booking response.
/// Id of bike which should be booked.
- /// Sessiong cookie of logged in user.
+ /// Session cookie of logged in user.
/// Response to check.
///
public static BikeInfoReservedOrBooked GetIsReserveResponseOk(
diff --git a/TINKLib/Repository/Response/Stations/Station/OperatorData.cs b/TINKLib/Repository/Response/Stations/Station/OperatorData.cs
new file mode 100644
index 0000000..ce90694
--- /dev/null
+++ b/TINKLib/Repository/Response/Stations/Station/OperatorData.cs
@@ -0,0 +1,27 @@
+using System.Runtime.Serialization;
+
+namespace TINK.Repository.Response.Stations.Station
+{
+ ///
+ /// Holds info about operator data.
+ ///
+ [DataContract]
+ public class OperatorData
+ {
+ [DataMember]
+ public string operator_name { get; private set; }
+
+ [DataMember]
+ public string operator_phone { get; private set; }
+
+ [DataMember]
+ public string operator_hours { get; private set; }
+
+ [DataMember]
+ public string operator_email { get; private set; }
+
+
+ [DataMember]
+ public string operator_color { get; private set; }
+ }
+}
diff --git a/TINKLib/Repository/Response/Stations/Station/StationInfo.cs b/TINKLib/Repository/Response/Stations/Station/StationInfo.cs
new file mode 100644
index 0000000..d727420
--- /dev/null
+++ b/TINKLib/Repository/Response/Stations/Station/StationInfo.cs
@@ -0,0 +1,32 @@
+using System.Runtime.Serialization;
+
+namespace TINK.Repository.Response.Stations.Station
+{
+ ///
+ /// Holds info about a single station.
+ ///
+ [DataContract]
+ public class StationInfo
+ {
+ ///
+ /// Unique id of the station.
+ ///
+ [DataMember]
+ public string station { get; private set; }
+
+ [DataMember]
+ public string[] station_group { get; private set; }
+
+ [DataMember]
+ public string description { get; private set; }
+
+ ///
+ /// Position of the station.
+ ///
+ [DataMember]
+ public Position gps { get; private set; }
+
+ [DataMember]
+ public OperatorData operator_data { get; private set; }
+ }
+}
diff --git a/TINKLib/Repository/Response/Stations/StationsAvailableResponse.cs b/TINKLib/Repository/Response/Stations/StationsAvailableResponse.cs
new file mode 100644
index 0000000..8d4e12f
--- /dev/null
+++ b/TINKLib/Repository/Response/Stations/StationsAvailableResponse.cs
@@ -0,0 +1,19 @@
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+using TINK.Repository.Response.Stations.Station;
+
+namespace TINK.Repository.Response.Stations
+{
+ ///
+ /// Holds the information about all stations and is used for deserialization of copri answer.
+ ///
+ [DataContract]
+ public class StationsAvailableResponse : ResponseBase
+ {
+ ///
+ /// Dictionary of bikes.
+ ///
+ [DataMember]
+ public Dictionary stations { get; private set; }
+ }
+}
diff --git a/TINKLib/Repository/Response/StationsAvailableResponse.cs b/TINKLib/Repository/Response/StationsAvailableResponse.cs
deleted file mode 100644
index 18db861..0000000
--- a/TINKLib/Repository/Response/StationsAvailableResponse.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-
-namespace TINK.Repository.Response
-{
- ///
- /// Holds the information about all stations and is used for deserialization of copri answer.
- ///
- [DataContract]
- public class StationsAvailableResponse : ResponseBase
- {
- ///
- /// Holds info about a single station.
- ///
- [DataContract]
- public class StationInfo
- {
- ///
- /// Holds info about opertor data.
- ///
- [DataContract]
- public class OperatorData
- {
- [DataMember]
- public string operator_name { get; private set; }
-
- [DataMember]
- public string operator_phone { get; private set; }
-
- [DataMember]
- public string operator_hours { get; private set; }
-
- [DataMember]
- public string operator_email { get; private set; }
-
-
- [DataMember]
- public string operator_color { get; private set; }
- }
-
- ///
- /// Unique id of the station.
- ///
- [DataMember]
- public string station { get; private set; }
-
- [DataMember]
- public string[] station_group { get; private set; }
-
- [DataMember]
- public string description { get; private set; }
-
- ///
- /// Position of the station.
- ///
- [DataMember]
- public Position gps { get; private set; }
-
- [DataMember]
- public OperatorData operator_data { get; private set; }
- }
-
- ///
- /// Dictionary of bikes.
- ///
- [DataMember]
- public Dictionary stations { get; private set; }
- }
-}
diff --git a/TINKLib/Services/BluetoothLock/LocksServiceInReach.cs b/TINKLib/Services/BluetoothLock/LocksServiceInReach.cs
index 173732b..abf3eae 100644
--- a/TINKLib/Services/BluetoothLock/LocksServiceInReach.cs
+++ b/TINKLib/Services/BluetoothLock/LocksServiceInReach.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@@ -10,13 +10,13 @@ using TINK.Services.BluetoothLock.Tdo;
namespace TINK.Services.BluetoothLock
{
///
- /// Facke locks service implementation which simulates locks which are in reach.
+ /// Fake locks service implementation which simulates locks which are in reach.
///
public class LocksServiceInReach : ILocksServiceFake
{
private IEnumerable LocksInfo { get; set; } = new List();
- /// Holds timeout values for series of connecting attemps to a lock or multiple locks.
+ /// Holds timeout values for series of connecting attempts to a lock or multiple locks.
public ITimeOutProvider TimeOut { get; set; }
/// Connects to lock.
@@ -45,7 +45,7 @@ namespace TINK.Services.BluetoothLock
switch (bikeInfo.State.Value)
{
case InUseStateEnum.Disposable:
- case InUseStateEnum.FeedbackPending: // State feedback pending does not exist for bluetooth locks but maches from bluetooth perspective state disposable.
+ case InUseStateEnum.FeedbackPending: // State feedback pending does not exist for bluetooth locks but matches from bluetooth perspective state disposable.
switch (lockInfo.State)
{
case LockingState.Open:
diff --git a/TINKLib/Services/BluetoothLock/LocksServiceOutOfReach.cs b/TINKLib/Services/BluetoothLock/LocksServiceOutOfReach.cs
index 4461180..57e2855 100644
--- a/TINKLib/Services/BluetoothLock/LocksServiceOutOfReach.cs
+++ b/TINKLib/Services/BluetoothLock/LocksServiceOutOfReach.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@@ -9,13 +9,13 @@ using TINK.Services.BluetoothLock.Tdo;
namespace TINK.Services.BluetoothLock
{
///
- /// Facke locks service implementation which simulates locks which are out of reach.
+ /// Fake locks service implementation which simulates locks which are out of reach.
///
public class LocksServiceOutOfReach : ILocksServiceFake
{
private IEnumerable LocksInfo { get; set; } = new List();
- /// Holds timeout values for series of connecting attemps to a lock or multiple locks.
+ /// Holds timeout values for series of connecting attempts to a lock or multiple locks.
public ITimeOutProvider TimeOut { get; set; }
/// Connects to lock.
@@ -26,7 +26,7 @@ namespace TINK.Services.BluetoothLock
return await Task.FromResult(new LockInfoTdo.Builder { Id = authInfo.Id, Guid = authInfo.Guid, State = null }.Build());
}
- /// No info availalbe because no lock is in reach.
+ /// No info centered because no lock is in reach.
/// Timeout for connect operation of a single lock.
/// Empty collection.
public async Task> GetLocksStateAsync(IEnumerable locksInfo, TimeSpan connectTimeout) => await Task.FromResult(LocksInfo);
diff --git a/TINKLib/Services/CopriApi/CopriProviderHttps.cs b/TINKLib/Services/CopriApi/CopriProviderHttps.cs
index 784472e..ce265a1 100644
--- a/TINKLib/Services/CopriApi/CopriProviderHttps.cs
+++ b/TINKLib/Services/CopriApi/CopriProviderHttps.cs
@@ -9,6 +9,7 @@ using TINK.Model.Device;
using TINK.Repository;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TINK.Model.Services.CopriApi
{
@@ -18,7 +19,7 @@ namespace TINK.Model.Services.CopriApi
/// Object which manages stored copri answers.
private ICopriCache CacheServer { get; }
- /// Communicates whith copri server.
+ /// Communicates with copri server.
private ICopriServer HttpsServer { get; }
/// True if connector has access to copri server, false if cached values are used.
@@ -30,9 +31,9 @@ namespace TINK.Model.Services.CopriApi
/// Gets the merchant id.
public string MerchantId => HttpsServer.MerchantId;
- /// Constructs copri provider object to connet to https using a cache objet.
+ /// Constructs copri provider object to connect to https using a cache object.
///
- /// Provides app related info (app name and version, merchantid) to pass to COPRI.
+ /// Provides app related info (app name and version, merchant id) to pass to COPRI.
/// Two letter ISO language name.
/// Holds info about smart device.
/// Cookie of user if a user is logged in, false otherwise.
@@ -68,7 +69,7 @@ namespace TINK.Model.Services.CopriApi
try
{
- Log.ForContext().Debug($"Querrying bikes available from copri.");
+ Log.ForContext().Debug($"Querying bikes available from copri.");
var bikesAvailableResponse = await HttpsServer.GetBikesAvailableAsync();
return new Result(
typeof(CopriCallsHttps),
@@ -78,13 +79,13 @@ namespace TINK.Model.Services.CopriApi
catch (Exception exception)
{
// Return response from cache.
- Log.ForContext().Debug("An error occurred querrying bikes available. {Exception}.", exception);
+ Log.ForContext().Debug("An error occurred querying bikes available. {Exception}.", exception);
var bikesAvailableResponse = await CacheServer.GetBikesAvailableAsync();
return new Result(typeof(CopriCallsMonkeyStore), bikesAvailableResponse, bikesAvailableResponse.GetGeneralData(), exception);
}
}
- /// Gets a list of bikes reserved/ booked by acctive user.
+ /// Gets a list of bikes reserved/ booked by active user.
/// Cookie to authenticate user.
/// Response holding list of bikes.
public async Task> GetBikesOccupied(bool fromCache = false)
@@ -101,7 +102,7 @@ namespace TINK.Model.Services.CopriApi
try
{
- Log.ForContext().Debug($"Querrying bikes occupied from copri.");
+ Log.ForContext().Debug($"Querying bikes occupied from copri.");
var bikesOccupiedResponse = await HttpsServer.GetBikesOccupiedAsync();
return new Result(
typeof(CopriCallsHttps),
@@ -112,7 +113,7 @@ namespace TINK.Model.Services.CopriApi
catch (Exception exception)
{
// Return response from cache.
- Log.ForContext().Debug("An error occurred querrying bikes occupied. {Exception}.", exception);
+ Log.ForContext().Debug("An error occurred querying bikes occupied. {Exception}.", exception);
var bikesOccupiedResponse = await CacheServer.GetBikesOccupiedAsync();
return new Result(typeof(CopriCallsMonkeyStore), bikesOccupiedResponse, bikesOccupiedResponse.GetGeneralData(), exception);
}
@@ -134,7 +135,7 @@ namespace TINK.Model.Services.CopriApi
try
{
- Log.ForContext().Debug($"Querrying stations from copri.");
+ Log.ForContext().Debug($"Querying stations from copri.");
var stations = await HttpsServer.GetStationsAsync();
@@ -146,7 +147,7 @@ namespace TINK.Model.Services.CopriApi
catch (Exception exception)
{
// Return response from cache.
- Log.ForContext().Debug("An error occurred querrying stations. {Exception}.", exception);
+ Log.ForContext().Debug("An error occurred querying stations. {Exception}.", exception);
var stationsResponse = await CacheServer.GetStationsAsync();
return new Result(typeof(CopriCallsMonkeyStore), stationsResponse, stationsResponse.GetGeneralData(), exception);
}
diff --git a/TINKLib/Services/CopriApi/CopriProviderMonkeyStore.cs b/TINKLib/Services/CopriApi/CopriProviderMonkeyStore.cs
index 3085e64..2961e2a 100644
--- a/TINKLib/Services/CopriApi/CopriProviderMonkeyStore.cs
+++ b/TINKLib/Services/CopriApi/CopriProviderMonkeyStore.cs
@@ -7,6 +7,7 @@ using TINK.Model.Device;
using TINK.Repository;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
using TINK.Services.CopriApi.Exception;
namespace TINK.Model.Services.CopriApi
diff --git a/TINKLib/Services/CopriApi/ICachedCopriServer.cs b/TINKLib/Services/CopriApi/ICachedCopriServer.cs
index 8659714..046e7ed 100644
--- a/TINKLib/Services/CopriApi/ICachedCopriServer.cs
+++ b/TINKLib/Services/CopriApi/ICachedCopriServer.cs
@@ -1,7 +1,8 @@
-
+
using System.Threading.Tasks;
using TINK.Repository;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TINK.Model.Services.CopriApi
{
@@ -16,7 +17,7 @@ namespace TINK.Model.Services.CopriApi
/// Response holding list of bikes.
Task> GetBikesAvailable(bool fromCache = false);
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
/// Response holding list of bikes.
Task> GetBikesOccupied(bool fromCache = false);
diff --git a/TINKLib/Services/CopriApi/ICopriCache.cs b/TINKLib/Services/CopriApi/ICopriCache.cs
index fcaa471..4e73278 100644
--- a/TINKLib/Services/CopriApi/ICopriCache.cs
+++ b/TINKLib/Services/CopriApi/ICopriCache.cs
@@ -1,5 +1,6 @@
using TINK.Repository;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TINK.Model.Services.CopriApi
{
diff --git a/TINKLib/Services/CopriApi/Polling.cs b/TINKLib/Services/CopriApi/Polling.cs
index 2cca2e7..c155379 100644
--- a/TINKLib/Services/CopriApi/Polling.cs
+++ b/TINKLib/Services/CopriApi/Polling.cs
@@ -112,7 +112,7 @@ namespace TINK.Services.CopriApi
if (lockingState == null)
{
// User did not take bike out of the station
- throw new BikeStillInStationException("Booking was cancelled because bike is still in station.");
+ throw new BikeStillInStationException("Booking was canceled because bike is still in station.");
}
// Upate booking state.
diff --git a/TINKLib/Services/CopriApi/Result.cs b/TINKLib/Services/CopriApi/Result.cs
index dd53699..96bfe97 100644
--- a/TINKLib/Services/CopriApi/Result.cs
+++ b/TINKLib/Services/CopriApi/Result.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using TINK.Services.CopriApi;
namespace TINK.Model.Services.CopriApi
@@ -10,7 +10,7 @@ namespace TINK.Model.Services.CopriApi
///
/// Type of source (data provider).
/// Requested data (bikes, station).
- /// General data (common to all respones).
+ /// General data (common to all responses).
public Result(
Type source,
T response,
diff --git a/TINKLib/Services/CopriApi/StationsAndBikesContainer.cs b/TINKLib/Services/CopriApi/StationsAndBikesContainer.cs
index 0a9bf8f..e04bbec 100644
--- a/TINKLib/Services/CopriApi/StationsAndBikesContainer.cs
+++ b/TINKLib/Services/CopriApi/StationsAndBikesContainer.cs
@@ -1,5 +1,5 @@
-using TINK.Model.Bikes;
-using TINK.Model.Station;
+using TINK.Model.Bikes;
+using TINK.Model.Stations;
namespace TINK.Model.Services.CopriApi
{
diff --git a/TINKLib/Services/Geolocation/GeolocationService.cs b/TINKLib/Services/Geolocation/GeolocationService.cs
index a24577a..eb429d3 100644
--- a/TINKLib/Services/Geolocation/GeolocationService.cs
+++ b/TINKLib/Services/Geolocation/GeolocationService.cs
@@ -30,7 +30,7 @@ namespace TINK.Services.Geolocation
/// Gets the current location.
/// Token to cancel request for geolocation.
- /// Time when geolocation is of interest. Is used to determine whether cached geoloation can be used or not.
+ /// Time when geolocation is of interest. Is used to determine whether cached geolocation can be used or not.
public async Task GetAsync(CancellationToken? cancellationToken = null, DateTime? timeStamp = null)
{
try
diff --git a/TINKLib/Services/Geolocation/IGeolocationService.cs b/TINKLib/Services/Geolocation/IGeolocationService.cs
index f2bced7..791b3ae 100644
--- a/TINKLib/Services/Geolocation/IGeolocationService.cs
+++ b/TINKLib/Services/Geolocation/IGeolocationService.cs
@@ -2,7 +2,6 @@ using System;
using System.Threading;
using System.Threading.Tasks;
using TINK.Model.Device;
-using Xamarin.Essentials;
namespace TINK.Services.Geolocation
{
@@ -11,7 +10,7 @@ namespace TINK.Services.Geolocation
{
/// Gets the current location.
/// Token to cancel request for geolocation. If null request can not be cancels and times out after GeolocationService.GEOLOCATIONREQUEST_TIMEOUT_MS if geolocation is not available.
- /// Time when geolocation is of interest. Is used to determine for some implementations whether cached geoloation can be used or not.
+ /// Time when geolocation is of interest. Is used to determine for some implementations whether cached geolocation can be used or not.
///
Task GetAsync(CancellationToken? cancellationToken = null, DateTime? timeStamp = null);
diff --git a/TINKLib/Services/Geolocation/LastKnownGeolocationService.cs b/TINKLib/Services/Geolocation/LastKnownGeolocationService.cs
index 4a28338..0ea884e 100644
--- a/TINKLib/Services/Geolocation/LastKnownGeolocationService.cs
+++ b/TINKLib/Services/Geolocation/LastKnownGeolocationService.cs
@@ -18,7 +18,7 @@ namespace TINK.Services.Geolocation
/// Gets the current location.
/// Token to cancel request for geolocation.
- /// Time when geolocation is of interest. Is used to determine whether cached geoloation can be used or not.
+ /// Time when geolocation is of interest. Is used to determine whether cached geolocation can be used or not.
public async Task GetAsync(CancellationToken? cancelationToken = null, DateTime? timeStamp = null)
{
IGeolocation location;
diff --git a/TINKLib/Services/Geolocation/SimulatedGeolocationService.cs b/TINKLib/Services/Geolocation/SimulatedGeolocationService.cs
index c0c3e34..cc971bc 100644
--- a/TINKLib/Services/Geolocation/SimulatedGeolocationService.cs
+++ b/TINKLib/Services/Geolocation/SimulatedGeolocationService.cs
@@ -17,7 +17,7 @@ namespace TINK.Services.Geolocation
/// Gets the current location.
/// Token to cancel request for geolocation.
- /// Time when geolocation is of interest. Is used to determine whether cached geoloation can be used or not.
+ /// Time when geolocation is of interest. Is used to determine whether cached geolocation can be used or not.
public async Task GetAsync(CancellationToken? cancelToken = null, DateTime? timeStamp = null)
{
return await Task.FromResult(new Geolocation.Builder {
diff --git a/TINKLib/View/IViewService.cs b/TINKLib/View/IViewService.cs
index 7324f17..d2165e4 100644
--- a/TINKLib/View/IViewService.cs
+++ b/TINKLib/View/IViewService.cs
@@ -1,4 +1,4 @@
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
namespace TINK.View
@@ -114,7 +114,7 @@ namespace TINK.View
public interface IUserFeedback
{
///
- /// Holds the current chargeing level of the battery in bars, null if unkonwn.
+ /// Holds the current charging level of the battery in bars, null if unknown.
///
int? CurrentChargeBars { get; set; }
diff --git a/TINKLib/ViewModel/Account/AccountPageViewModel.cs b/TINKLib/ViewModel/Account/AccountPageViewModel.cs
index b97481d..7d00b30 100644
--- a/TINKLib/ViewModel/Account/AccountPageViewModel.cs
+++ b/TINKLib/ViewModel/Account/AccountPageViewModel.cs
@@ -1,4 +1,4 @@
-
+
using System;
using System.ComponentModel;
using System.Threading.Tasks;
@@ -49,8 +49,8 @@ namespace TINK.ViewModel.Account
///
/// Filter to apply on stations and bikes.
/// Available copri server host uris including uri to use for next start.
- /// Holds whether to poll or not and the periode leght is polling is on.
- /// Default polling periode lenght.
+ /// Holds whether to poll or not and the period length is polling is on.
+ /// Default polling period length.
/// Controls logging level.
/// Interface to view
public AccountPageViewModel(
@@ -159,7 +159,7 @@ namespace TINK.ViewModel.Account
}
///
- /// Gets a value indicating whether booking state info is avilable or not.
+ /// Gets a value indicating whether booking state info is available or not.
///
public bool IsBookingStateInfoVisible
{
@@ -429,7 +429,7 @@ namespace TINK.ViewModel.Account
}
}
- /// Polling periode.
+ /// Polling period.
public PollingViewModel Polling { get; }
/// Opens login page.
diff --git a/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandler/Disposable.cs b/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandler/Disposable.cs
index 1767b3c..bffa8d0 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandler/Disposable.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandler/Disposable.cs
@@ -44,7 +44,7 @@ namespace TINK.ViewModel.Bikes.Bike.BC.RequestHandler
if (l_oResult == false)
{
// User aborted booking process
- Log.ForContext().Information("User selected availalbe bike {l_oId} in order to reserve but action was canceled.", SelectedBike.Id);
+ Log.ForContext().Information("User selected centered bike {l_oId} in order to reserve but action was canceled.", SelectedBike.Id);
BikesViewModel.IsIdle = true;
return this;
}
@@ -77,7 +77,7 @@ namespace TINK.ViewModel.Bikes.Bike.BC.RequestHandler
|| exception is RequestNotCachableException)
{
// Copri server is not reachable.
- Log.ForContext().Information("User selected availalbe bike {l_oId} but reserving failed (Copri server not reachable).", SelectedBike.Id);
+ Log.ForContext().Information("User selected centered bike {l_oId} but reserving failed (Copri server not reachable).", SelectedBike.Id);
BikesViewModel.ActionText = string.Empty;
await ViewService.DisplayAlert(
@@ -87,7 +87,7 @@ namespace TINK.ViewModel.Bikes.Bike.BC.RequestHandler
}
else
{
- Log.ForContext().Error("User selected availalbe bike {l_oId} but reserving failed. {@l_oException}", SelectedBike.Id, exception);
+ Log.ForContext().Error("User selected centered bike {l_oId} but reserving failed. {@l_oException}", SelectedBike.Id, exception);
BikesViewModel.ActionText = string.Empty;
await ViewService.DisplayAlert(AppResources.MessageReservingBikeErrorGeneralTitle, exception.Message, AppResources.MessageAnswerOk);
diff --git a/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandler/Reserved.cs b/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandler/Reserved.cs
index d8df384..44f13a8 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandler/Reserved.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandler/Reserved.cs
@@ -61,7 +61,7 @@ namespace TINK.ViewModel.Bikes.Bike.BC.RequestHandler
await ConnectorFactory(IsConnected).Command.DoCancelReservation(SelectedBike);
- // If canceling bike succedes remove bike because it is not ready to be booked again
+ // If canceling bike succeeds remove bike because it is not ready to be booked again
IsRemoveBikeRequired = true;
}
catch (Exception exception)
diff --git a/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandlerFactory.cs b/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandlerFactory.cs
index e8cbf70..cd73aeb 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandlerFactory.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BC/RequestHandlerFactory.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using TINK.Model.Connector;
using TINK.Model.Device;
using TINK.Model.User;
@@ -37,7 +37,7 @@ namespace TINK.ViewModel.Bikes.Bike.BC
activeUser);
case Model.State.InUseStateEnum.Reserved:
- // Reservation can be cancelled.
+ // Reservation can be canceled.
return new Reserved(
selectedBike,
isConnectedDelegate,
diff --git a/TINKLib/ViewModel/Bikes/Bike/BikeViewModelBase.cs b/TINKLib/ViewModel/Bikes/Bike/BikeViewModelBase.cs
index a0ac07d..7975b15 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BikeViewModelBase.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BikeViewModelBase.cs
@@ -2,6 +2,7 @@ using Serilog;
using System;
using System.ComponentModel;
using System.Text.RegularExpressions;
+using TINK.Model.Bikes.BikeInfoNS.BikeNS;
#if !USEFLYOUT
#endif
using TINK.Model.Connector;
@@ -38,7 +39,7 @@ namespace TINK.ViewModel.Bikes.Bike
///
protected IViewService ViewService { get; }
- /// Provides a connect orobject.
+ /// Provides a connect object.
protected Func ConnectorFactory { get; }
/// Delegate to retrieve connected state.
@@ -75,7 +76,7 @@ namespace TINK.ViewModel.Bikes.Bike
public abstract event PropertyChangedEventHandler PropertyChanged;
///
- /// Notfies childs about changed bike state.
+ /// Notifies children about changed bike state.
///
public abstract void OnSelectedBikeStateChanged();
@@ -175,6 +176,11 @@ namespace TINK.ViewModel.Bikes.Bike
public string TypeOfBike => Bike.GetDisplayTypeOfBike();
+ ///
+ /// Gets whether bike is a AA bike (bike must be always returned a the same station) or AB bike (start and end stations can be different stations).
+ ///
+ public AaRideType? AaRideType => Bike.AaRideType;
+
public string WheelType => Bike.GetDisplayWheelType();
///
@@ -187,6 +193,8 @@ namespace TINK.ViewModel.Bikes.Bike
///
public string Id => Bike.Id;
+ public string StationId => $"Station {Bike.StationId}";
+
public bool IsBikeWithCopriLock => Bike.LockModel == Model.Bikes.BikeInfoNS.BikeNS.LockModel.Sigo;
/// Returns if type of bike is a cargo pedelec bike.
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/BikeViewModel.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/BikeViewModel.cs
index 9f6038d..c359539 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/BikeViewModel.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/BikeViewModel.cs
@@ -23,6 +23,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock
public class BikeViewModel : BikeViewModelBase, INotifyPropertyChanged
{
public Xamarin.Forms.Command ShowTrackingInfoCommand { get; private set; }
+ public Xamarin.Forms.Command ShowRideTypeInfoCommand { get; private set; }
/// Notifies GUI about changes.
public override event PropertyChangedEventHandler PropertyChanged;
@@ -112,6 +113,15 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock
});
+ ShowRideTypeInfoCommand = new Xamarin.Forms.Command(async () => {
+
+ await ViewService.DisplayAlert(
+ AppResources.MessageAaRideTypeInfoTitle,
+ TariffDescription.RideTypeText,
+ AppResources.MessageAnswerOk);
+
+ });
+
RequestHandler = user.IsLoggedIn
? RequestHandlerFactory.Create(
selectedBike,
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedClosed.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedClosed.cs
index 2e71688..c54c352 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedClosed.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedClosed.cs
@@ -101,7 +101,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, GeolocationService, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
}
- // Check if quering geolocation is required.
+ // Check if querying geolocation is required.
if (currentLocation == null)
{
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationStart;
@@ -216,7 +216,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
SelectedBike,
currentLocationDto);
- // If canceling bike succedes remove bike because it is not ready to be booked again
+ // If canceling bike succeeds remove bike because it is not ready to be booked again
IsRemoveBikeRequired = true;
}
catch (Exception exception)
@@ -238,7 +238,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
// COPRI returned an error.
Log.ForContext().Information(
- "User selected booked bike {bike} but returning failed. COPRI returned out of GEO fencing error. Postion send to COPRI {@position}.",
+ "User selected booked bike {bike} but returning failed. COPRI returned out of GEO fencing error. Position send to COPRI {@position}.",
SelectedBike,
currentLocationDto);
@@ -427,7 +427,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
"OK");
}
- // When bold is blocked lock is still closed even if exception occurres.
+ // When bold is blocked lock is still closed even if exception occurs.
// In all other cases state is supposed to be unknown. Example: Lock is out of reach and no more bluetooth connected.
SelectedBike.LockInfo.State = exception is StateAwareException stateAwareException
? stateAwareException.State
@@ -449,13 +449,13 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
if (exception is OutOfReachException)
{
- Log.ForContext().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
+ Log.ForContext().Debug("Battery state can not be read, bike out of range. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
}
else
{
- Log.ForContext().Error("Akkustate can not be read. {Exception}", exception);
+ Log.ForContext().Error("Battery state can not be read. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
}
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedDisconnected.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedDisconnected.cs
index 0ef34ab..675dea1 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedDisconnected.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedDisconnected.cs
@@ -55,7 +55,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
///
public async Task HandleRequestOption2() => await ConnectLock();
- /// Requst is not supported, button should be disabled.
+ /// Request is not supported, button should be disabled.
///
public async Task UnsupportedRequest()
{
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedOpen.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedOpen.cs
index 60da064..d3b1818 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedOpen.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedOpen.cs
@@ -119,11 +119,11 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
return this;
}
- // Start of closing lock and returing bike sequence.
+ // Start of closing lock and returning bike sequence.
Log.ForContext().Information("Request to return bike {bike} detected.", SelectedBike);
- // Clear logging memory sink to avoid passing log data not related to returning of bike to backend.
- // Log data is passed to backend when calling CopriCallsHttps.DoReturn().
+ // Clear logging memory sink to avoid passing log data not related to returning of bike to back-end.
+ // Log data is passed to back end when calling CopriCallsHttps.DoReturn().
MemoryStackSink.ClearMessages();
// Stop polling before returning bike.
@@ -260,7 +260,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
// Check locking state.
if (SelectedBike.LockInfo.State != LockingState.Closed)
{
- Log.ForContext().Error($"Lock can not be closed. Invalid locking state state {SelectedBike.LockInfo.State} detected.");
+ Log.ForContext().Error($"Lock can not be closed. Invalid locking state {SelectedBike.LockInfo.State} detected.");
BikesViewModel.ActionText = string.Empty;
@@ -298,7 +298,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
catch (Exception innerExWhenAll)
{
// No location information available.
- Log.ForContext().Information("Canceling query location/ updating lock state failed failed on unexpected lock state failed. {Exception}", SelectedBike, innerExWhenAll);
+ Log.ForContext().Information("Canceling query location/ updating lock state failed on unexpected lock state failed. {Exception}", SelectedBike, innerExWhenAll);
}
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
@@ -360,7 +360,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
SelectedBike,
currentLocationDto,
SmartDevice);
- // If canceling bike succedes remove bike because it is not ready to be booked again
+ // If canceling bike succeeds remove bike because it is not ready to be booked again
IsRemoveBikeRequired = true;
}
catch (Exception exception)
@@ -382,7 +382,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
// COPRI returned an error.
Log.ForContext().Information(
- "User selected booked bike {bike} but returning failed. COPRI returned out of GEO fencing error. Postion send to COPRI {@position}.",
+ "User selected booked bike {bike} but returning failed. COPRI returned out of GEO fencing error. Position send to COPRI {@position}.",
SelectedBike,
currentLocationDto);
@@ -510,8 +510,8 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
BikesViewModel.IsIdle = false;
Log.ForContext().Information("User request to lock bike {bike} in order to pause ride.", SelectedBike);
- // Clear logging memory sink to avoid passing log data not related to returning of bike to backend.
- // Log data is passed to backend when calling CopriCallsHttps.DoReturn().
+ // Clear logging memory sink to avoid passing log data not related to returning of bike to back end.
+ // Log data is passed to back end when calling CopriCallsHttps.DoReturn().
MemoryStackSink.ClearMessages();
// Start getting geolocation.
@@ -608,7 +608,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, GeolocationService, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
}
- // Get geoposition.
+ // Get geolocation.
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocation;
IGeolocation currentLocation = null;
try
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedUnknown.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedUnknown.cs
index a95a651..cc256b7 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedUnknown.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/BookedUnknown.cs
@@ -14,7 +14,6 @@ using TINK.Services.BluetoothLock;
using TINK.Services.BluetoothLock.Exception;
using TINK.Services.Geolocation;
using TINK.View;
-using Xamarin.Essentials;
namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
@@ -126,7 +125,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
AppResources.MessageAnswerOk);
}
- // When bold is blocked lock is still closed even if exception occurres.
+ // When bold is blocked lock is still closed even if exception occurs.
// In all other cases state is supposed to be unknown. Example: Lock is out of reach and no more bluetooth connected.
SelectedBike.LockInfo.State = exception is StateAwareException stateAwareException
? stateAwareException.State
@@ -148,13 +147,13 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
if (exception is OutOfReachException)
{
- Log.ForContext().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
+ Log.ForContext().Debug("Battery state can not be read, bike out of range. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
}
else
{
- Log.ForContext().Error("Akkustate can not be read. {Exception}", exception);
+ Log.ForContext().Error("Battery state can not be read. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
}
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/DisposableDisconnected.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/DisposableDisconnected.cs
index 98f98a4..a3f29d1 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/DisposableDisconnected.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/DisposableDisconnected.cs
@@ -69,7 +69,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
if (alertResult == false)
{
// User aborted booking process
- Log.ForContext().Information("User selected availalbe bike {bike} in order to reserve but action was canceled.", SelectedBike);
+ Log.ForContext().Information("User selected centered bike {bike} in order to reserve but action was canceled.", SelectedBike);
BikesViewModel.IsIdle = true;
return this;
}
@@ -106,7 +106,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|| exception is RequestNotCachableException)
{
// Copri server is not reachable.
- Log.ForContext().Information("User selected availalbe bike {bike} but reserving failed (Copri server not reachable).", SelectedBike);
+ Log.ForContext().Information("User selected centered bike {bike} but reserving failed (Copri server not reachable).", SelectedBike);
await ViewService.DisplayAlert(
AppResources.MessageReservingBikeErrorConnectionTitle,
@@ -115,7 +115,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
}
else
{
- Log.ForContext().Error("User selected availalbe bike {bike} but reserving failed. {@l_oException}", SelectedBike, exception);
+ Log.ForContext().Error("User selected centered bike {bike} but reserving failed. {@l_oException}", SelectedBike, exception);
await ViewService.DisplayAlert(
AppResources.MessageReservingBikeErrorGeneralTitle,
@@ -346,13 +346,13 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
if (exception is OutOfReachException)
{
- Log.ForContext().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
+ Log.ForContext().Debug("Battery state can not be read, bike out of range. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
}
else
{
- Log.ForContext().Error("Akkustate can not be read. {Exception}", exception);
+ Log.ForContext().Error("Battery state can not be read. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
}
@@ -407,7 +407,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, GeolocationService, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
}
- /// Requst is not supported, button should be disabled.
+ /// Request is not supported, button should be disabled.
///
public async Task UnsupportedRequest()
{
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/DisposableOpen.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/DisposableOpen.cs
index ba9ecea..3245b6b 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/DisposableOpen.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/DisposableOpen.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading.Tasks;
using Serilog;
using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
@@ -26,7 +26,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
/// Bike is disposable, lock is open and can be reached via bluetooth.
///
- /// This state should never occure because as long as a ILOCKIT is connected it
+ /// This state should never occur because as long as a ILOCKIT is connected it
/// - cannot be closed manually
/// - no other device can access lock
/// - app itself should never event attempt to open a lock which is not rented.
@@ -177,19 +177,19 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
if (exception is OutOfReachException)
{
- Log.ForContext().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
+ Log.ForContext().Debug("Battery state can not be read, bike out of range. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
}
else
{
- Log.ForContext().Error("Akkustate can not be read. {Exception}", exception);
+ Log.ForContext().Error("Battery state can not be read. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
}
}
- // Notify corpi about unlock action in order to start booking.
+ // Notify copri about unlock action in order to start booking.
BikesViewModel.ActionText = AppResources.ActivityTextRentingBike;
IsConnected = IsConnectedDelegate();
try
@@ -270,7 +270,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, GeolocationService, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
}
- /// Requst is not supported, button should be disabled.
+ /// Request is not supported, button should be disabled.
///
public async Task UnsupportedRequest()
{
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedClosed.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedClosed.cs
index c998fe5..1605f68 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedClosed.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedClosed.cs
@@ -16,11 +16,11 @@ using IBikeInfoMutable = TINK.Model.Bikes.BikeInfoNS.BluetoothLock.IBikeInfoMuta
namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
- /// Bike is reserved, lock is closed and and connected to app.
+ /// Bike is reserved, lock is closed and connected to app.
///
- /// Occures when
- /// - biks was reserved out of reach and is in reach now
- /// - bike is is reserved while in reach
+ /// Occurs when
+ /// - bike was reserved out of reach and is in reach now
+ /// - bike is reserved while in reach
///
public class ReservedClosed : Base, IRequestHandler
{
@@ -91,7 +91,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
await ConnectorFactory(IsConnected).Command.DoCancelReservation(SelectedBike);
- // If canceling bike succedes remove bike because it is not ready to be booked again
+ // If canceling bike succeeds remove bike because it is not ready to be booked again
IsRemoveBikeRequired = true;
}
catch (Exception exception)
@@ -311,13 +311,13 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
if (exception is OutOfReachException)
{
- Log.ForContext().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
+ Log.ForContext().Debug("Battery state can not be read, bike out of range. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
}
else
{
- Log.ForContext().Error("Akkustate can not be read. {Exception}", exception);
+ Log.ForContext().Error("Battery state can not be read. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
}
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedDisconnected.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedDisconnected.cs
index 4c9bc91..dfad42f 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedDisconnected.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedDisconnected.cs
@@ -51,7 +51,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
/// Cancel reservation.
public async Task HandleRequestOption1() => await CancelReservation();
- /// Connect to reserved bike ask whether to book bike bike or not and if yes open lock.
+ /// Connect to reserved bike ask whether to book bike or not and if yes open lock.
///
public async Task HandleRequestOption2() => await ConnectLockAndBook();
@@ -86,7 +86,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
await ConnectorFactory(IsConnected).Command.DoCancelReservation(SelectedBike);
- // If canceling bike succedes remove bike because it is not ready to be booked again
+ // If canceling bike succeeds remove bike because it is not ready to be booked again
IsRemoveBikeRequired = true;
}
catch (Exception exception)
@@ -136,7 +136,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, GeolocationService, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
}
- /// Connect to reserved bike ask whether to book bike bike or not and if yes open lock.
+ /// Connect to reserved bike ask whether to book bike or not and if yes open lock.
///
public async Task ConnectLockAndBook()
{
@@ -474,13 +474,13 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
if (exception is OutOfReachException)
{
- Log.ForContext().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
+ Log.ForContext().Debug("Battery state can not be read, bike out of range. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
}
else
{
- Log.ForContext().Error("Akkustate can not be read. {Exception}", exception);
+ Log.ForContext().Error("Battery state can not be read. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
}
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedOpen.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedOpen.cs
index 9628ef7..8bb7a1f 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedOpen.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedOpen.cs
@@ -17,10 +17,10 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
/// Bike is reserved, lock is open and connected to app.
///
- /// This state might occure when a ILOCKIT was manually opened (color code) and app connects afterwards.
+ /// This state might occur when a ILOCKIT was manually opened (color code) and app connects afterwards.
/// This should never during ILOCKIT is connected to app because
/// - manually opening lock is not possible when lock is connected
- /// - two devices can not simultaneously conect to same lock.
+ /// - two devices can not simultaneously connect to same lock.
public class ReservedOpen : Base, IRequestHandler
{
/// Provides info about the smart device (phone, tablet, ...)
@@ -89,13 +89,13 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
if (exception is OutOfReachException)
{
- Log.ForContext().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
+ Log.ForContext().Debug("Battery state can not be read, bike out of range. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
}
else
{
- Log.ForContext().Error("Akkustate can not be read. {Exception}", exception);
+ Log.ForContext().Error("Battery state can not be read. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
}
@@ -229,7 +229,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
await ConnectorFactory(IsConnected).Command.DoCancelReservation(SelectedBike);
- // If canceling bike succedes remove bike because it is not ready to be booked again
+ // If canceling bike succeeds remove bike because it is not ready to be booked again
IsRemoveBikeRequired = true;
}
catch (Exception exception)
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedUnknown.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedUnknown.cs
index c9a657f..e26921a 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedUnknown.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandler/ReservedUnknown.cs
@@ -122,7 +122,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
AppResources.MessageAnswerOk);
}
- // When bold is blocked lock is still closed even if exception occurres.
+ // When bold is blocked lock is still closed even if exception occurs.
// In all other cases state is supposed to be unknown. Example: Lock is out of reach and no more bluetooth connected.
SelectedBike.LockInfo.State = exception is StateAwareException stateAwareException
? stateAwareException.State
@@ -144,13 +144,13 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
if (exception is OutOfReachException)
{
- Log.ForContext().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
+ Log.ForContext().Debug("Battery state can not be read, bike out of range. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
}
else
{
- Log.ForContext().Error("Akkustate can not be read. {Exception}", exception);
+ Log.ForContext().Error("Battery state can not be read. {Exception}", exception);
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
}
@@ -310,7 +310,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, GeolocationService, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
}
- // Get geoposition.
+ // Get geolocation.
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocation;
IGeolocation currentLocation = null;
try
diff --git a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandlerFactory.cs b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandlerFactory.cs
index 0e972da..c44569f 100644
--- a/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandlerFactory.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/BluetoothLock/RequestHandlerFactory.cs
@@ -43,11 +43,11 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock
{
case Model.State.InUseStateEnum.Disposable:
- // Bike is reserved, selecte action depending on lock state.
+ // Bike is reserved, select action depending on lock state.
switch (selectedBluetoothLockBike.LockInfo.State)
{
case LockingState.Closed:
- // Unexepected state detected.
+ // Unexpected state detected.
// This state is unexpected because connection is closed
// - when reservation is canceled or
// - when bike is returned.
@@ -60,13 +60,13 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock
case LockingState.Open:
case LockingState.UnknownFromHardwareError:
- // Unexepected state detected.
+ // Unexpected state detected.
/// This state is unexpected because
/// - app does not allow to return bike/ cancel reservation when lock is closed
/// - as long as app is connected to lock
/// - lock can not be opened manually
/// - no other device can access lock
- /// Nevetheless this state is not expected let user either
+ /// Nevertheless this state is not expected let user either
/// - close lock or
/// - rent bike
///
@@ -100,7 +100,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock
case Model.State.InUseStateEnum.Reserved:
- // Bike is reserved, selecte action depending on lock state.
+ // Bike is reserved, select action depending on lock state.
switch (selectedBluetoothLockBike.LockInfo.State)
{
case LockingState.Closed:
@@ -132,7 +132,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock
case LockingState.Open:
// Unwanted state detected.
- /// This state might occure when a ILOCKIT was manually opened (color code) and app connects afterwards.
+ /// This state might occur when a ILOCKIT was manually opened (color code) and app connects afterwards.
Log.Error("Unwanted state {BookingState}/ {LockingState} detected.", selectedBluetoothLockBike.State.Value, selectedBluetoothLockBike.LockInfo.State);
return new ReservedOpen(
selectedBluetoothLockBike,
@@ -167,7 +167,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock
case Model.State.InUseStateEnum.Booked:
- // Bike is booked, selecte action depending on lock state.
+ // Bike is booked, select action depending on lock state.
switch (selectedBluetoothLockBike.LockInfo.State)
{
case LockingState.Closed:
@@ -214,7 +214,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock
default:
// Invalid state detected.
- // If bike is booked lock state must be querried before creating view model.
+ // If bike is booked lock state must be queried before creating view model.
return new BookedDisconnected(
selectedBluetoothLockBike,
isConnectedDelegate,
diff --git a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/BookedClosed.cs b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/BookedClosed.cs
index 7866792..43b0cf3 100644
--- a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/BookedClosed.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/BookedClosed.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading.Tasks;
using Serilog;
using TINK.Model.Bikes.BikeInfoNS.CopriLock;
@@ -47,7 +47,7 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
/// Open bike and update COPRI lock state.
public async Task HandleRequestOption2() => await OpenLock();
- /// Requst is not supported, button should be disabled.
+ /// Request is not supported, button should be disabled.
public async Task UnsupportedRequest()
{
Log.ForContext().Error("Click of unsupported button click detected.");
diff --git a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/BookedOpen.cs b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/BookedOpen.cs
index 378e699..4910625 100644
--- a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/BookedOpen.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/BookedOpen.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading.Tasks;
using Serilog;
using TINK.Model.Bikes.BikeInfoNS.CopriLock;
@@ -48,7 +48,7 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
/// Close lock in order to pause ride and update COPRI lock state.
public async Task HandleRequestOption2() => await OpenLock();
- /// Requst is not supported, button should be disabled.
+ /// Request is not supported, button should be disabled.
public async Task UnsupportedRequest()
{
Log.ForContext().Error("Click of unsupported button click detected.");
diff --git a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/DisposableClosed.cs b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/DisposableClosed.cs
index 3e0b9c1..fc5334f 100644
--- a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/DisposableClosed.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/DisposableClosed.cs
@@ -63,7 +63,7 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
if (alertResult == false)
{
// User aborted booking process
- Log.ForContext().Information("User selected bike {bike} in order to book and release bike from station but action was cancelled.", SelectedBike);
+ Log.ForContext().Information("User selected bike {bike} in order to book and release bike from station but action was canceled.", SelectedBike);
BikesViewModel.IsIdle = true;
return this;
@@ -139,7 +139,7 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
if (alertResult == false)
{
// User aborted booking process
- Log.ForContext().Information("User selected availalbe bike {bike} in order to reserve but action was canceled.", SelectedBike);
+ Log.ForContext().Information("User selected centered bike {bike} in order to reserve but action was canceled.", SelectedBike);
BikesViewModel.IsIdle = true;
return this;
}
@@ -175,7 +175,7 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
|| exception is RequestNotCachableException)
{
// Copri server is not reachable.
- Log.ForContext().Information("User selected availalbe bike {bike} but reserving failed (Copri server not reachable).", SelectedBike);
+ Log.ForContext().Information("User selected centered bike {bike} but reserving failed (Copri server not reachable).", SelectedBike);
await ViewService.DisplayAdvancedAlert(
AppResources.MessageReservingBikeErrorConnectionTitle,
@@ -185,7 +185,7 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
}
else
{
- Log.ForContext().Error("User selected availalbe bike {bike} but reserving failed. {@exception}", SelectedBike, exception);
+ Log.ForContext().Error("User selected centered bike {bike} but reserving failed. {@exception}", SelectedBike, exception);
await ViewService.DisplayAlert(
AppResources.MessageReservingBikeErrorGeneralTitle,
diff --git a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/FeedbackPending.cs b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/FeedbackPending.cs
index 8b7966f..f05cc57 100644
--- a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/FeedbackPending.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/FeedbackPending.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading.Tasks;
using Serilog;
using TINK.Model.Bikes.BikeInfoNS.CopriLock;
@@ -46,7 +46,7 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
/// Open bike and update COPRI lock state.
public async Task HandleRequestOption2() => await GiveFeedback();
- /// Requst is not supported, button should be disabled.
+ /// Request is not supported, button should be disabled.
///
public async Task UnsupportedRequest()
{
@@ -110,7 +110,7 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
if (SelectedBike?.BookingFinishedModel?.MiniSurvey?.Questions?.Count > 0)
{
- // No need to restrart polling again because different page is shown.
+ // No need to restart polling again because different page is shown.
await ViewService.PushModalAsync(ViewTypes.MiniSurvey);
}
@@ -121,4 +121,4 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
}
}
-}
\ No newline at end of file
+}
diff --git a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/ReservedClosed.cs b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/ReservedClosed.cs
index 6886688..4891712 100644
--- a/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/ReservedClosed.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/CopriLock/RequestHandler/ReservedClosed.cs
@@ -14,11 +14,11 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
{
using IRequestHandler = BluetoothLock.IRequestHandler;
- /// Bike is reserved, lock is closed and and connected to app.
+ /// Bike is reserved, lock is closed and connected to app.
///
- /// Occures when
- /// - biks was reserved out of reach and is in reach now
- /// - bike is is reserved while in reach
+ /// Occurs when
+ /// - bike was reserved out of reach and is in reach now
+ /// - bike is reserved while in reach
///
public class ReservedClosed : Base, IRequestHandler
{
@@ -85,7 +85,7 @@ namespace TINK.ViewModel.Bikes.Bike.CopriLock.RequestHandler
{
await ConnectorFactory(IsConnected).Command.DoCancelReservation(SelectedBike);
- // If canceling bike succedes remove bike because it is not ready to be booked again
+ // If canceling bike succeeds remove bike because it is not ready to be booked again
IsRemoveBikeRequired = true;
}
catch (Exception exception)
diff --git a/TINKLib/ViewModel/Bikes/Bike/TariffDescriptionViewModel.cs b/TINKLib/ViewModel/Bikes/Bike/TariffDescriptionViewModel.cs
index ca9aa18..9ce732a 100644
--- a/TINKLib/ViewModel/Bikes/Bike/TariffDescriptionViewModel.cs
+++ b/TINKLib/ViewModel/Bikes/Bike/TariffDescriptionViewModel.cs
@@ -11,6 +11,8 @@ namespace TINK.ViewModel.Bikes.Bike
{
private const string TRACKINGKEY = "TRACKING";
+ private const string RIDETYPEKEY = "AAFAHRTEN";
+
public TariffDescriptionViewModel(RentalDescription tariff)
{
Name = tariff?.Name ?? string.Empty;
@@ -19,13 +21,17 @@ namespace TINK.ViewModel.Bikes.Bike
? new ObservableCollection(tariff.TariffEntries.OrderBy(x => x.Key).Select(x => x.Value))
: new ObservableCollection();
+ // Add all entires except the known entries which are kept as properties.
InfoEntries = tariff != null && tariff?.InfoEntries != null
? new ObservableCollection(tariff.InfoEntries
- .Where(x => x.Value.Key.ToUpper() != TRACKINGKEY)
+ .Where(x => x.Value.Key.ToUpper() != TRACKINGKEY
+ && x.Value.Key.ToUpper() != RIDETYPEKEY)
.OrderBy(x => x.Key)
.Select(x => x.Value.Value))
: new ObservableCollection();
+ RideTypeText = tariff?.InfoEntries != null ? tariff?.InfoEntries?.FirstOrDefault(x => x.Value.Key.ToUpper() == RIDETYPEKEY).Value?.Value ?? string.Empty : string.Empty;
+
TrackingInfoText = tariff?.InfoEntries != null ? tariff?.InfoEntries?.FirstOrDefault(x => x.Value.Key.ToUpper() == TRACKINGKEY).Value?.Value ?? string.Empty : string.Empty;
}
@@ -44,6 +50,11 @@ namespace TINK.ViewModel.Bikes.Bike
///
public ObservableCollection InfoEntries { get; private set; }
+ ///
+ /// Holds the tracking info text or empty if not applicable.
+ ///
+ public string RideTypeText { get; private set; }
+
///
/// Holds the tracking info text or empty if not applicable.
///
diff --git a/TINKLib/ViewModel/Bikes/BikesViewModel.cs b/TINKLib/ViewModel/Bikes/BikesViewModel.cs
index 6363509..38ea6c2 100644
--- a/TINKLib/ViewModel/Bikes/BikesViewModel.cs
+++ b/TINKLib/ViewModel/Bikes/BikesViewModel.cs
@@ -44,7 +44,7 @@ namespace TINK.ViewModel.Bikes
/// Delegate to retrieve connected state.
protected Func IsConnectedDelegate { get; }
- /// Holds whether to poll or not and the periode leght is polling is on.
+ /// Holds whether to poll or not and the period length is polling is on.
private TINK.Settings.PollingParameters m_oPolling;
/// Object to manage update of view model objects from Copri.
@@ -61,7 +61,7 @@ namespace TINK.ViewModel.Bikes
protected override void OnPropertyChanged(PropertyChangedEventArgs p_oEventArgs) => base.OnPropertyChanged(p_oEventArgs);
///
- /// Handles events from bike viewmodel which require GUI updates.
+ /// Handles events from bike view model which require GUI updates.
///
///
///
@@ -81,16 +81,16 @@ namespace TINK.ViewModel.Bikes
///
/// Mail address of active user.
/// True if report level is verbose, false if not.
- /// Holds object to query location permisions.
+ /// Holds object to query location permissions.
/// Holds object to query bluetooth state.
/// Specifies on which platform code is run.
/// Returns if mobile is connected to web or not.
/// Connects system to copri for purposes of requesting a bike/ cancel request.
/// Service to control lock retrieve info.
- /// Holds whether to poll or not and the periode leght is polling is on.
+ /// Holds whether to poll or not and the period length is polling is on.
/// Executes actions on GUI thread.
/// Provides info about the smart device (phone, tablet, ...)
- /// Interface to actuate methodes on GUI.
+ /// Interface to actuate methods on GUI.
/// Delegate to open browser.
public BikesViewModel(
User user,
@@ -156,7 +156,7 @@ namespace TINK.ViewModel.Bikes
CollectionChanged += (sender, eventargs) =>
{
- // Notify about bikes occuring/ vanishing from list.
+ // Notify about bikes occurring/ vanishing from list.
OnPropertyChanged(new PropertyChangedEventArgs(nameof(IsBikesListVisible)));
};
}
@@ -173,7 +173,7 @@ namespace TINK.ViewModel.Bikes
{
case System.Collections.Specialized.NotifyCollectionChangedAction.Add:
- // New bike avaialbe (new arrived at station or bike wased booked on a different device)
+ // New bike available (new arrived at station or bike was booked on a different device)
foreach (var bike in BikeCollection)
{
if (Contains(bike.Id))
@@ -415,7 +415,7 @@ namespace TINK.ViewModel.Bikes
///
/// Gets whether a bike is contained in collection of bikes.
///
- /// Id of bike to check existance.
+ /// Id of bike to check existence.
/// True if bike exists.
private bool Contains(string id)
{
@@ -448,14 +448,14 @@ namespace TINK.ViewModel.Bikes
///
/// Invoked when page is shown and starts update process.
///
- /// Update fuction passed as argument by child class.
+ /// Update function passed as argument by child class.
protected async Task OnAppearing(Action updateAction)
=> await StartUpdateTask(updateAction);
///
/// Starts update process.
///
- /// Update fuction passed as argument by child class.
+ /// Update function passed as argument by child class.
public async Task StartUpdateTask(Action updateAction)
{
m_oViewUpdateManager = new PollingUpdateTaskManager(updateAction);
diff --git a/TINKLib/ViewModel/BikesAtStation/BikesAtStationPageViewModel.cs b/TINKLib/ViewModel/BikesAtStation/BikesAtStationPageViewModel.cs
index 24ee9fc..098aef4 100644
--- a/TINKLib/ViewModel/BikesAtStation/BikesAtStationPageViewModel.cs
+++ b/TINKLib/ViewModel/BikesAtStation/BikesAtStationPageViewModel.cs
@@ -12,7 +12,8 @@ using TINK.Model.Bikes;
using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
using TINK.Model.Connector;
using TINK.Model.Device;
-using TINK.Model.Station;
+using TINK.Model.Stations;
+using TINK.Model.Stations.StationNS;
using TINK.Model.User;
using TINK.MultilingualResources;
using TINK.Services.BluetoothLock;
@@ -60,17 +61,17 @@ namespace TINK.ViewModel.BikesAtStation
/// Constructs bike collection view model.
///
/// Mail address of active user.
- /// Holds object to query location permisions.
+ /// Holds object to query location permissions.
/// Holds object to query bluetooth state.
/// Specifies on which platform code is run.
/// Returns if mobile is connected to web or not.
/// Connects system to copri.
/// Service to control lock retrieve info.
- /// Holds whether to poll or not and the periode leght is polling is on.
+ /// Holds whether to poll or not and the period length is polling is on.
/// Action to open an external browser.
/// Executes actions on GUI thread.
/// Provides info about the smart device (phone, tablet, ...).
- /// Interface to actuate methodes on GUI.
+ /// Interface to actuate methods on GUI.
public BikesAtStationPageViewModel(
User user,
ILocationPermission permissions,
@@ -384,7 +385,7 @@ namespace TINK.ViewModel.BikesAtStation
var exception = result.Exception;
if (exception != null)
{
- Log.ForContext().Error("Getting all bikes bikes in polling context failed with exception {Exception}.", exception);
+ Log.ForContext().Error("Getting all bikes in polling context failed with exception {Exception}.", exception);
}
PostAction(
diff --git a/TINKLib/ViewModel/Contact/ContactPageViewModel.cs b/TINKLib/ViewModel/Contact/ContactPageViewModel.cs
index 17c30ab..b0eeec8 100644
--- a/TINKLib/ViewModel/Contact/ContactPageViewModel.cs
+++ b/TINKLib/ViewModel/Contact/ContactPageViewModel.cs
@@ -5,7 +5,8 @@ using System.Threading.Tasks;
using System.Windows.Input;
using Plugin.Messaging;
using Serilog;
-using TINK.Model.Station;
+using TINK.Model.Stations;
+using TINK.Model.Stations.StationNS;
using TINK.MultilingualResources;
using TINK.View;
using Xamarin.Essentials;
@@ -50,7 +51,7 @@ namespace TINK.ViewModel.Info
{
AppFlavorName = !string.IsNullOrEmpty(appFlavorName)
? appFlavorName
- : throw new ArgumentException("Can not instantiate contact page view model- object. No app name availalbe.");
+ : throw new ArgumentException("Can not instantiate contact page view model- object. No app name centered.");
CreateAttachment = createAttachment
?? throw new ArgumentException("Can not instantiate contact page view model- object. No create attachment provider available.");
@@ -89,7 +90,7 @@ namespace TINK.ViewModel.Info
async () => await DoSendMailToOperator(),
() => IsSendMailAvailable);
- /// Command object to bind mail app releated button to model.
+ /// Command object to bind mail app related button to model.
public ICommand OnMailAppRelatedRequest
=> new Command(
async () => await DoSendMailAppRelated(),
@@ -116,11 +117,11 @@ namespace TINK.ViewModel.Info
public string OfficeHoursText
=> SelectedStation?.OperatorData?.Hours ?? string.Empty;
- /// Gets whether any operator support info is avaliable.
+ /// Gets whether any operator support info is available.
public bool IsOperatorInfoAvaliable
=> MailAddressText.Length > 0 || PhoneNumberText.Length > 0;
- /// Returns true if eithe mail was sent or if no mailer available.
+ /// Returns true if either mail was sent or if no mailer available.
public async Task DoSendMailToOperator()
{
try
@@ -149,12 +150,12 @@ namespace TINK.ViewModel.Info
return;
}
- // Send app-related related support mail to operator.
+ // Send app-related support mail to operator.
await Email.ComposeAsync(new EmailMessage
{
To = new List { MailAddressText },
- Cc = APPSUPPORTMAILADDRESS.ToUpper() != MailAddressText.ToUpper() // do not sent copy if same mail adress
- && MailAddressText != "konrad@sharee.bike" // do not sent copy if Meinkonrad
+ Cc = APPSUPPORTMAILADDRESS.ToUpper() != MailAddressText.ToUpper() // do not sent copy if same mail address
+ && MailAddressText != "konrad@sharee.bike" // do not sent copy if Mein konrad
? new List { APPSUPPORTMAILADDRESS } : new List(),
Subject = string.Format(AppResources.SupportmailSubjectAppmail, AppFlavorName)
});
diff --git a/TINKLib/ViewModel/Contact/SelectStationPageViewModel.cs b/TINKLib/ViewModel/Contact/SelectStationPageViewModel.cs
index d51a155..bcc90aa 100644
--- a/TINKLib/ViewModel/Contact/SelectStationPageViewModel.cs
+++ b/TINKLib/ViewModel/Contact/SelectStationPageViewModel.cs
@@ -1,6 +1,6 @@
using Xamarin.Forms;
using TINK.View;
-using TINK.Model.Station;
+using TINK.Model.Stations;
using System;
using System.Linq;
using TINK.Model.Bikes;
@@ -27,7 +27,7 @@ namespace TINK.ViewModel.Contact
{
public class SelectStationPageViewModel : INotifyPropertyChanged
{
- /// Holds the count of custom icons availalbe.
+ /// Holds the count of custom icons centered.
private const int CUSTOM_ICONS_COUNT = 30;
/// Reference on view service to show modal notifications and to perform navigation.
@@ -169,8 +169,8 @@ namespace TINK.ViewModel.Contact
{
if (station.Position == null)
{
- // There should be no reason for a position object to be null but this alreay occurred in past.
- Log.ForContext().Error("Postion object of station {@l_oStation} is null.", station);
+ // There should be no reason for a position object to be null but this already occurred in past.
+ Log.ForContext().Error("Position object of station {@l_oStation} is null.", station);
continue;
}
@@ -340,8 +340,8 @@ namespace TINK.ViewModel.Contact
Pins.Clear();
}
- // Check if there are alreay any pins to the map
- // i.e detecte first call of member OnAppearing after construction
+ // Check if there are already any pins to the map
+ // i.e detects first call of member OnAppearing after construction
if (Pins.Count <= 0)
{
// Map was not yet initialized.
@@ -457,7 +457,7 @@ namespace TINK.ViewModel.Contact
IsMapPageEnabled = false;
TinkApp.SelectedStation = TinkApp.Stations.FirstOrDefault(x => x.Id == selectedStationId)
- ?? new Station(selectedStationId, new List(), null); // Station might not be in list StationDictinaly because this list is not updatd in background task.
+ ?? new Model.Stations.StationNS.Station(selectedStationId, new List(), null); // Station might not be in list StationDictinaly because this list is not updated in background task.
#if TRYNOTBACKSTYLE
m_oNavigation.ShowPage(
@@ -504,7 +504,7 @@ namespace TINK.ViewModel.Contact
if (bikesAll == null)
{
- // If object is null an error occurred querrying bikes availalbe or bikes occpied which results in an unknown state.
+ // If object is null an error occurred querying bikes centered or bikes occupied which results in an unknown state.
Log.ForContext().Error("No bikes available to determine pins color.");
return new List(stationsId.Select(x => Color.Blue));
}
diff --git a/TINKLib/ViewModel/FeesAndBikes/FeesAndBikesPageViewModel.cs b/TINKLib/ViewModel/FeesAndBikes/FeesAndBikesPageViewModel.cs
index 3a70965..180866c 100644
--- a/TINKLib/ViewModel/FeesAndBikes/FeesAndBikesPageViewModel.cs
+++ b/TINKLib/ViewModel/FeesAndBikes/FeesAndBikesPageViewModel.cs
@@ -52,7 +52,7 @@ namespace TINK.ViewModel.Contact
}
///
- /// Object to querry resources urls object from backend if required.
+ /// Object to query resources urls object from backend if required.
/// This object is used to update resources path values , and from.
///
private Func QueryProvider { get; }
@@ -65,7 +65,7 @@ namespace TINK.ViewModel.Contact
/// Constructs view model.
/// Set of user permissions
/// Delegate to get an an embedded html ressource. Used as fallback if download from web page does not work and cache is empty.
- /// Object to querry resources path values if required.
+ /// Object to query resources path values if required.
public FeesAndBikesPageViewModel(
string hostName,
string feesResourcePath,
diff --git a/TINKLib/ViewModel/FindBike/FindBikePageViewModel.cs b/TINKLib/ViewModel/FindBike/FindBikePageViewModel.cs
index 5257b09..c7a192d 100644
--- a/TINKLib/ViewModel/FindBike/FindBikePageViewModel.cs
+++ b/TINKLib/ViewModel/FindBike/FindBikePageViewModel.cs
@@ -14,7 +14,7 @@ using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
using TINK.Model.Connector;
using TINK.Model.Device;
using TINK.Model.Services.CopriApi;
-using TINK.Model.Station;
+using TINK.Model.Stations.StationNS;
using TINK.Model.User;
using TINK.MultilingualResources;
using TINK.Repository.Exception;
@@ -105,17 +105,17 @@ namespace TINK.ViewModel.FindBike
///
/// Mail address of active user.
/// True if report level is verbose, false if not.
- /// Holds object to query location permisions.
+ /// Holds object to query location permissions.
/// Holds object to query bluetooth state.
/// Specifies on which platform code is run.
/// Returns if mobile is connected to web or not.
/// Connects system to copri.
/// Service to control lock retrieve info.
/// Stations to get station name from station id.
- /// Holds whether to poll or not and the periode leght is polling is on.
+ /// Holds whether to poll or not and the period length is polling is on.
/// Executes actions on GUI thread.
/// Provides info about the smart device (phone, tablet, ...).
- /// Interface to actuate methodes on GUI.
+ /// Interface to actuate methods on GUI.
/// Delegate to open browser.
public FindBikePageViewModel(
User p_oUser,
diff --git a/TINKLib/ViewModel/Info/BikeInfo/BikeInfoCarouselViewModel.cs b/TINKLib/ViewModel/Info/BikeInfo/BikeInfoCarouselViewModel.cs
index 850bd65..4355162 100644
--- a/TINKLib/ViewModel/Info/BikeInfo/BikeInfoCarouselViewModel.cs
+++ b/TINKLib/ViewModel/Info/BikeInfo/BikeInfoCarouselViewModel.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using TINK.View;
using Xamarin.Forms;
@@ -13,7 +13,7 @@ namespace TINK.ViewModel.Info.BikeInfo
private readonly IViewService m_oViewService;
- /// Interface to actuate methodes on GUI.
+ /// Interface to actuate methods on GUI.
public BikeInfoViewModel(Func imageSourceFunc, IViewService p_oViewService)
{
m_oViewService = p_oViewService
diff --git a/TINKLib/ViewModel/Info/InfoPageViewModel.cs b/TINKLib/ViewModel/Info/InfoPageViewModel.cs
index 2bda980..95c83d1 100644
--- a/TINKLib/ViewModel/Info/InfoPageViewModel.cs
+++ b/TINKLib/ViewModel/Info/InfoPageViewModel.cs
@@ -62,7 +62,7 @@ namespace TINK.ViewModel.Info
}
///
- /// Object to querry resources urls object from backend if required.
+ /// Object to query resources urls object from backend if required.
/// This object is used to update resources path values , and from.
///
private Func QueryProvider { get; }
@@ -79,7 +79,7 @@ namespace TINK.ViewModel.Info
/// Privacy resouce path received from backend.
/// Impress resouce path received from backend.
/// Delegate to get an an embedded html ressource. Used as fallback if download from web page does not work and cache is empty.
- /// Object to querry resources urls object from backend if required.
+ /// Object to query resources urls object from backend if required.
/// Action to update shared resources urls object
public InfoPageViewModel(
string hostName,
@@ -102,7 +102,7 @@ namespace TINK.ViewModel.Info
InfoAgb = new HtmlWebViewSource { Html = "Loading..." };
ResourceProvider = resourceProvider
- ?? throw new ArgumentException($"Can not instantiate {typeof(InfoPageViewModel)}-object. No ressource provider availalbe.");
+ ?? throw new ArgumentException($"Can not instantiate {typeof(InfoPageViewModel)}-object. No ressource provider centered.");
}
/// Called when page is shown.
diff --git a/TINKLib/ViewModel/Login/LoginPageViewModel.cs b/TINKLib/ViewModel/Login/LoginPageViewModel.cs
index d07427a..0af17b9 100644
--- a/TINKLib/ViewModel/Login/LoginPageViewModel.cs
+++ b/TINKLib/ViewModel/Login/LoginPageViewModel.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
@@ -57,7 +57,7 @@ namespace TINK.ViewModel
/// Delegate to set new mail address and password to model.
/// Mail address of user if login succeeded.
/// Action to open an external browser.
- /// Interface to actuate methodes on GUI.
+ /// Interface to actuate methods on GUI.
/// Interface to navigate.
public LoginPageViewModel(
ITinkApp tinkApp,
diff --git a/TINKLib/ViewModel/Map/MapPageViewModel.cs b/TINKLib/ViewModel/Map/MapPageViewModel.cs
index 8be95a0..640a6ed 100644
--- a/TINKLib/ViewModel/Map/MapPageViewModel.cs
+++ b/TINKLib/ViewModel/Map/MapPageViewModel.cs
@@ -1,6 +1,6 @@
using Xamarin.Forms;
using TINK.View;
-using TINK.Model.Station;
+using TINK.Model.Stations;
using System;
using System.Linq;
using TINK.Model.Bikes;
@@ -39,7 +39,7 @@ namespace TINK.ViewModel.Map
private static bool WasMerchantMessageAlreadyShown { get; set; } = false;
- /// Holds the count of custom icons availalbe.
+ /// Holds the count of custom icons centered.
private const int CUSTOM_ICONS_COUNT = 30;
/// Reference on view service to show modal notifications and to perform navigation.
@@ -67,7 +67,7 @@ namespace TINK.ViewModel.Map
/// Object to manage update of view model objects from Copri.
private IPollingUpdateTaskManager m_oViewUpdateManager;
- /// Holds whether to poll or not and the periode leght is polling is on.
+ /// Holds whether to poll or not and the period length is polling is on.
private PollingParameters Polling { get; set; }
/// Reference on the tink app instance.
@@ -228,8 +228,8 @@ namespace TINK.ViewModel.Map
{
if (station.Position == null)
{
- // There should be no reason for a position object to be null but this alreay occurred in past.
- Log.ForContext().Error("Postion object of station {@l_oStation} is null.", station);
+ // There should be no reason for a position object to be null but this already occurred in past.
+ Log.ForContext().Error("Position object of station {@l_oStation} is null.", station);
continue;
}
@@ -355,7 +355,7 @@ namespace TINK.ViewModel.Map
Polling = TinkApp.Polling;
Log.ForContext().Information(
- $"{(Polling != null && Polling.IsActivated ? $"Map page is appearing. Update periode is {Polling.Periode.TotalSeconds} sec." : "Map page is appearing. Polling is off.")}" +
+ $"{(Polling != null && Polling.IsActivated ? $"Map page is appearing. Update period is {Polling.Periode.TotalSeconds} sec." : "Map page is appearing. Polling is off.")}" +
$"Current UI language is {Thread.CurrentThread.CurrentUICulture.Name}.");
// Update map page filter
@@ -516,13 +516,13 @@ namespace TINK.ViewModel.Map
if (Pins.Count > 0 && Pins.Count != stations.Count)
{
// Either
- // - user logged in/ logged out which might lead to more/ less stations beeing available
+ // - user logged in/ logged out which might lead to more/ less stations being available
// - new stations were added/ existing ones remove
Pins.Clear();
}
- // Check if there are alreay any pins to the map
- // i.e detecte first call of member OnAppearing after construction
+ // Check if there are already any pins to the map
+ // i.e detects first call of member OnAppearing after construction
if (Pins.Count <= 0)
{
Log.ForContext().Debug($"{(ActiveFilterMap.GetGroup().Any() ? $"Active map filter is {string.Join(",", ActiveFilterMap.GetGroup())}." : "Map filter is off.")}");
@@ -657,8 +657,8 @@ namespace TINK.ViewModel.Map
// Load MyBikes Count -> MyBikes Icon/Button
GetMyBikesCount(resultStationsAndBikes.Response.Bikes);
- // Check if there are alreay any pins to the map.
- // If no initialze pins.
+ // Check if there are already any pins to the map.
+ // If no initialize pins.
if (Pins.Count <= 0)
{
// Set pins to their positions on map.
@@ -725,7 +725,7 @@ namespace TINK.ViewModel.Map
IsMapPageEnabled = false;
TinkApp.SelectedStation = TinkApp.Stations.FirstOrDefault(x => x.Id == selectedStationId)
- ?? new Station(selectedStationId, new List(), null); // Station might not be in list StationDictinaly because this list is not updatd in background task.
+ ?? new Model.Stations.StationNS.Station(selectedStationId, new List(), null); // Station might not be in list StationDictinaly because this list is not updated in background task.
#if TRYNOTBACKSTYLE
m_oNavigation.ShowPage(
@@ -771,7 +771,7 @@ namespace TINK.ViewModel.Map
if (bikesAll == null)
{
- // If object is null an error occurred querrying bikes availalbe or bikes occpied which results in an unknown state.
+ // If object is null an error occurred querying bikes centered or bikes occupied which results in an unknown state.
Log.ForContext().Error("No bikes available to determine pins color.");
return new List(stationsId.Select(x => Color.Blue));
}
diff --git a/TINKLib/ViewModel/MiniSurvey/MiniSurveyViewModel.cs b/TINKLib/ViewModel/MiniSurvey/MiniSurveyViewModel.cs
index cab4e4f..d1b75a8 100644
--- a/TINKLib/ViewModel/MiniSurvey/MiniSurveyViewModel.cs
+++ b/TINKLib/ViewModel/MiniSurvey/MiniSurveyViewModel.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
@@ -29,7 +29,7 @@ namespace TINK.ViewModel.MiniSurvey
/// Constructs mini survey view model.
/// Connects system to copri for purposes of requesting a bike/ cancel request.
- /// Interface to actuate methodes on GUI.
+ /// Interface to actuate methods on GUI.
public MiniSurveyViewModel(
Func isConnectedDelegate,
Func connectorFactory,
diff --git a/TINKLib/ViewModel/MyBikes/MyBikeViewModel.cs b/TINKLib/ViewModel/MyBikes/MyBikeViewModel.cs
index 2ec5a86..1186fac 100644
--- a/TINKLib/ViewModel/MyBikes/MyBikeViewModel.cs
+++ b/TINKLib/ViewModel/MyBikes/MyBikeViewModel.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using TINK.Model.State;
using TINK.MultilingualResources;
using TINK.ViewModel.Bikes.Bike;
@@ -23,7 +23,7 @@ namespace TINK.ViewModel
if (string.IsNullOrEmpty(code))
{
- // Code is not avilable
+ // Code is not available
return string.Format(AppResources.StatusTextReservationExpiredMaximumReservationTime, StateRequestedInfo.MaximumReserveTime.Minutes);
}
diff --git a/TINKLib/ViewModel/MyBikes/MyBikesPageViewModel.cs b/TINKLib/ViewModel/MyBikes/MyBikesPageViewModel.cs
index 04b0363..52b7c7c 100644
--- a/TINKLib/ViewModel/MyBikes/MyBikesPageViewModel.cs
+++ b/TINKLib/ViewModel/MyBikes/MyBikesPageViewModel.cs
@@ -12,7 +12,7 @@ using TINK.Model.Bikes;
using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
using TINK.Model.Connector;
using TINK.Model.Device;
-using TINK.Model.Station;
+using TINK.Model.Stations.StationNS;
using TINK.Model.User;
using TINK.MultilingualResources;
using TINK.Services.BluetoothLock;
@@ -57,17 +57,17 @@ namespace TINK.ViewModel.MyBikes
///
/// Mail address of active user.
/// True if report level is verbose, false if not.
- /// Holds object to query location permisions.
+ /// Holds object to query location permissions.
/// Holds object to query bluetooth state.
/// Specifies on which platform code is run.
/// Returns if mobile is connected to web or not.
/// Connects system to copri.
/// Service to control lock retrieve info.
/// Stations to get station name from station id.
- /// Holds whether to poll or not and the periode leght is polling is on.
+ /// Holds whether to poll or not and the period length is polling is on.
/// Executes actions on GUI thread.
/// Provides info about the smart device (phone, tablet, ...).
- /// Interface to actuate methodes on GUI.
+ /// Interface to actuate methods on GUI.
/// Delegate to open browser.
public MyBikesPageViewModel(
User p_oUser,
diff --git a/TINKLib/ViewModel/PollingUpdateTask.cs b/TINKLib/ViewModel/PollingUpdateTask.cs
index 1c54c6b..5975e6e 100644
--- a/TINKLib/ViewModel/PollingUpdateTask.cs
+++ b/TINKLib/ViewModel/PollingUpdateTask.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -23,7 +23,7 @@ namespace TINK.ViewModel
/// Obects which does a periodic update.
/// Update action to perform.
- /// Holds whether to poll or not and the periode leght is polling is on.
+ /// Holds whether to poll or not and the period length is polling is on.
public PollingUpdateTask(
Action updateAction,
TimeSpan? polling)
diff --git a/TINKLib/ViewModel/PollingUpdateTaskManager.cs b/TINKLib/ViewModel/PollingUpdateTaskManager.cs
index 0f28dab..ab8887f 100644
--- a/TINKLib/ViewModel/PollingUpdateTaskManager.cs
+++ b/TINKLib/ViewModel/PollingUpdateTaskManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading.Tasks;
using Serilog;
using TINK.Settings;
@@ -39,7 +39,7 @@ namespace TINK.ViewModel
/// Invoked when page is shown.
/// Actuates and awaits the first update process and starts a task wich actuate the subseqent update tasks.
///
- /// Parametes holding polling periode, if null last parameters are used if available.
+ /// Parametes holding polling period, if null last parameters are used if available.
public async Task StartUpdateAyncPeridically(PollingParameters pollingParameters = null)
{
if (UpdateTask != null)
diff --git a/TINKLib/ViewModel/Settings/FilterItemMutable.cs b/TINKLib/ViewModel/Settings/FilterItemMutable.cs
index 42ebae5..cd2477a 100644
--- a/TINKLib/ViewModel/Settings/FilterItemMutable.cs
+++ b/TINKLib/ViewModel/Settings/FilterItemMutable.cs
@@ -3,7 +3,7 @@ using TINK.Model;
namespace TINK.ViewModel.Settings
{
- /// Holds filter item incluting full state (avaialble, activated, name, ...).
+ /// Holds filter item including full state (available, activated, name, ...).
public class FilterItemMutable : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
@@ -32,7 +32,7 @@ namespace TINK.ViewModel.Settings
/// Text describing the filter.
public string Text { get; }
- /// True if switch can be toggeled.
+ /// True if switch can be toggled.
public bool IsEnabled { get; }
/// True if switch is on.
diff --git a/TINKLib/ViewModel/Settings/PollingViewModel.cs b/TINKLib/ViewModel/Settings/PollingViewModel.cs
index e1cf6a9..6e7ed9a 100644
--- a/TINKLib/ViewModel/Settings/PollingViewModel.cs
+++ b/TINKLib/ViewModel/Settings/PollingViewModel.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.ComponentModel;
using TINK.Settings;
@@ -10,7 +10,7 @@ namespace TINK.ViewModel.Settings
/// Holds the views polling parameters.
private PollingParameters m_oPolling = PollingParameters.Default;
- /// Current polling periode. Used to check whether values were modified or not.
+ /// Current polling period. Used to check whether values were modified or not.
private readonly PollingParameters m_oPollingActive;
/// Constructs polling object.
@@ -52,7 +52,7 @@ namespace TINK.ViewModel.Settings
}
}
- /// Gests or sets the polling periode [sec].
+ /// Gests or sets the polling period [sec].
public int PeriodeTotalSeconds
{
get
@@ -76,7 +76,7 @@ namespace TINK.ViewModel.Settings
}
}
- /// Gets info about polling periode.
+ /// Gets info about polling period.
public string PeriodeTotalSecondsText
{
get
diff --git a/TINKLib/ViewModel/Settings/SettingsPageViewModel.cs b/TINKLib/ViewModel/Settings/SettingsPageViewModel.cs
index 4ffc658..a2b314c 100644
--- a/TINKLib/ViewModel/Settings/SettingsPageViewModel.cs
+++ b/TINKLib/ViewModel/Settings/SettingsPageViewModel.cs
@@ -356,7 +356,7 @@ namespace TINK.ViewModel
/// Empty if no user is logged in session cookie otherwise.
public string SessionCookie => TinkApp.ActiveUser.IsLoggedIn ? TinkApp.ActiveUser.SessionCookie : "";
- /// Polling periode.
+ /// Polling period.
public PollingViewModel Polling { get; }
/// Active logging level
diff --git a/TINKLib/ViewModel/ViewModelHelper.cs b/TINKLib/ViewModel/ViewModelHelper.cs
index 6ba56dc..913c8c8 100644
--- a/TINKLib/ViewModel/ViewModelHelper.cs
+++ b/TINKLib/ViewModel/ViewModelHelper.cs
@@ -7,7 +7,7 @@ using Serilog;
using TINK.Model.Bikes.BikeInfoNS.BC;
using TINK.Model.Device;
using TINK.Model.State;
-using TINK.Model.Station;
+using TINK.Model.Stations.StationNS;
using TINK.Model.User;
using TINK.MultilingualResources;
using TINK.Repository;
diff --git a/TINKLib/ViewModel/WhatsNew/Agb/AgbViewModel.cs b/TINKLib/ViewModel/WhatsNew/Agb/AgbViewModel.cs
index 55a354d..d02dee5 100644
--- a/TINKLib/ViewModel/WhatsNew/Agb/AgbViewModel.cs
+++ b/TINKLib/ViewModel/WhatsNew/Agb/AgbViewModel.cs
@@ -37,7 +37,7 @@ namespace TINK.ViewModel.WhatsNew.Agb
?? throw new ArgumentException($"Can not instantiate {typeof(WhatsNewViewModel)}-object. No view available.");
ResourceProvider = resourceProvider
- ?? throw new ArgumentException($"Can not instantiate {typeof(WhatsNewViewModel)}-object. No ressource provider availalbe.");
+ ?? throw new ArgumentException($"Can not instantiate {typeof(WhatsNewViewModel)}-object. No ressource provider centered.");
}
/// Gets the platfrom specific prefix.
diff --git a/TINKLib/ViewModel/WhatsNew/WhatsNewViewModel.cs b/TINKLib/ViewModel/WhatsNew/WhatsNewViewModel.cs
index b9b7e63..1401716 100644
--- a/TINKLib/ViewModel/WhatsNew/WhatsNewViewModel.cs
+++ b/TINKLib/ViewModel/WhatsNew/WhatsNewViewModel.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Input;
@@ -26,7 +26,7 @@ namespace TINK.ViewModel.WhatsNew
?? throw new ArgumentException($"Can not instantiate {typeof(WhatsNewViewModel)}-object. No view available.");
ShowMasterDetail = showMasterDetail
- ?? throw new ArgumentException($"Can not instantiate {typeof(WhatsNewViewModel)}-object. No delegate to activated maste detail page avilable.");
+ ?? throw new ArgumentException($"Can not instantiate {typeof(WhatsNewViewModel)}-object. No delegate to activated maste detail page available.");
CurrentVersion = currentVersion;
WhatsNewText = new FormattedString();
diff --git a/TestFramework/Repository/CopriCallMemoryBase.cs b/TestFramework/Repository/CopriCallMemoryBase.cs
index 03d66eb..9505617 100644
--- a/TestFramework/Repository/CopriCallMemoryBase.cs
+++ b/TestFramework/Repository/CopriCallMemoryBase.cs
@@ -6,10 +6,10 @@ using System.Threading.Tasks;
using TINK.Model;
using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
using TINK.Model.Connector;
-using TINK.Model.Device;
using TINK.Repository;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TestFramework.Repository
{
@@ -42,7 +42,8 @@ namespace TestFramework.Repository
///
///
///
- ///
+ /// Session cookie.
+ /// Merchant identifier.
public CopriCallMemoryBase(
string bikesAvailableResponseResource = null,
string bikesOccupiedResponseResoure = null,
@@ -51,7 +52,8 @@ namespace TestFramework.Repository
string stationsResponseResource = null,
string bookingRequestResponseResource = null,
string cancelBookingRequestResponseResource = null,
- string sessionCookie = null)
+ string sessionCookie = null,
+ string merchantId = null)
{
string ReadResource(string resourceName)
{
@@ -64,6 +66,8 @@ namespace TestFramework.Repository
}
}
+ MerchantId = merchantId ?? TinkApp.MerchantId;
+
SessionCookie = sessionCookie;
BikesAvailableResponse = ReadResource(bikesAvailableResponseResource);
@@ -75,8 +79,8 @@ namespace TestFramework.Repository
CancelBookingRequestResponse = ReadResource(cancelBookingRequestResponseResource);
requestBuilder = string.IsNullOrEmpty(sessionCookie)
- ? new RequestBuilder(MerchantId, null /*UI language */) as IRequestBuilder
- : new RequestBuilderLoggedIn(MerchantId, null /*UI language */, sessionCookie);
+ ? new RequestBuilder(merchantId ?? MerchantId, null /*UI language */) as IRequestBuilder
+ : new RequestBuilderLoggedIn(merchantId ?? MerchantId, null /*UI language */, sessionCookie);
}
/// Holds the session id of the logged in user, null otherwise.
@@ -85,7 +89,7 @@ namespace TestFramework.Repository
/// Logs user in.
/// User to log in.
/// Id specifying user and hardware.
- /// Mailaddress of user to log in.
+ /// Mail address of user to log in.
/// Password to log in.
/// Response which holds auth cookie
public async Task DoAuthorizationAsync(
@@ -108,7 +112,7 @@ namespace TestFramework.Repository
=> await Task.Run(() => GetBikesAvailable(BikesAvailableResponse, null, SessionCookie));
///
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
///
/// Cookie to authenticate user.
/// Response holding list of bikes.
@@ -116,7 +120,7 @@ namespace TestFramework.Repository
{
try
{
- requestBuilder.GetBikesOccupied(); // Non mock implementation if ICopriServer call this member as well. To ensure comparable behaviour this member is called here as well.
+ requestBuilder.GetBikesOccupied(); // Non mock implementation if ICopriServer call this member as well. To ensure comparable behavior this member is called here as well.
}
catch (NotSupportedException)
{
@@ -144,7 +148,7 @@ namespace TestFramework.Repository
=> await Task.Run(() => DoReserve(BookingRequestResponse, bikeId, SessionCookie));
///
- /// Gets canel booking request response.
+ /// Gets cancel booking request response.
///
/// Id of the bike to book.
/// Cookie of the logged in user.
@@ -154,14 +158,14 @@ namespace TestFramework.Repository
/// Gets the merchant id.
- public string MerchantId => TinkApp.MerchantId;
+ public string MerchantId { get; }
/// Returns false because cached values are returned.
public bool IsConnected => false;
/// Logs user in.
/// Id specifying user and hardware.
- /// Mailaddress of user to log in.
+ /// Mail address of user to log in.
/// Password to log in.
/// Response which holds auth cookie
public static AuthorizationResponse DoAuthorize(
@@ -236,7 +240,7 @@ namespace TestFramework.Repository
=> JsonConvertRethrow.DeserializeObject>(bookingRequestResponse).shareejson;
///
- /// Gets canel booking request response.
+ /// Gets cancel booking request response.
///
/// Id of the bike to book.
/// Cookie of the logged in user.
@@ -292,7 +296,7 @@ namespace TestFramework.Repository
=> null;
///
- /// Gets a list of bikes reserved/ booked by acctive user from Copri.
+ /// Gets a list of bikes reserved/ booked by active user from Copri.
///
/// Cookie to authenticate user.
/// Sample set to use.
diff --git a/TestFramework/Repository/CopriCallsMemory001.cs b/TestFramework/Repository/CopriCallsMemory001.cs
index 40acd09..d2821c9 100644
--- a/TestFramework/Repository/CopriCallsMemory001.cs
+++ b/TestFramework/Repository/CopriCallsMemory001.cs
@@ -1,21 +1,24 @@
-using TINK.Repository;
+using TINK.Repository;
namespace TestFramework.Repository
{
///
/// Holds some COPRI responses for testing purposes.
///
- /// Holds some demo Meinkonrad and LastenradBayern bikes
+ /// Holds some demo Mein konrad and LastenradBayern bikes
///
public class CopriCallsMemory001 : CopriCallMemoryBase, ICopriServer
{
- public CopriCallsMemory001(string sessionCookie = null) : base(
+ /// Session cookie.
+ /// Merchant identifier.
+ public CopriCallsMemory001(string sessionCookie = null, string merchantId = null) : base(
bikesAvailableResponseResource: "TestFramework.Repository.CopriCallsMemory001.BikesAvailableResponse.json",
bikesOccupiedResponseResoure: "TestFramework.Repository.CopriCallsMemory001.BikesOccupiedResponse.json",
authResponseResource: "TestFramework.Repository.CopriCallsMemory001.AuthorizationResponse.json",
authOutResponseResource: "TestFramework.Repository.CopriCallsMemory001.AuthoutResponse.json",
stationsResponseResource: "TestFramework.Repository.CopriCallsMemory001.StationsAvailable.json",
- sessionCookie: sessionCookie)
+ sessionCookie: sessionCookie,
+ merchantId: merchantId)
{ }
}
-}
\ No newline at end of file
+}
diff --git a/TestFramework/Repository/ExceptionServer.cs b/TestFramework/Repository/ExceptionServer.cs
index 71f2429..9ebf229 100644
--- a/TestFramework/Repository/ExceptionServer.cs
+++ b/TestFramework/Repository/ExceptionServer.cs
@@ -7,6 +7,7 @@ using TINK.Model.Device;
using TINK.Repository;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TestFramework.Repository
{
@@ -16,7 +17,7 @@ namespace TestFramework.Repository
private Func ExceptionFactory { get; }
/// Constructs object.
- /// Provides exceptions which are thrown whenn querrying information from server.
+ /// Provides exceptions which are thrown when querying information from server.
public ExceptionServer(Func exceptionFactory)
{
ExceptionFactory = exceptionFactory;
diff --git a/TestFramework/Services/BluetoothLock/LocksServiceMock.cs b/TestFramework/Services/BluetoothLock/LocksServiceMock.cs
index f27670b..b062ac4 100644
--- a/TestFramework/Services/BluetoothLock/LocksServiceMock.cs
+++ b/TestFramework/Services/BluetoothLock/LocksServiceMock.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using TINK.Model.Bikes;
@@ -16,7 +16,7 @@ namespace TestFramework.Services.BluetoothLock
return await Task.FromResult(new List());
}
- /// Holds timeout values for series of connecting attemps to a lock or multiple locks.
+ /// Holds timeout values for series of connecting attempts to a lock or multiple locks.
public ITimeOutProvider TimeOut { get; set; }
public void UpdateSimulation(BikeCollection bikes) { }
diff --git a/TestFramework/Services/CopriApi/CopriCallsCacheMemory.cs b/TestFramework/Services/CopriApi/CopriCallsCacheMemory.cs
index 47bf719..0c995cb 100644
--- a/TestFramework/Services/CopriApi/CopriCallsCacheMemory.cs
+++ b/TestFramework/Services/CopriApi/CopriCallsCacheMemory.cs
@@ -8,11 +8,12 @@ using TINK.Model.Services.CopriApi;
using TINK.Repository;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
using static TINK.Repository.CopriCallsMemory;
namespace TestTINKLib.Mocks.Connector
{
- /// Allows use of memory for retrieving defined respones.
+ /// Allows use of memory for retrieving defined responses.
public class CopriCallsCacheMemory : ICopriCache
{
private CopriCallsMemory server;
diff --git a/TestFramework/Services/CopriApi/CopriCallsCacheMemory001.cs b/TestFramework/Services/CopriApi/CopriCallsCacheMemory001.cs
index f84ed67..08b9656 100644
--- a/TestFramework/Services/CopriApi/CopriCallsCacheMemory001.cs
+++ b/TestFramework/Services/CopriApi/CopriCallsCacheMemory001.cs
@@ -7,10 +7,11 @@ using TINK.Model.Connector;
using TINK.Model.Services.CopriApi;
using TINK.Repository.Request;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TestFramework.Services.CopriApi.Connector
{
- /// Allows use of memory for retrieving defined respones.
+ /// Allows use of memory for retrieving defined responses.
public class CopriCallsCacheMemory001 : ICopriCache
{
private CopriCallsMemory001 server;
diff --git a/TestLockItBLE/TestLockItBLE.csproj b/TestLockItBLE/TestLockItBLE.csproj
index 73c0822..2d40a1d 100644
--- a/TestLockItBLE/TestLockItBLE.csproj
+++ b/TestLockItBLE/TestLockItBLE.csproj
@@ -10,6 +10,10 @@
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/TestLockItShared/TestLockItShared.csproj b/TestLockItShared/TestLockItShared.csproj
index be93a72..bb28b67 100644
--- a/TestLockItShared/TestLockItShared.csproj
+++ b/TestLockItShared/TestLockItShared.csproj
@@ -12,6 +12,10 @@
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/TestSharee/TestSharee.csproj b/TestSharee/TestSharee.csproj
index cc49bdd..8cd6f6c 100644
--- a/TestSharee/TestSharee.csproj
+++ b/TestSharee/TestSharee.csproj
@@ -14,6 +14,10 @@
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/TestSharee/UseCase/Startup/TestTinkApp.cs b/TestSharee/UseCase/Startup/TestTinkApp.cs
index ca1e220..838502f 100644
--- a/TestSharee/UseCase/Startup/TestTinkApp.cs
+++ b/TestSharee/UseCase/Startup/TestTinkApp.cs
@@ -1,10 +1,10 @@
-using NUnit.Framework;
+using NUnit.Framework;
using TINK.Model;
using TINK.Model.User.Account;
using TINK.Model.Connector;
using System;
-using TINK.Model.Station;
+using TINK.Model.Stations;
using static TINK.Repository.CopriCallsMemory;
using TINK.Model.State;
using System.Collections.Generic;
@@ -68,7 +68,7 @@ namespace TestShareeLib.UseCases.Startup
Assert.AreEqual(
null,
l_oTinkApp.SelectedStation.Id,
- "When starting app selected station must always be invlid");
+ "When starting app selected station must always be invalid");
// Verify bikes at station.
Assert.AreEqual(
@@ -121,7 +121,7 @@ namespace TestShareeLib.UseCases.Startup
Assert.AreEqual(
null,
l_oTinkApp.SelectedStation.Id,
- "When starting app selected station must always be invlid");
+ "When starting app selected station must always be invalid");
// Verify bikes at station.
Assert.AreEqual(
@@ -182,7 +182,7 @@ namespace TestShareeLib.UseCases.Startup
Assert.AreEqual(
null,
l_oTinkApp.SelectedStation.Id,
- "When starting app selected station must always be invlid");
+ "When starting app selected station must always be invalid");
// Verify bikes at station.
Assert.AreEqual(
@@ -237,7 +237,7 @@ namespace TestShareeLib.UseCases.Startup
Assert.AreEqual(
null,
l_oTinkApp.SelectedStation.Id,
- "When starting app selected station must always be invlid");
+ "When starting app selected station must always be invalid");
// Verify bikes at station.
Assert.AreEqual(
@@ -377,7 +377,7 @@ namespace TestShareeLib.UseCases.Startup
l_oTinkApp.WhatsNew.IsShowRequired,
$"Whats new should not be displayed because app version is {l_oAppVersion} and version when \"Whats New\" was shown last is {l_oWhatsNewVersion} equals.");
- // Call member which view model would call if Whats New would have been shonw.
+ // Call member which view model would call if Whats New would have been shown.
l_oTinkApp.SetWhatsNewWasShown();
// Whats new page
diff --git a/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeInfo.cs b/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeInfo.cs
index 96fa65d..ab0eb9d 100644
--- a/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeInfo.cs
+++ b/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeInfo.cs
@@ -39,14 +39,6 @@ namespace TestTINKLib.Fixtures.ObjectTests.Bike.BC
}
}
- [Test]
- public void TestCtorCopyNull()
- {
- Assert.Throws(
- () => new BikeInfo(null),
- "Verify that no unspecific reference not set to... exception is thrown");
- }
-
[Test]
public void TestCtorBikeNull()
{
@@ -62,13 +54,5 @@ namespace TestTINKLib.Fixtures.ObjectTests.Bike.BC
() => new TestBikeInfoSubClass(new StateInfo(), new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike(string.Empty, LockModel.ILockIt), null),
Throws.ArgumentNullException);
}
-
- [Test]
- public void TestCtorCopy()
- {
- Assert.That(
- () => new BikeInfo(null),
- Throws.ArgumentNullException);
- }
}
}
diff --git a/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeInfoMutable.cs b/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeInfoMutable.cs
index 672d4ee..20019cf 100644
--- a/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeInfoMutable.cs
+++ b/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeInfoMutable.cs
@@ -21,6 +21,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Bike
IEnumerable group = null,
WheelType? wheelType = null,
TypeOfBike? typeOfBike = null,
+ AaRideType? aaRideType = null,
string description = null,
string stationId = null,
string stationName = null,
@@ -28,7 +29,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Bike
RentalDescription tariffDescription = null,
Func dateTimeProvider = null,
IStateInfo stateInfo = null) : base(
- new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike(id, lockModel, wheelType, typeOfBike, description),
+ new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike(id, lockModel, wheelType, typeOfBike, aaRideType, description),
new TINK.Model.Bikes.BikeInfoNS.DriveNS.Drive(),
TINK.Model.Bikes.BikeInfoNS.BC.DataSource.Copri,
isDemo,
@@ -53,7 +54,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Bike
Assert.AreEqual(null, l_oBikeInfo.WheelType);
Assert.AreEqual(null, l_oBikeInfo.TypeOfBike);
- l_oBikeInfo = new BikeInfoMutable("22", LockModel.ILockIt, false, new List { "TINK" }, WheelType.Trike, TypeOfBike.Cargo, "Test description", "23");
+ l_oBikeInfo = new BikeInfoMutable("22", LockModel.ILockIt, false, new List { "TINK" }, WheelType.Trike, TypeOfBike.Cargo, AaRideType.NoAaRide, "Test description", "23");
Assert.AreEqual("22", l_oBikeInfo.Id);
Assert.IsFalse(l_oBikeInfo.IsDemo);
Assert.AreEqual("23", l_oBikeInfo.StationId);
@@ -61,93 +62,5 @@ namespace TestTINKLib.Fixtures.ObjectTests.Bike
Assert.AreEqual(WheelType.Trike, l_oBikeInfo.WheelType);
Assert.AreEqual(TypeOfBike.Cargo, l_oBikeInfo.TypeOfBike);
}
-
-
- [Test]
- public void TestConstructCopyBooked()
- {
- // State Booked
- var bikeInfoSource = Substitute.For();
- var stateSource = Substitute.For();
-
- bikeInfoSource.Bike.Returns(new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike("22", LockModel.BordComputer, WheelType.Trike, TypeOfBike.Cargo));
- bikeInfoSource.StationId.Returns("23");
- bikeInfoSource.State.Returns(stateSource);
- stateSource.Value.Returns(InUseStateEnum.Booked);
- stateSource.From.Returns(new System.DateTime(2018, 01, 03));
- stateSource.MailAddress.Returns("a@b");
- stateSource.Code.Returns("234");
-
- var bikeInfoTarget = new TINK.Model.Bikes.BikeInfoNS.BC.BikeInfoMutable(bikeInfoSource, "My Station Name");
-
- Assert.AreEqual(InUseStateEnum.Booked, bikeInfoTarget.State.Value);
- Assert.AreEqual("22", bikeInfoTarget.Id);
- Assert.AreEqual("23", bikeInfoTarget.StationId);
- Assert.AreEqual("My Station Name", bikeInfoTarget.StationName);
- Assert.AreEqual(WheelType.Trike, bikeInfoTarget.WheelType);
- Assert.AreEqual(TypeOfBike.Cargo, bikeInfoTarget.TypeOfBike);
- Assert.AreEqual(InUseStateEnum.Booked, bikeInfoTarget.State.Value);
- Assert.AreEqual(new System.DateTime(2018, 01, 03), bikeInfoTarget.State.From);
- Assert.AreEqual("a@b", bikeInfoTarget.State.MailAddress);
- }
-
- [Test]
- public void TestConstructCopyReserved()
- {
- // State Reserved
- var bikeInfoSource = Substitute.For();
- var stateSource = Substitute.For();
-
- bikeInfoSource.Bike.Returns(new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike("22", LockModel.BordComputer, WheelType.Trike, TypeOfBike.Cargo));
- bikeInfoSource.StationId.Returns("23");
- bikeInfoSource.State.Returns(stateSource);
- stateSource.Value.Returns(InUseStateEnum.Reserved);
- stateSource.From.Returns(new System.DateTime(2018, 01, 03));
- stateSource.MailAddress.Returns("a@b");
- stateSource.Code.Returns("234");
-
- var bikeInfoTarget = new TINK.Model.Bikes.BikeInfoNS.BC.BikeInfoMutable(bikeInfoSource, "My Station Name");
-
- Assert.AreEqual(InUseStateEnum.Reserved, bikeInfoTarget.State.Value);
- Assert.AreEqual("22", bikeInfoTarget.Id);
- Assert.AreEqual("23", bikeInfoTarget.StationId);
- Assert.AreEqual(WheelType.Trike, bikeInfoTarget.WheelType);
- Assert.AreEqual(TypeOfBike.Cargo, bikeInfoTarget.TypeOfBike);
- Assert.AreEqual(InUseStateEnum.Reserved, bikeInfoTarget.State.Value);
- Assert.AreEqual(new System.DateTime(2018, 01, 03), bikeInfoTarget.State.From);
- Assert.AreEqual("a@b", bikeInfoTarget.State.MailAddress);
-
- }
-
- [Test]
- public void TestConstructCopyAvailable()
- {
- // State Disposable
- var bikeInfoSource = Substitute.For();
- var stateSource = Substitute.For();
-
- bikeInfoSource.Bike.Returns(new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike("22", LockModel.BordComputer, WheelType.Trike, TypeOfBike.Cargo));
- bikeInfoSource.StationId.Returns("23");
- bikeInfoSource.State.Returns(stateSource);
- stateSource.Value.Returns(InUseStateEnum.Disposable);
-
- var bikeInfoTarget = new TINK.Model.Bikes.BikeInfoNS.BC.BikeInfoMutable(bikeInfoSource, "My Station Name");
-
- Assert.AreEqual(InUseStateEnum.Disposable, bikeInfoTarget.State.Value);
- Assert.AreEqual("22", bikeInfoTarget.Id);
- Assert.AreEqual("23", bikeInfoTarget.StationId);
- Assert.AreEqual(WheelType.Trike, bikeInfoTarget.WheelType);
- Assert.AreEqual(TypeOfBike.Cargo, bikeInfoTarget.TypeOfBike);
- Assert.AreEqual(InUseStateEnum.Disposable, bikeInfoTarget.State.Value);
- Assert.IsNull(bikeInfoTarget.State.From);
- }
-
- [Test]
- public void TestConstructBikeNull()
- {
- Assert.That(
- () => new TINK.Model.Bikes.BikeInfoNS.BC.BikeInfoMutable(null, "My Station Name"),
- Throws.ArgumentNullException);
- }
}
}
diff --git a/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeMutable.cs b/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeMutable.cs
index 873aa2c..cef2fa9 100644
--- a/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeMutable.cs
+++ b/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeMutable.cs
@@ -19,6 +19,7 @@ namespace TestTINKLib
IEnumerable group = null,
WheelType? wheelType = null,
TypeOfBike? typeOfBike = null,
+ AaRideType? aaRideType = null,
string description = null,
string stationId = null,
string stationName = null,
@@ -26,7 +27,7 @@ namespace TestTINKLib
RentalDescription tariffDescription = null,
Func dateTimeProvider = null,
IStateInfo stateInfo = null) : base(
- new Bike(id, lockType, wheelType, typeOfBike, description),
+ new Bike(id, lockType, wheelType, typeOfBike, aaRideType, description),
new TINK.Model.Bikes.BikeInfoNS.DriveNS.Drive(),
TINK.Model.Bikes.BikeInfoNS.BC.DataSource.Copri,
isDemo,
@@ -66,6 +67,7 @@ namespace TestTINKLib
new List { "TINK" },
WheelType.Mono,
TypeOfBike.Allround,
+ AaRideType.NoAaRide,
"Test description",
"1");
@@ -86,7 +88,7 @@ namespace TestTINKLib
"Id=3, wheel(s)=Two, type=Cargo, demo=False, state=Disposable, location=On the road.",
l_oBike.ToString());
- l_oBike = new BikeInfoMutable("3", LockModel.ILockIt, true, new List { "TINK" }, WheelType.Trike, TypeOfBike.Allround, "Test description", "5", dateTimeProvider: () => new DateTime(1970, 1, 1));
+ l_oBike = new BikeInfoMutable("3", LockModel.ILockIt, true, new List { "TINK" }, WheelType.Trike, TypeOfBike.Allround, AaRideType.NoAaRide, "Test description", "5", dateTimeProvider: () => new DateTime(1970, 1, 1));
Assert.AreEqual(
"Id=3, wheel(s)=Trike, type=Allround, demo=True, state=Disposable, location=Station 5.",
l_oBike.ToString());
diff --git a/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeViewModel.cs b/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeViewModel.cs
index dd4621b..cd4179f 100644
--- a/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeViewModel.cs
+++ b/TestShareeLib/Model/Bikes/BikeInfoNS/BC/TestBikeViewModel.cs
@@ -23,13 +23,14 @@ namespace UITest.Fixtures.ViewModel
IEnumerable group = null,
WheelType? wheelType = null,
TypeOfBike? typeOfBike = null,
+ AaRideType? aaRideType = null,
string description = null,
string stationId = null,
string stationName = null,
Uri operatorUri = null,
Func dateTimeProvider = null,
IStateInfo stateInfo = null) : base(
- new Bike(id, lockModel, wheelType, typeOfBike, description),
+ new Bike(id, lockModel, wheelType, typeOfBike, aaRideType, description),
new TINK.Model.Bikes.BikeInfoNS.DriveNS.Drive(),
TINK.Model.Bikes.BikeInfoNS.BC.DataSource.Copri,
pisDemo,
@@ -55,6 +56,7 @@ namespace UITest.Fixtures.ViewModel
new List { "TINK" },
WheelType.Trike,
TypeOfBike.Cargo,
+ AaRideType.NoAaRide,
"Test description",
"3",
"Radstation",
@@ -96,6 +98,7 @@ namespace UITest.Fixtures.ViewModel
new List { "TINK" },
WheelType.Trike,
TypeOfBike.Cargo,
+ AaRideType.NoAaRide,
"Test description",
"3",
"Radstation",
@@ -130,7 +133,7 @@ namespace UITest.Fixtures.ViewModel
///
public static BikeViewModelBase TestStateText_LoggedIn_Booked(Func p_oFactory)
{
- var l_oBike = new BikeInfoMutable("2", LockModel.ILockIt, false, new List { "TINK" }, WheelType.Two, TypeOfBike.Cargo, "Test description", "3");
+ var l_oBike = new BikeInfoMutable("2", LockModel.ILockIt, false, new List { "TINK" }, WheelType.Two, TypeOfBike.Cargo, AaRideType.NoAaRide, "Test description", "3");
// Update from Copri.
l_oBike.State.Load(
diff --git a/TestShareeLib/Model/Bikes/BikeInfoNS/BluetoothLock/TestBikeInfo.cs b/TestShareeLib/Model/Bikes/BikeInfoNS/BluetoothLock/TestBikeInfo.cs
index 50004dc..dd5919d 100644
--- a/TestShareeLib/Model/Bikes/BikeInfoNS/BluetoothLock/TestBikeInfo.cs
+++ b/TestShareeLib/Model/Bikes/BikeInfoNS/BluetoothLock/TestBikeInfo.cs
@@ -1,5 +1,4 @@
using System;
-using NSubstitute.ExceptionExtensions;
using NUnit.Framework;
using TINK.Model.Bikes.BikeInfoNS.BikeNS;
using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
@@ -12,17 +11,11 @@ namespace TestTINKLib.Fixtures.ObjectTests.Bike.BluetoothLock
public class TestBikeInfo
{
[Test]
- public void TestCtorCopyNull()
- {
+ public void TestCtorCopyNull() =>
Assert.Throws(
() => new BikeInfo(null, null),
"Verify that no unspecific reference not set to... exception is thrown");
- Assert.Throws(
- () => new BikeInfo(new TINK.Model.Bikes.BikeInfoNS.BC.BikeInfo(new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike("12", LockModel.ILockIt), new Drive(), TINK.Model.Bikes.BikeInfoNS.BC.DataSource.Copri, "1"), null),
- "Verify that no unspecific reference not set to... exception is thrown");
- }
-
[Test]
public void TestCtorAvailable()
{
diff --git a/TestShareeLib/Model/Bikes/BikeInfoNS/CopriLock/TestBikeInfoMutable.cs b/TestShareeLib/Model/Bikes/BikeInfoNS/CopriLock/TestBikeInfoMutable.cs
index 10ca43c..af67078 100644
--- a/TestShareeLib/Model/Bikes/BikeInfoNS/CopriLock/TestBikeInfoMutable.cs
+++ b/TestShareeLib/Model/Bikes/BikeInfoNS/CopriLock/TestBikeInfoMutable.cs
@@ -7,31 +7,6 @@ namespace TestShareeLib.Model.Bike.CopriLock
[TestFixture]
public class TestBikeInfoMutable
{
- [Test]
- public void TestCtorBikeInfoNull()
- {
- Assert.That(
- () => new BikeInfoMutable(null, "Station 32"),
- Throws.ArgumentNullException);
- }
- [Test]
- public void TestCtorBikeInfo()
- {
- var bike = new TINK.Model.Bikes.BikeInfoNS.BikeNS.Bike(
- "MyId",
- TINK.Model.Bikes.BikeInfoNS.BikeNS.LockModel.Sigo);
-
- var bikeInfo = new TINK.Model.Bikes.BikeInfoNS.CopriLock.BikeInfo(
- bike,
- new Drive(new TINK.Model.Bikes.BikeInfoNS.DriveNS.EngineNS.Engine("BackendLock")),
- DataSource.Copri,
- "StationId",
- new TINK.Model.Bikes.BikeInfoNS.CopriLock.LockInfo());
-
- Assert.That(
- new BikeInfoMutable(bikeInfo, "Station 32").Drive.Type,
- Is.EqualTo(DriveType.Pedelec));
- }
}
}
diff --git a/TestShareeLib/Model/Bikes/BikeInfoNS/TestBikeCollectionMutable.cs b/TestShareeLib/Model/Bikes/BikeInfoNS/TestBikeCollectionMutable.cs
index c0cb4b8..1f21222 100644
--- a/TestShareeLib/Model/Bikes/BikeInfoNS/TestBikeCollectionMutable.cs
+++ b/TestShareeLib/Model/Bikes/BikeInfoNS/TestBikeCollectionMutable.cs
@@ -8,7 +8,8 @@ using TINK.Model.Bikes.BikeInfoNS.BikeNS;
using TINK.Model.Bikes.BikeInfoNS.DriveNS;
using TINK.Model.Connector.Updater;
using TINK.Model.State;
-using TINK.Model.Station;
+using TINK.Model.Stations;
+using TINK.Model.Stations.StationNS;
using BikeInfo = TINK.Model.Bikes.BikeInfoNS.BC.BikeInfo;
namespace TestTINKLib
@@ -26,6 +27,7 @@ namespace TestTINKLib
IEnumerable group = null,
WheelType? wheelType = null,
TypeOfBike? typeOfBike = null,
+ AaRideType? aaRideType = null,
string description = null,
string stationId = null,
string stationName = null,
@@ -33,7 +35,7 @@ namespace TestTINKLib
RentalDescription tariffDescription = null,
Func dateTimeProvider = null,
IStateInfo stateInfo = null) : base(
- new Bike(id, lockType, wheelType, typeOfBike, description),
+ new Bike(id, lockType, wheelType, typeOfBike, aaRideType, description),
new Drive(),
TINK.Model.Bikes.BikeInfoNS.BC.DataSource.Copri,
isDemo,
@@ -167,14 +169,14 @@ namespace TestTINKLib
var stations = new List
{
- new Station("7", new List(), null, "My facy station")
+ new Station("7", new List(), null, "My fancy station")
};
bikeColl.Update(l_oBikeResponse, stations);
// Verify modified state
Assert.That(bikeColl.GetById("57").StationId, Is.EqualTo("7"));
- Assert.That(bikeColl.GetById("57").StationName, Is.EqualTo("My facy station"));
+ Assert.That(bikeColl.GetById("57").StationName, Is.EqualTo("My fancy station"));
}
@@ -192,12 +194,28 @@ namespace TestTINKLib
var bikeResponse = new List
{
- new BikeInfo(new Bike("57" /* bike id*/, LockModel.ILockIt, WheelType.Trike, TypeOfBike.Allround, "Test description"), new Drive(), TINK.Model.Bikes.BikeInfoNS.BC.DataSource.Copri, false, new List {"TINK" }, "7" /*station id*/, null /*operator uri*/, null, DateTime.Now, "john@long,", "1234"),
+ new TINK.Model.Bikes.BikeInfoNS.BluetoothLock.BikeInfo(
+ new Bike("57" /* bike id*/, LockModel.ILockIt, WheelType.Trike, TypeOfBike.Allround, AaRideType.NoAaRide, "Test description"),
+ new Drive(),
+ TINK.Model.Bikes.BikeInfoNS.BC.DataSource.Copri,
+ 17, /* Lock id */
+ new Guid(),
+ new byte[0],
+ new byte[0],
+ new byte[0],
+ DateTime.Now,
+ "john@long,",
+ "7", /*station id*/
+ null, /*operator uri*/
+ null, /* tariff description */
+ false, /* is demo */
+ new List {"TINK" } /* group id */
+ ),
};
var stations = new List
{
- new Station("7", new List(), null, "My facy station")
+ new Station("7", new List(), null, "My fancy station")
};
bikeColl.Update(bikeResponse, stations);
diff --git a/TestShareeLib/Model/Connector/TestCachedQuery.cs b/TestShareeLib/Model/Connector/TestCachedQuery.cs
index be9aa5c..165a9c9 100644
--- a/TestShareeLib/Model/Connector/TestCachedQuery.cs
+++ b/TestShareeLib/Model/Connector/TestCachedQuery.cs
@@ -6,6 +6,7 @@ using TINK.Model.Connector;
using TINK.Model.Services.CopriApi;
using TINK.Repository;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
using TINK.Services.CopriApi;
namespace TestTINKLib.Fixtures.ObjectTests.Connector.Query
diff --git a/TestShareeLib/Model/Connector/TestCachedQueryLoggedIn.cs b/TestShareeLib/Model/Connector/TestCachedQueryLoggedIn.cs
index 29f4ea4..02a3656 100644
--- a/TestShareeLib/Model/Connector/TestCachedQueryLoggedIn.cs
+++ b/TestShareeLib/Model/Connector/TestCachedQueryLoggedIn.cs
@@ -7,6 +7,7 @@ using TINK.Model.Connector;
using TINK.Model.Services.CopriApi;
using TINK.Repository;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
using TINK.Services.CopriApi;
namespace TestShareeLib.Model.Connector
diff --git a/TestShareeLib/Model/Connector/TestCopriCallsStatic.cs b/TestShareeLib/Model/Connector/TestCopriCallsStatic.cs
index 084c305..5116cd3 100644
--- a/TestShareeLib/Model/Connector/TestCopriCallsStatic.cs
+++ b/TestShareeLib/Model/Connector/TestCopriCallsStatic.cs
@@ -1,4 +1,4 @@
-using System.Linq;
+using System.Linq;
using NUnit.Framework;
using TINK.Repository;
using TINK.Repository.Response;
@@ -37,7 +37,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Connector.Request
// Ensure that answer holds a valid bike.
var l_oBike = CopriCallsStatic.DeserializeResponse(VALID_RESPONSE).bikes.FirstOrDefault().Value;
Assert.NotNull(l_oBike, "Response must contain at leas one bike.");
- Assert.Greater(l_oBike.description.Length, 0, "Bike despcription must never be empty.");
+ Assert.Greater(l_oBike.description.Length, 0, "Bike description must never be empty.");
Assert.AreEqual(l_oBike.bike, "26");
Assert.That(
l_oBike.station,
@@ -108,7 +108,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Connector.Request
// Ensure that answer holds a valid bike.
var l_oBike = CopriCallsStatic.DeserializeResponse(VALID_RESPONSE).bikes.FirstOrDefault().Value;
Assert.NotNull(l_oBike, "Response must contain at leas one bike.");
- Assert.Greater(l_oBike.description.Length, 0, "Bike despcription must never be empty.");
+ Assert.Greater(l_oBike.description.Length, 0, "Bike description must never be empty.");
Assert.That(l_oBike.bike, Is.Null);
Assert.That(l_oBike.station, Is.Not.Null);
Assert.AreEqual("available", l_oBike.state);
@@ -150,7 +150,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Connector.Request
// Ensure that answer holds a valid bike.
var l_oBike = CopriCallsStatic.DeserializeResponse(VALID_RESPONSE).bikes_occupied.FirstOrDefault().Value;
Assert.NotNull(l_oBike, "Response must contain at leas one bike.");
- Assert.Greater(l_oBike.description.Length, 0, "Bike despcription must never be empty.");
+ Assert.Greater(l_oBike.description.Length, 0, "Bike description must never be empty.");
Assert.That(l_oBike.bike, Is.Not.Null);
Assert.That(l_oBike.station, Is.Not.Null);
Assert.Greater(l_oBike.state.Length, 0, "State info must never be null or empty.");
diff --git a/TestShareeLib/Model/Connector/TestCopriProviderHttps.cs b/TestShareeLib/Model/Connector/TestCopriProviderHttps.cs
index b5f926b..23c90bf 100644
--- a/TestShareeLib/Model/Connector/TestCopriProviderHttps.cs
+++ b/TestShareeLib/Model/Connector/TestCopriProviderHttps.cs
@@ -8,6 +8,7 @@ using TINK.Model.Services.CopriApi;
using TINK.Repository;
using TINK.Repository.Exception;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
using TINK.Services.CopriApi;
namespace TestTINKLib.Fixtures.ObjectTests.Connector
diff --git a/TestShareeLib/Model/Connector/TestQuery.cs b/TestShareeLib/Model/Connector/TestQuery.cs
index 4c8ca7d..0f34a85 100644
--- a/TestShareeLib/Model/Connector/TestQuery.cs
+++ b/TestShareeLib/Model/Connector/TestQuery.cs
@@ -4,10 +4,11 @@ using NSubstitute;
using NUnit.Framework;
using TINK.Repository;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TestTINKLib.Fixtures.ObjectTests.Query
{
- [TestFixture]
+ [TestFixture]
public class TestQuery
{
private const string BIKESAVAILABLE = @"{
diff --git a/TestShareeLib/Model/Connector/TestQueryLoggedIn.cs b/TestShareeLib/Model/Connector/TestQueryLoggedIn.cs
index 2429242..4795894 100644
--- a/TestShareeLib/Model/Connector/TestQueryLoggedIn.cs
+++ b/TestShareeLib/Model/Connector/TestQueryLoggedIn.cs
@@ -6,10 +6,11 @@ using NUnit.Framework;
using TINK.Model.Connector;
using TINK.Repository;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
namespace TestTINKLib.Fixtures.ObjectTests.Connector
{
- [TestFixture]
+ [TestFixture]
public class TestQueryLoggedIn
{
private const string BIKESAVAILABLE = @"{
diff --git a/TestShareeLib/Model/Connector/TestTextToTypeHelper.cs b/TestShareeLib/Model/Connector/TestTextToTypeHelper.cs
index a09f0bc..45310c3 100644
--- a/TestShareeLib/Model/Connector/TestTextToTypeHelper.cs
+++ b/TestShareeLib/Model/Connector/TestTextToTypeHelper.cs
@@ -1,11 +1,14 @@
-using System;
+using System;
using System.Linq;
using Newtonsoft.Json;
using NUnit.Framework;
+using NUnit.Framework.Internal;
using TINK.Model.Bikes.BikeInfoNS.BikeNS;
using TINK.Model.Connector;
using TINK.Repository.Exception;
using TINK.Repository.Response;
+using TINK.Repository.Response.Stations;
+using TINK.Repository.Response.Stations.Station;
using JsonConvertRethrow = TINK.Repository.Response.JsonConvertRethrow;
namespace TestTINKLib.Fixtures.Connector
@@ -22,7 +25,7 @@ namespace TestTINKLib.Fixtures.Connector
// Verify prerequisites
Assert.IsNull(l_oInfo.description);
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.IsNull(TextToTypeHelper.GetWheelType(l_oInfo));
}
@@ -43,7 +46,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.AreEqual(WheelType.Two, TextToTypeHelper.GetWheelType(l_oInfo));
l_oInfo = JsonConvertRethrow.DeserializeObject(@"
@@ -60,7 +63,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.AreEqual(WheelType.Trike, TextToTypeHelper.GetWheelType(l_oInfo));
l_oInfo = JsonConvertRethrow.DeserializeObject(@"
@@ -73,7 +76,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.That(TextToTypeHelper.GetWheelType(l_oInfo), Is.Null); // Was WheelType.Two up to 3.0.322
l_oInfo = JsonConvertRethrow.DeserializeObject(@"
@@ -86,7 +89,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.That(TextToTypeHelper.GetWheelType(l_oInfo), Is.Null); // Was WheelType.Two up to 3.0.322
}
@@ -98,7 +101,7 @@ namespace TestTINKLib.Fixtures.Connector
// Verify prerequisites
Assert.IsNull(l_oInfo.description);
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.IsNull(TextToTypeHelper.GetTypeOfBike(l_oInfo));
}
@@ -119,7 +122,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.AreEqual(TypeOfBike.Cargo, TextToTypeHelper.GetTypeOfBike(info));
info = JsonConvertRethrow.DeserializeObject(@"
@@ -136,7 +139,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.AreEqual(TypeOfBike.Cargo, TextToTypeHelper.GetTypeOfBike(info));
info = JsonConvertRethrow.DeserializeObject(@"
@@ -153,7 +156,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.AreEqual(TypeOfBike.City, TextToTypeHelper.GetTypeOfBike(info));
info = JsonConvertRethrow.DeserializeObject(@"
@@ -168,12 +171,38 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.That(
TextToTypeHelper.GetTypeOfBike(info),
Is.Null); // Version up to 3.0.322 considered this bike to be a city bike to to description "Stadtrad"
}
+ [Test]
+ public void TestGetAaRideTypeNoAa() =>
+ Assert.That(
+ JsonConvert.DeserializeObject(@"
+ {
+ ""aa_ride"": ""0"",
+ }").GetAaRideType(),
+ Is.EqualTo(AaRideType.NoAaRide));
+
+ [Test]
+ public void TestGetAaRideTypeAa() =>
+ Assert.That(
+ JsonConvert.DeserializeObject(@"
+ {
+ ""aa_ride"": ""1"",
+ }").GetAaRideType(),
+ Is.EqualTo(AaRideType.AaRide));
+
+ [Test]
+ public void TestGetAaRideTypeNull() =>
+ Assert.That(
+ JsonConvert.DeserializeObject(@"
+ {
+ }").GetAaRideType(),
+ Is.Null);
+
[Test]
public void TestGetStateAvailable()
=> Assert.That(
@@ -229,7 +258,7 @@ namespace TestTINKLib.Fixtures.Connector
// Verify prerequisites
Assert.IsNull(info.state);
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.Throws>(() => TextToTypeHelper.GetState(info));
}
@@ -246,7 +275,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.IsFalse(TextToTypeHelper.GetIsDemo(l_oInfo));
l_oInfo = JsonConvertRethrow.DeserializeObject(@"
@@ -259,7 +288,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.IsFalse(TextToTypeHelper.GetIsDemo(l_oInfo));
l_oInfo = JsonConvertRethrow.DeserializeObject(@"
@@ -272,7 +301,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.IsTrue(TextToTypeHelper.GetIsDemo(l_oInfo));
l_oInfo = JsonConvertRethrow.DeserializeObject(@"
@@ -285,7 +314,7 @@ namespace TestTINKLib.Fixtures.Connector
""state"" : ""available""
}");
- // Verify behaviour of member.
+ // Verify behavior of member.
Assert.IsFalse(TextToTypeHelper.GetIsDemo(l_oInfo));
}
@@ -368,7 +397,7 @@ namespace TestTINKLib.Fixtures.Connector
[Test]
public void TestGetStationGroup_Invalid()
{
- var l_oStation = JsonConvertRethrow.DeserializeObject(
+ var l_oStation = JsonConvertRethrow.DeserializeObject(
@"{
""station"" : ""4"",
""gps"" : { ""latitude"": ""47.6586936667"", ""longitude"": ""9.16863116667"" }
@@ -381,7 +410,7 @@ namespace TestTINKLib.Fixtures.Connector
[Test]
public void TestGetStationGroup_TINK()
{
- var l_oStation = JsonConvertRethrow.DeserializeObject(
+ var l_oStation = JsonConvertRethrow.DeserializeObject(
@"{
""station"" : ""4"",
""station_group"" : [ ""TINK"" ],
@@ -394,7 +423,7 @@ namespace TestTINKLib.Fixtures.Connector
[Test]
public void TestGetStationGroup_TINKAndKonrad()
{
- var l_oStation = JsonConvertRethrow.DeserializeObject(
+ var l_oStation = JsonConvertRethrow.DeserializeObject