using System;
using Volpe.Cafe.ModelSettings;
using Volpe.Cafe.Reporting.Generators;

namespace Volpe.Cafe.Reporting.ModelingReports
{
    /// <summary>
    /// Provides support for generating a <b>vehicles battery and motor</b> modeling report.
    /// </summary>
    [Serializable]
    public class VehiclesBatteryMotorReport : ModelingReport
    {
        /// <inheritdoc cref="ModelingReport(string, bool, Func{string[]})"/>
        public VehiclesBatteryMotorReport(string path, bool append = false)
            : base(path, append, GetHeaders) { }

        /// <inheritdoc/>
        public override ReportDataGenerator GetDataGenerator(
            Scenario scen, ReportingData data, ModelingSettings settings)
        {
            return new VehiclesBatteryMotorReportDataGenerator(scen, data, settings);
        }

        private static new string[] GetHeaders()
        {
            return new string[] {
                //---- header columns -----
                "Scenario", "Scenario Name", "Model Year", "Manufacturer",

                //----- general vehicle info -----
                "Veh Code", "Plt Code", "Eng Code", "Trn Code", "Powertrain", "Tech Class",

                //----- battery info -----
                "Battery Cost", "Battery Energy",

                //----- motor info -----
                "Motor1 Peak Power", "Motor1 Cont Power", "Motor2 Peak Power", "Motor2 Cont Power",

                //----- techkey info -----
                "TechKey Initial", "TechKey"
            };
        }

    }
}
