using System;

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

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

        //navigation properties:
        public Account Account { get; set; }
        //public IList<Quote> Quotes { get; set; } 

        //standard properties:
        public DateTime DataCreationDate { get; set; }
        public DateTime DataModificationDate { get; set; }
        public DateTime DataValidFrom { get; set; }
        public DateTime DataValidUntil { get; set; }
        public string DataModificationByUser { get; set; }
        public uint DataVersionNumber { get; set; }
        public string DataVersionComment { get; set; }
        public string DataStatus { get; set; }

        //class properties:
        public string AcademicTitle { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        /// <summary>
        /// enum Gender
        /// 
        /// 0 = unknown, 1 = male, 2 = female, 3 = divers
        /// </summary>
        public byte Gender { get; set; }
        public bool? OptInStatus { get; set; }
        public string Department { get; set; }
        public string Function { get; set; }
        public string Room { get; set; }
        public bool? IsReference { get; set; }
        public string Notes { get; set; }
        public string PhoneNumber { get; set; }
        public string MobileNumber { get; set; }
        public string EMail { get; set; }
        public string PreferredContactMethod { get; set; }
        public bool NoPhoneCalls { get; set; }
        public bool EmailBounced { get; set; }
        public bool NoHardcopyMailing { get; set; }
        public bool ValidatedContact { get; set; }
        //public ICollection<CommunicationChannel> CommunicationChannels { 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; }
        public string SAPProductInterest { get; set; }
        public string SAPApplicationInterest { get; set; }
        public string SAPJobLevel { get; set; }
        public string SAPCompetitiveIBase { get; set; }
        public string LinkToSAP { get; set; }

        public Contact()
        {
            //Account = DbHelper.ResolveAccountById(new GremlinContext(), AccountId);
        }
    }
}
