using System.Runtime.Serialization;

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

		[DataMember]
		public string BezeichnungLang { get; set; }

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

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

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

			var y = (MedArtDC) obj;
			if (MedArtOid == null && y.MedArtOid == null)
				return GetHashCode() == y.GetHashCode();

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

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

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

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