namespace Gremlin_BlazorServer.Data.EntityClasses
{
	public class Contact : IMetadata
	{
		//primary key:
		public uint ContactId { get; set; }

		//foreign keys:
		public uint AccountId { get; set; }

		//navigation properties:
		public Account Account { get; set; } = new Account();
		public IList<Quote> Quotes { get; set; } = new List<Quote>();

		//class properties:
		public string AcademicTitle { get; set; } = string.Empty;
		public string FirstName { get; set; } = string.Empty;
		public string LastName { get; set; } = string.Empty;
		public byte Gender { get; set; }
		public bool OptInStatus { get; set; }
		public string Department { get; set; } = string.Empty;
		public string Function { get; set; } = string.Empty;
		public string Room { get; set; } = string.Empty;
		public bool IsReference { get; set; }
		public string Notes { get; set; } = string.Empty;
		public string PhoneNumber { get; set; } = string.Empty;
		public string MobileNumber { get; set; } = string.Empty;
		public string EMail { get; set; } = string.Empty;
		public string PreferredContactMethod { get; set; } = string.Empty;
		public bool NoPhoneCalls { get; set; }
		public bool EmailBounced { get; set; }
		public bool NoHardcopyMailing { get; set; }
		public bool ValidatedContact { get; set; }

		//Agilent-specific Properties:
		public int SAPContactNumber { get; set; }
		public DateTime SAPContactCreationDate { get; set; }
		public DateTime SAPContactModifiedDate { get; set; }
		public string SAPJobFunction { get; set; } = string.Empty;
		public string SAPProductInterest { get; set; } = string.Empty;
		public string SAPApplicationInterest { get; set; } = string.Empty;
		public string SAPJobLevel { get; set; } = string.Empty;
		public string SAPCompetitiveIBase { get; set; } = string.Empty;

		//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; } = string.Empty;
		public uint DataVersionNumber { get; set; }
		public string DataVersionComment { get; set; } = string.Empty;
		public string DataStatus { get; set; } = "Active";
	}
}
