using System; using System.Collections.Generic; using TINK.Model.Bikes.Bike; using TINK.Model.Bikes.Bike.CopriLock; using TINK.Model.State; namespace TINK.Model.Bike.CopriLock { public class BikeInfo : BC.BikeInfo { /// /// Constructs a bike info object for a available bike. /// /// Unique id of bike. /// Id of station where bike is located. /// Lock info. /// Holds the uri of the operator or null, in case of single operator setup. /// Hold tariff description of bike. /// Trike, two wheels, mono, .... public BikeInfo( string bikeId, string currentStationId, LockInfo lockInfo, Uri operatorUri = null, RentalDescription tariffDescription = null, bool? isDemo = DEFAULTVALUEISDEMO, IEnumerable group = null, WheelType? wheelType = null, TypeOfBike? typeOfBike = null, string description = null) : base( new StateInfo(), bikeId, LockModel.Sigo, isDemo, group, wheelType, typeOfBike, description, currentStationId, operatorUri, tariffDescription) { LockInfo = lockInfo; } /// /// Constructs a bike info object for a requested bike. /// /// Unique id of bike. /// Date time when bike was requested /// Mail address of user which requested bike. /// Name of station where bike is located, null if bike is on the road. /// 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. /// public BikeInfo( string id, DateTime requestedAt, string mailAddress, string currentStationId, LockInfo lockInfo, Uri operatorUri, RentalDescription tariffDescription, Func dateTimeProvider, bool? isDemo = DEFAULTVALUEISDEMO, IEnumerable group = null, WheelType? wheelType = null, TypeOfBike? typeOfBike = null, string description = null) : base( new StateInfo( dateTimeProvider, requestedAt, mailAddress, ""), id, LockModel.ILockIt, isDemo, group, wheelType, typeOfBike, description, currentStationId, operatorUri, tariffDescription) { LockInfo = lockInfo; } /// /// Constructs a bike info object for a booked bike. /// /// Date time when bike was booked /// Mail address of user which booked bike. /// Name of station where bike is located, null if bike is on the road. /// Lock info. /// Holds the uri of the operator or null, in case of single operator setup. /// Hold tariff description of bike. /// public BikeInfo( string id, DateTime bookedAt, string mailAddress, string currentStationId, LockInfo lockInfo, Uri operatorUri, RentalDescription tariffDescription = null, bool? isDemo = DEFAULTVALUEISDEMO, IEnumerable group = null, WheelType? wheelType = null, TypeOfBike? typeOfBike = null, string description = null) : base( new StateInfo( bookedAt, mailAddress, ""), id, LockModel.ILockIt, isDemo, group, wheelType, typeOfBike, description, currentStationId, operatorUri, tariffDescription) { LockInfo = lockInfo; } 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 ?? throw new ArgumentException($"Can not copy-construct {typeof(BikeInfo).Name}-object. Source lock object must not be null."); } public LockInfo LockInfo { get; private set; } } }