using System.Runtime.Serialization;

namespace BS.Shared.DataContracts
{
	[DataContract]
	public class DarreichungsformDC : IDataContract
	{
		[DataMember]
		public string Bezeichnung { get; set; }

		[DataMember]
		public int? Wert { get; set; }

		[DataMember]
		public long? DarreichungsformOid { get; set; }

		[DataMember]
		public long? DarreichungsformVersion { get; set; }

		public override bool Equals(object obj)
		{
			if (!(obj is DarreichungsformDC)) return false;

			var y = (DarreichungsformDC)obj;
			if (DarreichungsformOid == null && y.DarreichungsformOid == null)
				return GetHashCode() == y.GetHashCode();

			if (DarreichungsformOid != null && y.DarreichungsformOid != null)
				return DarreichungsformOid == y.DarreichungsformOid;

			return Bezeichnung.Equals(y.Bezeichnung) && Wert.Equals(y.Wert);
		}

		public override int GetHashCode()
		{
			return DarreichungsformOid.HasValue
				? GetType().Name.GetHashCode() ^ DarreichungsformOid.GetHashCode()
				: base.GetHashCode();
		}

		public override string ToString()
		{
			return Bezeichnung;
		}
	}
}
