using ZionVault.Basic;

namespace  ZionVault.Binder.Indexing
{
    public class Field
    {
        /// <summary>
        /// Código de referência do campo. ex: BL001
        /// </summary>
        private string reference = null;
        /// <summary>
        /// Código de referência do tipo do campo. ex: DT, VALUE, DOC...
        /// </summary>
        private string type = null;
        /// <summary>
        /// Valor do campo.
        /// </summary>
        private string value = null;
        /// <summary>
        /// Status do campo.
        /// </summary>
        private string status = null;
        /// <summary>
        /// Localização do campo no documento. Coordenadas dos eixos X e Y, largura e altura.
        /// </summary>
        private Location position = new Location(0, 0, 0, 0);

        public Field() { }

        public Field(string reference, string type, string value, string status, Location location)
        {
            this.Reference = reference;
            this.Type = type;
            this.Value = value;
            this.Status = status;
            this.position = location;
        }

        /// <summary>
        /// Função de acesso a variável Reference
        /// </summary>
        public string Reference
        {
            get { return this.reference; }
            set { this.reference = value; }
        }
        /// <summary>
        /// Função de acesso a variável Type
        /// </summary>
        public string Type
        {
            get { return this.type; }
            set { this.type = value; }
        }
        /// <summary>
        /// Função de acesso a variável value
        /// </summary>
        public string Value
        {
            get { return this.value; }
            set { this.value = value; }
        }
        /// <summary>
        /// Função de acesso a variável value
        /// </summary>
        public string Status
        {
            get { return this.status; }
            set { this.status = value; }
        }
        /// <summary>
        /// Função de acesso a variável value
        /// </summary>
        public string Location
        {
            get { return (position != null) ? position.ToString() : string.Empty; }
        }
    }
}
