#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member

using System;
using System.Collections.Generic;

using Volpe.Cafe.Initializers;
using Volpe.Cafe.MarketData.Design;

using TechKey = Volpe.Cafe.TechKeys.TechKey128;

namespace Volpe.Cafe.MarketData.BaselineInfo
{
    /// <summary>
    /// Provides a description of baseline engineering characteristics for a component family.
    /// </summary>
    /// <seealso cref="IOEMComponentFamily"/>
    [Serializable]
    public class BaselineComponentFamily : IOEMComponentFamilyInfo
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="BaselineComponentFamily"/> class.
        /// </summary>
        public BaselineComponentFamily(Dictionary<string, object> values)
        {
            DataObjectInitializer.SetPropertyValues(this, values);
        }

        /// <summary>
        /// Gets the unique code assigned to the component family.
        /// </summary>
        public int Code { get; private set; }
        /// <summary>
        /// Gets the name of the manufacturer that produces the component family.
        /// </summary>
        public string ManufacturerName { get; private set; }

        //----- component family characteristics -----
        public string FamilyName { get; private set; }

        //----- hidden/not-supported -----
        TechKey IOEMProductInfo.TechKey => TechKey.Empty;
        ModelYearKey IOEMProductInfo.RefreshYears => ModelYearKey.Full;
        ModelYearKey IOEMProductInfo.RedesignYears => ModelYearKey.Full;

        /// <summary>
        /// Returns the string representation of this <see cref="BaselineComponentFamily"/> instance.
        /// </summary>
        /// <returns>The string representation of the <see cref="BaselineComponentFamily"/> instance.</returns>
        public override string ToString()
        {
            return this.FamilyName;
        }

    }
}
