using System.ComponentModel.DataAnnotations; namespace Gremlin_BlazorServer.Data.EntityClasses; public class Account : IMetadata //: IEquatable { //primary key: [Required] public uint AccountId { get; set; } //foreign keys: // [Required] public uint ParentAccountId { get; set; } public string? AccountTypeCode { get; set; } public string? SubMarketCode { get; set; } //navigation properties: public AccountType? AccountType { get; set; } public SubMarket? SubMarket { get; set; } public IList? Contacts { get; set; } public IList SalesReps { get; set; } // public IList? CustomDescriptions { get; set; } //class properties: [Required] public string? AccountName { get; set; } public string Notes { get; set; } = string.Empty; [Required] public string? Street { get; set; } [Required] public uint Zip { get; set; } [Required] public string? City { get; set; } public string FloorOrBuilding { get; set; } = string.Empty; public float Longitude { get; set; } public float Latitude { get; set; } public string PhoneNumber { get; set; } = string.Empty; public string FaxNumber { get; set; } = string.Empty; public string Webpage { get; set; } = string.Empty; public string EMail { get; set; } = string.Empty; //Agilent-specific Properties: public uint SapAccountNumber { get; set; } public DateTime AccountCreatedInSapOn { get; set; } //metadata: public DateTime DataCreationDate { get; set; } = DateTime.Now; public DateTime DataModificationDate { get; set; } = DateTime.Now; public DateTime DataValidFrom { get; set; } = DateTime.Now; public DateTime DataValidUntil { get; set; } = DateTime.MaxValue; public string DataModificationByUser { get; set; } = "Gremlin_BlazorServer"; public uint DataVersionNumber { get; set; } public string? DataVersionComment { get; set; } = string.Empty; public string DataStatus { get; set; } = "Active"; //IBase //tbd //public bool Equals(Account other) //{ // if (other == null) return false; // if (this == null) return false; // if (this.SAPAccountNumber == other.SAPAccountNumber) return true; // else return false; //} //public static bool operator ==(Account account1, Account account2) //{ // if (account1.SAPAccountNumber == 0) return false; // if (account2.SAPAccountNumber == 0) return false; // if (account1.SAPAccountNumber == account2.SAPAccountNumber) return true; // else return false; //} //public static bool operator !=(Account account1, Account account2) //{ // if (account1.SAPAccountNumber == 0) return false; // if (account2.SAPAccountNumber == 0) return false; // if (account1.SAPAccountNumber == account2.SAPAccountNumber) return false; // else return true; //} //public override bool Equals(object obj) //{ // if (obj == null) return false; // Account accountObj = obj as Account; // if (accountObj == null) return false; // else return base.Equals(obj); //} //public override int GetHashCode() ///// /////Returns the (unique) SAP Account ID. ///// //{ // return Convert.ToInt32(this.SAPAccountNumber); //} public List AddIfUniqueTo(List accounts) { if (accounts.Count > 0 && SapAccountNumber == accounts[^1].SapAccountNumber) return accounts; foreach (Account account in accounts) { if (SapAccountNumber == account.SapAccountNumber) return accounts; } accounts.Add(this); return accounts; } }