From 10e1c72e9a3f6fefc56a2a4ea7250a8cbb70be5b Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 5 Aug 2022 10:48:14 +0200
Subject: [PATCH] re-adding IEPC class, adding missing retarder type file

---
 .../Components/MRFIEPCType.cs                 | 59 +++++++++++++++++++
 .../PrimaryComponents/VIFRetarderType.cs      | 43 ++++++++++++++
 2 files changed, 102 insertions(+)
 create mode 100644 VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFIEPCType.cs
 create mode 100644 VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFRetarderType.cs

diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFIEPCType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFIEPCType.cs
new file mode 100644
index 0000000000..9acaae31c7
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFIEPCType.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter.Components
+{
+    internal class MrfiepcSpecificationsTypeWriter : AbstractMrfXmlType, IXmlTypeWriter
+    {
+		public MrfiepcSpecificationsTypeWriter(IManufacturerReportFactory mrfFactory) : base(mrfFactory) { }
+
+		#region Overrides of AbstractMrfXmlType
+
+		public XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			var iepcData = inputData.JobInputData.Vehicle.Components.IEPC;
+			
+
+			var iepcXElement = new XElement(_mrf + "IEPCSpecifications",
+				new XElement(_mrf + XMLNames.Component_Model, iepcData.Model),
+				new XElement(_mrf + XMLNames.Component_CertificationNumber, iepcData.CertificationNumber),
+				new XElement(_mrf + XMLNames.DI_Signature_Reference_DigestValue, iepcData.DigestValue?.DigestValue ?? ""),
+				new XElement(_mrf + XMLNames.Engine_RatedPower, iepcData.R85RatedPower.ToXMLFormat()));
+				//new XElement(_mrf + "MaxContinuousPower",(iepcData.ContinuousTorque*iepcData.ContinuousTorqueSpeed).ToXMLFormat()),
+
+			var voltageLevels = new XElement(_mrf + "VoltageLevels");
+			iepcXElement.Add(voltageLevels);
+
+			foreach (var electricMotorVoltageLevel in iepcData.VoltageLevels) {
+				var voltageLevel = new XElement(_mrf + XMLNames.ElectricMachine_VoltageLevel,
+					new XAttribute("voltage", electricMotorVoltageLevel.VoltageLevel.ToXMLFormat(0)),
+					new XElement(_mrf + "MaxContinuousPower",
+						(electricMotorVoltageLevel.ContinuousTorque * electricMotorVoltageLevel.ContinuousTorqueSpeed)
+						.ToXMLFormat(0)));
+
+
+				voltageLevels.Add(voltageLevel);
+			}
+				
+			iepcXElement.Add(
+				new XElement(_mrf + "NrOfGears", iepcData.Gears.Count),
+				new XElement(_mrf + "LowestTotalTransmissionRatio", (iepcData.Gears.OrderByDescending(g => g.GearNumber).First().Ratio
+																	* inputData.JobInputData.Vehicle.Components.AxleGearInputData.Ratio).ToXMLFormat(3)),
+				new XElement(_mrf + XMLNames.IEPC_DifferentialIncluded, iepcData.DifferentialIncluded),
+				new XElement(_mrf + XMLNames.Component_CertificationMethod, iepcData.CertificationMethod)
+			);
+
+
+			return iepcXElement;
+		}
+
+		#endregion
+	}
+}
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFRetarderType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFRetarderType.cs
new file mode 100644
index 0000000000..0754d15218
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFRetarderType.cs
@@ -0,0 +1,43 @@
+using System.Xml;
+using System.Xml.Linq;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.Components
+{
+	public class VIFRetarderType : AbstractVIFXmlType, IXmlTypeWriter
+	{
+		public VIFRetarderType(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		#region Implementation of IXmlTypeWriter
+
+		public XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			var retarder = inputData.JobInputData.Vehicle.Components.RetarderInputData;
+			if (retarder == null || retarder.Type.IsOneOf(RetarderType.EngineRetarder, RetarderType.None,
+					RetarderType.LossesIncludedInTransmission))
+				return null;
+
+			return new XElement(_vif + XMLNames.Component_Retarder,
+				new XElement(_vif + XMLNames.ComponentDataWrapper,
+					new XAttribute(_xsi + XMLNames.XSIType, "RetarderDataVIFType"),
+					new XElement(_vif + XMLNames.Component_Manufacturer, retarder.Manufacturer),
+					new XElement(_vif + XMLNames.Component_Model, retarder.Model),
+					new XElement(_vif + XMLNames.Component_CertificationMethod, retarder.CertificationMethod.ToXMLFormat()),
+					retarder.CertificationMethod == CertificationMethod.StandardValues
+						? null
+						: new XElement(_vif + XMLNames.Report_Component_CertificationNumber,
+							retarder.CertificationNumber),
+					new XElement(_vif + XMLNames.Component_Date,
+						XmlConvert.ToString(retarder.Date, XmlDateTimeSerializationMode.Utc)),
+					new XElement(_vif + XMLNames.Component_AppVersion, retarder.AppVersion),
+					new XElement(_vif + XMLNames.Vehicle_RetarderRatio, retarder.Ratio.ToXMLFormat(3))
+				));
+		}
+
+		#endregion
+	}
+}
\ No newline at end of file
-- 
GitLab