namespace InABox.Core
{
    [UserTracking(typeof(User))]
    public class CompanyInformation : Entity, IRemotable, IPersistent, ILicense<CoreLicense>
    {
        [TextBoxEditor]
        [EditorSequence(1)]
        [Caption("Name")]
        public string CompanyName { get; set; }

        [CodeEditor(Editable = Editable.Enabled)]
        [EditorSequence(2)]
        public string ABN { get; set; }

        [TextBoxEditor]
        [EditorSequence(3)]
        public string Telephone { get; set; }

        [TextBoxEditor]
        [EditorSequence(4)]
        public string Email { get; set; }

        [EditorSequence(5)]
        [Caption("Logo")]
        public ImageDocumentLink Logo => InitializeField(ref _logo, nameof(Logo));
        private ImageDocumentLink? _logo;

        [EditorSequence("Postal Address", 1)]
        [Caption("")]
        public Address PostalAddress => InitializeField(ref _postalAddress, nameof(PostalAddress));
        private Address? _postalAddress;

        [EditorSequence("Delivery Address", 1)]
        [Caption("")]
        public Address DeliveryAddress => InitializeField(ref _deliveryAddress, nameof(DeliveryAddress));
        private Address? _deliveryAddress;

        [MemoEditor]
        [EditorSequence("Invoice Note", 1)]
        [Caption("")]
        public string InvoiceNote { get; set; }

        [MemoEditor]
        [EditorSequence("Purchase Note", 2)]
        [Caption("")]
        public string PurchaseNote { get; set; }
    }
}