mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-04-25 14:06:35 +02:00
Version 3.0.337
This commit is contained in:
parent
fd0e63cf10
commit
573fe77e12
2336 changed files with 33688 additions and 86082 deletions
145
TINKLib/Model/Bikes/BikeInfoNS/BikeNS/Bike.cs
Normal file
145
TINKLib/Model/Bikes/BikeInfoNS/BikeNS/Bike.cs
Normal file
|
@ -0,0 +1,145 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TINK.Model.Bikes.BikeInfoNS.BikeNS
|
||||
{
|
||||
/// <summary> Count of wheels. </summary>
|
||||
/// <remarks> Numeric values of enum must match count of wheels</remarks>
|
||||
public enum WheelType
|
||||
{
|
||||
Mono = 1,
|
||||
Two = 2,
|
||||
Trike = 3,
|
||||
Quad = 4
|
||||
}
|
||||
|
||||
/// <summary> Type of bike. </summary>
|
||||
public enum TypeOfBike
|
||||
{
|
||||
Allround = 0,
|
||||
Cargo = 1,
|
||||
City = 2,
|
||||
}
|
||||
|
||||
/// <summary> Holds the model of lock. </summary>
|
||||
public enum LockModel
|
||||
{
|
||||
ILockIt, // haveltec GbmH Brandenburg, Germany bluetooth lock
|
||||
BordComputer, // Teilrad BC
|
||||
Sigo, // Sigo Gmbh Darmstadt, Germany bike lock
|
||||
}
|
||||
|
||||
/// <summary> Holds the type of lock. </summary>
|
||||
public enum LockType
|
||||
{
|
||||
Backend, // Backend, i.e. COPRI controls lock (open, close, ...)
|
||||
Bluethooth, // Lock is controlled.
|
||||
}
|
||||
|
||||
public class Bike : IEquatable<Bike>
|
||||
{
|
||||
/// <summary>
|
||||
/// Constructs a bike.
|
||||
/// </summary>
|
||||
/// <param name="id">Unique id of bike.</param>
|
||||
public Bike(
|
||||
string id,
|
||||
LockModel lockModel,
|
||||
WheelType? wheelType = null,
|
||||
TypeOfBike? typeOfBike = null,
|
||||
string description = null)
|
||||
{
|
||||
WheelType = wheelType;
|
||||
TypeOfBike = typeOfBike;
|
||||
LockModel = lockModel;
|
||||
Id = id;
|
||||
Description = description;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Holds the unique id of the bike;
|
||||
/// </summary>
|
||||
public string Id { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Holds the count of wheels.
|
||||
/// </summary>
|
||||
public WheelType? WheelType { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Holds the type of bike.
|
||||
/// </summary>
|
||||
public TypeOfBike? TypeOfBike { get; }
|
||||
|
||||
/// <summary> Gets the model of the lock. </summary>
|
||||
public LockModel LockModel { get; private set; }
|
||||
|
||||
/// <summary> Holds the description of the bike. </summary>
|
||||
public string Description { get; }
|
||||
|
||||
|
||||
/// <summary> Compares two bike object.</summary>
|
||||
/// <param name="obj">Object to compare with.</param>
|
||||
/// <returns>True if bikes are equal.</returns>
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
var l_oBike = obj as Bike;
|
||||
if (l_oBike == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return Equals(l_oBike);
|
||||
}
|
||||
|
||||
/// <summary> Converts the instance to text.</summary>
|
||||
public new string ToString()
|
||||
{
|
||||
return WheelType == null || TypeOfBike == null
|
||||
? $"Id={Id}{(!string.IsNullOrEmpty(Description) ? $", {Description}" : "")}"
|
||||
: $"Id={Id}{(WheelType != null ? $", wheel(s)={WheelType}" : string.Empty)}{(TypeOfBike != null ? $"type={TypeOfBike}" : "")}.";
|
||||
}
|
||||
|
||||
/// <summary> Compares two bike object.</summary>
|
||||
/// <param name="obj">Object to compare with.</param>
|
||||
/// <returns>True if bikes are equal.</returns>
|
||||
public bool Equals(Bike other)
|
||||
{
|
||||
return other != null &&
|
||||
Id == other.Id &&
|
||||
WheelType == other.WheelType &&
|
||||
TypeOfBike == other.TypeOfBike
|
||||
&& Description == other.Description;
|
||||
}
|
||||
|
||||
/// <summary> Compares two bike object.</summary>
|
||||
/// <param name="obj">Object to compare with.</param>
|
||||
/// <returns>True if bikes are equal.</returns>
|
||||
public static bool operator ==(Bike bike1, Bike bike2)
|
||||
{
|
||||
return EqualityComparer<Bike>.Default.Equals(bike1, bike2);
|
||||
}
|
||||
|
||||
/// <summary> Compares two bike object.</summary>
|
||||
/// <param name="obj">Object to compare with.</param>
|
||||
/// <returns>True if bikes are equal.</returns>
|
||||
public static bool operator !=(Bike bike1, Bike bike2)
|
||||
{
|
||||
return !(bike1 == bike2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generates hash code for bike object.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override int GetHashCode()
|
||||
{
|
||||
var hashCode = -390870100;
|
||||
hashCode = hashCode * -1521134295 + Id.GetHashCode();
|
||||
hashCode = hashCode * -1521134295 + WheelType?.GetHashCode() ?? 0;
|
||||
hashCode = hashCode * -1521134295 + TypeOfBike?.GetHashCode() ?? 0;
|
||||
hashCode = hashCode * -1521134295 + Description?.GetHashCode() ?? 0;
|
||||
return hashCode;
|
||||
}
|
||||
}
|
||||
}
|
22
TINKLib/Model/Bikes/BikeInfoNS/BikeNS/BikeExtension.cs
Normal file
22
TINKLib/Model/Bikes/BikeInfoNS/BikeNS/BikeExtension.cs
Normal file
|
@ -0,0 +1,22 @@
|
|||
using System;
|
||||
|
||||
namespace TINK.Model.Bikes.BikeInfoNS.BikeNS
|
||||
{
|
||||
public static class BikeExtension
|
||||
{
|
||||
public static LockType GetLockType(this LockModel model)
|
||||
{
|
||||
switch (model)
|
||||
{
|
||||
case LockModel.ILockIt:
|
||||
return LockType.Bluethooth;
|
||||
|
||||
case LockModel.Sigo:
|
||||
return LockType.Backend;
|
||||
|
||||
default:
|
||||
throw new ArgumentException($"Unsupported lock model {model} detected.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue