using System;
using System.Collections.Generic;
using System.Text;

namespace GMLC01HerramientasCad.Logica
{
    /// <summary>
    /// Definición del subtipo para transferenicia con el módulo CAD
    /// </summary>
    public class SubTipo
    {
        /// <summary>
        /// Constructor de la clase
        /// </summary>
        /// <param name="codigo">Código del subtipo según aparece en el XSD</param>
        /// <param name="nombres">Nombres del subtipo en los diferentes idiomas soportados en el XSD</param>
        /// <param name="descripciones">Descripciones del subtipo en los diferentes idiomas soportados en el XSD</param>
        /// <param name="entidad">Entidad a la que pertenece el subtipo</param>
        public SubTipo(String codigo, Dictionary<String, String> nombres, Dictionary<String, String> descripciones, Entidad entidad)
        {
            try
            {
                Codigo = codigo;
                Nombres = nombres;
                Descripciones = descripciones;
                Entidad = entidad;
            }
            catch (Exception e)
            {
                Log.RegisterError(e);
                throw new ExcepcionGMLC(e.Message, e);
            }
        }

        /// <summary>
        /// Código del subtipo
        /// </summary>
        public string Codigo { get; internal set; }

        /// <summary>
        /// Nombres del SubTipo en los diferentes idiomas soportados en el XSD
        /// </summary>
        public Dictionary<string, string> Nombres { get; internal set; }

        /// <summary>
        /// Nombre a mostrar del SubTipo según el idioma activo
        /// </summary>
        public String Nombre
        {
            get { return Nombres[ModComun.Idioma]; }
        }

        /// <summary>
        /// Descripciones del SubTipo en los diferentes idiomas soportados en el XSD
        /// </summary>
        public Dictionary<string, string> Descripciones { get; internal set; }

        /// <summary>
        /// Descripción a mostrar del SubTipo según el idioma activo
        /// </summary>
        public String Descripcion
        {
            get { return Descripciones[ModComun.Idioma]; }
        }

        /// <summary>
        /// Entidad padre del subtipo
        /// </summary>
        public Entidad Entidad { get; internal set; }
    }
}
