mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2024-11-05 10:36:30 +01:00
127 lines
4.1 KiB
C#
127 lines
4.1 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
|
|||
|
namespace TINK.Model.Bike
|
|||
|
{
|
|||
|
/// <summary> Count of wheels. </summary>
|
|||
|
public enum WheelType
|
|||
|
{
|
|||
|
Mono = 0,
|
|||
|
Two = 1,
|
|||
|
Trike = 2,
|
|||
|
}
|
|||
|
|
|||
|
/// <summary> Type of bike. </summary>
|
|||
|
public enum TypeOfBike
|
|||
|
{
|
|||
|
Allround = 0,
|
|||
|
Cargo = 1,
|
|||
|
Citybike = 2,
|
|||
|
}
|
|||
|
|
|||
|
public class Bike : IEquatable<Bike>
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Constructs a bike.
|
|||
|
/// </summary>
|
|||
|
/// <param name="dateTimeProvider">Provider for current date time to calculate remainig time on demand for state of type reserved.</param>
|
|||
|
/// <param name="wheelType"></param>
|
|||
|
/// <param name="p_iId">Unique id of bike.</param>
|
|||
|
/// <param name="p_strCurrentStationName">Name of station where bike is located, null if bike is on the road.</param>
|
|||
|
public Bike(
|
|||
|
int p_iId,
|
|||
|
WheelType? wheelType = null,
|
|||
|
TypeOfBike? typeOfBike = null,
|
|||
|
string description = null)
|
|||
|
{
|
|||
|
WheelType = wheelType;
|
|||
|
TypeOfBike = typeOfBike;
|
|||
|
Id = p_iId;
|
|||
|
Description = description;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Holds the unique id of the bike;
|
|||
|
/// </summary>
|
|||
|
public int 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> 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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|