Gremlin/Gremlin_BlazorServer/Data/EntityClasses/Account.cs

100 lines
3.2 KiB
C#

using System.ComponentModel.DataAnnotations;
namespace Gremlin_BlazorServer.Data.EntityClasses;
public class Account : IMetadata
//: IEquatable<Account>
{
//primary key:
[Required] public uint AccountId { get; set; }
//foreign keys:
public IList<Contact>? Contacts { get; set; }
public uint ParentAccountId { get; set; } = 0;
public AccountType? AccountType { get; set; }
public SubMarket? SubMarket { get; set; }
public IList<CustomDescription>? 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()
/////<summary>
/////Returns the (unique) SAP Account ID.
/////</summary>
//{
// return Convert.ToInt32(this.SAPAccountNumber);
//}
public List<Account> AddIfUniqueTo(List<Account> 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;
}
}