using System;
using System.Collections.Generic;
using System.ComponentModel;
using TINK.Model.Bikes.BikeInfoNS.BikeNS;
using TINK.Model.Bikes.BikeInfoNS.DriveNS;
using TINK.Model.State;
namespace TINK.Model.Bikes.BikeInfoNS.BC
{
public interface IBikeInfoMutable
{
///
/// Holds the unique id of the bike;
///
string Id { get; }
/// True if bike is a demo bike.
bool IsDemo { get; }
/// Returns the group (TINK, Konrad, ...).
IEnumerable Group { get; }
///
/// Holds the count of wheels.
///
WheelType? WheelType { get; }
///
/// Holds the type of bike.
///
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; }
/// Holds the description of the bike.
string Description { get; }
///
/// Station a which bike is located, null otherwise.
///
string StationId { get; }
///
/// Holds the rent state of the bike.
///
IStateInfoMutable State { get; }
///
/// Uri of the operator or null, in case of single operator setup.
///
Uri OperatorUri { get; }
///
/// Hold the drive object.
///
Drive Drive { get; }
/// Gets or sets the information where the data origins from.
DataSource DataSource { get; set; }
///
/// Gets the rental description.
///
IRentalDescription TariffDescription { get; }
/// Loads a bike object from copri server booking_cancel (cancel reservation)/ booking_update (return bike) response.
/// Controls whether notify property changed events are fired or not.
/// Id of the station if bike station changed, null otherwise.
void Load(
NotifyPropertyChangedLevel notifyLevel,
string stationId = null);
event PropertyChangedEventHandler PropertyChanged;
}
public enum NotifyPropertyChangedLevel
{
/// Notify about all property changes.
All,
/// Notify about no property changes.
None
}
}