using System; using TINK.Model.Connector; using TINK.Services.BluetoothLock; using TINK.Model.Services.Geolocation; using TINK.Model.User; using TINK.View; using TINK.Model.Device; namespace TINK.ViewModel.Bikes.Bike { public static class BikeViewModelFactory { /// Provides info about the smart device (phone, tablet, ...). /// Provides in use state information. /// View model to be used for progress report and unlocking/ locking view. public static BikeViewModelBase Create( Func isConnectedDelegate, Func connectorFactory, IGeolocation geolocation, ILocksService lockService, Action bikeRemoveDelegate, Func viewUpdateManager, ISmartDevice smartDevice, IViewService viewService, Model.Bike.BC.BikeInfoMutable bikeInfo, IUser activeUser, IInUseStateInfoProvider stateInfoProvider, IBikesViewModel bikesViewModel) { return bikeInfo as Model.Bikes.Bike.BluetoothLock.IBikeInfoMutable != null ? new BluetoothLock.BikeViewModel( isConnectedDelegate, connectorFactory, geolocation, lockService, bikeRemoveDelegate, viewUpdateManager, smartDevice, viewService, bikeInfo as Model.Bike.BluetoothLock.BikeInfoMutable, activeUser, stateInfoProvider, bikesViewModel) as BikeViewModelBase : new BC.BikeViewModel( isConnectedDelegate, connectorFactory, bikeRemoveDelegate, viewUpdateManager, smartDevice, viewService, bikeInfo, activeUser, stateInfoProvider, bikesViewModel); } } }