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. /// DriveMutable 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 } }