mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2024-11-16 15:16:34 +01:00
145 lines
3.8 KiB
C#
145 lines
3.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|