2021-05-13 20:16:41 +02:00
using System.ComponentModel ;
2022-01-22 18:28:01 +01:00
using System.Threading.Tasks ;
2022-08-30 15:42:25 +02:00
using Xamarin.Forms ;
2021-06-26 20:57:55 +02:00
2021-05-13 20:16:41 +02:00
namespace TINK.ViewModel.Contact
{
2022-09-06 16:08:19 +02:00
public class FeesAndBikesPageViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged ;
2021-05-13 20:16:41 +02:00
2021-06-26 20:57:55 +02:00
2022-09-06 16:08:19 +02:00
/// <summary> Holds value wether site caching is on or off.</summary>
bool IsSiteCachingOn { get ; }
2021-05-13 20:16:41 +02:00
2022-09-06 16:08:19 +02:00
private string FeesResourcePath { get ; }
2022-01-22 18:28:01 +01:00
2022-09-06 16:08:19 +02:00
private string BikesResourcePath { get ; }
2022-01-22 18:28:01 +01:00
2022-09-06 16:08:19 +02:00
/// <summary> Constructs view model.</summary>
/// <param name="isSiteCachingOn">Set of user permissions</param>
/// <param name="resourceProvider">Delegate to get an an embedded html ressource. Used as fallback if download from web page does not work and cache is empty.</param>
public FeesAndBikesPageViewModel (
string hostName ,
string feesResourcePath ,
string bikesResourcePath ,
bool isSiteCachingOn )
{
HostName = hostName ;
FeesResourcePath = feesResourcePath ;
BikesResourcePath = bikesResourcePath ;
IsSiteCachingOn = isSiteCachingOn ;
}
2021-05-13 20:16:41 +02:00
2022-09-06 16:08:19 +02:00
/// <summary> Holds the name of the host.</summary>
private string HostName { get ; }
2021-05-13 20:16:41 +02:00
2022-09-06 16:08:19 +02:00
/// <summary> Called when page is shown. </summary>
public async void OnAppearing ( )
{
RentBikeText = new HtmlWebViewSource
{
Html = ! string . IsNullOrEmpty ( FeesResourcePath )
? await ViewModelHelper . GetSource ( $"https://{HostName}/{FeesResourcePath}" /* "site/tariff_info_1.html" */ , IsSiteCachingOn )
: await Task . FromResult ( ViewModelHelper . FromBody ( "No fees resource available. Resource path is null or empty." ) )
} ;
2021-05-13 20:16:41 +02:00
2022-09-06 16:08:19 +02:00
TypesOfBikesText = new HtmlWebViewSource
{
Html = ! string . IsNullOrEmpty ( BikesResourcePath )
? await ViewModelHelper . GetSource ( $"https://{HostName}/{BikesResourcePath}" /*"site/bike_info.html"*/ , IsSiteCachingOn )
: await Task . FromResult ( ViewModelHelper . FromBody ( "No bikes instruction resource available. Resource path is null or empty." ) )
} ;
}
2021-05-13 20:16:41 +02:00
2022-09-06 16:08:19 +02:00
private HtmlWebViewSource rentBikeText ;
2021-05-13 20:16:41 +02:00
2022-09-06 16:08:19 +02:00
private HtmlWebViewSource typesOfBikesText ;
2021-05-13 20:16:41 +02:00
2022-09-06 16:08:19 +02:00
public HtmlWebViewSource RentBikeText
{
get = > rentBikeText ;
set
{
rentBikeText = value ;
PropertyChanged ? . Invoke ( this , new PropertyChangedEventArgs ( nameof ( RentBikeText ) ) ) ;
}
}
2021-05-13 20:16:41 +02:00
2022-09-06 16:08:19 +02:00
public HtmlWebViewSource TypesOfBikesText
{
get = > typesOfBikesText ;
set
{
typesOfBikesText = value ;
PropertyChanged ? . Invoke ( this , new PropertyChangedEventArgs ( nameof ( TypesOfBikesText ) ) ) ;
}
}
}
2021-05-13 20:16:41 +02:00
}