From ca0d91ecc3a1db57154f72864f8c16fc8a836731 Mon Sep 17 00:00:00 2001
From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at>
Date: Fri, 9 Jul 2021 12:04:59 +0200
Subject: [PATCH] Extended IsInputDataComplete to support Exempted Vehicles

---
 .../Common/AdditionalJobInfoViewModel.cs      | 12 +++----
 .../MultistageJobViewModel_v0_1.cs            |  4 +--
 Vecto3GUI2020Test/ViewModelTests/VIFTests.cs  | 18 ----------
 .../XMLDeclarationMultistageInputReader.cs    | 33 +++++++++++++++++++
 4 files changed, 41 insertions(+), 26 deletions(-)

diff --git a/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs
index bcf3b7a3d7..0722eb5f47 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs
@@ -57,12 +57,12 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Common
 			if (_parent.CanBeSimulated) {
 				return;
 			}
-
-			//if (_parent.ManufacturingStageViewModel.VehicleViewModel.VehicleDeclarationType ==
-			//	VehicleDeclarationType.interim) {
-			//	ErrorInfo = "Only Jobs with the declaration type \"final\" can be simulated";
-			//	return;
-			//}
+			
+			if(_parent.JobInputData?.ConsolidateManufacturingStage?.Vehicle?.VehicleDeclarationType !=
+				VehicleDeclarationType.final && !_parent.Exempted)
+			{
+				ErrorInfo = "Job is not declared as \"final\"";
+			}
 
 			
 			if (_parent.InvalidEntries != null && _parent.InvalidEntries.Count != 0) {
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
index 45016e49d3..0ba498ff4d 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
@@ -306,8 +306,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		{
 			get
 			{
-				return InputComplete && _inputData.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleDeclarationType ==
-					VehicleDeclarationType.final;
+				return (InputComplete && _inputData.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleDeclarationType ==
+					VehicleDeclarationType.final) || (InputComplete && Exempted);
 			}
 			set => throw new NotImplementedException();
 		}
diff --git a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs
index 0046df4f3b..3f7f27aaec 100644
--- a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs
@@ -153,24 +153,6 @@ namespace Vecto3GUI2020Test.ViewModelTests
 		}
 
 
-        [Test]
-		public void CreateVifWrongDecimal()
-		{
-			var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
-
-			//Set Necessary Fields
-			var vehicle =
-			multistagevm.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8;
-			
-
-			vehicle.ManufacturerAddress = "Address";
-			vehicle.Manufacturer = "Manufacturer";
-			vehicle.VIN = "VIN12345678";
-			vehicle.Model = "Model";
-
-			//vehicle.MultistageAuxiliariesViewModel.
-		}
-
 
 		[Test]
 		public void TestAirdragLoadAndSave()
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
index 8d25a42fe6..d93b4915ab 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
@@ -658,8 +658,41 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			return validAirdragEntries;
 		}
 
+		private bool IsInputDataCompleteExempted(VectoSimulationJobType jobType, bool fullCheck)
+		{
+			if (fullCheck)
+			{
+				//use Binary AND to execute all Statements and gather information about missing parameters.
+				return InputComplete(Model, nameof(Model))
+						& InputComplete(LegislativeClass, nameof(LegislativeClass))
+						& InputComplete(CurbMassChassis, nameof(CurbMassChassis))
+						& InputComplete(GrossVehicleMassRating, nameof(GrossVehicleMassRating))
+						& InputComplete(RegisteredClass, nameof(RegisteredClass))
+						& InputComplete(NumberPassengerSeatsLowerDeck, nameof(NumberPassengerSeatsLowerDeck))
+						& InputComplete(NumberPassengerSeatsUpperDeck, nameof(NumberPassengerSeatsUpperDeck))
+						& InputComplete(VehicleCode, nameof(VehicleCode))
+						& InputComplete(LowEntry, nameof(LowEntry))
+						& InputComplete(Height, nameof(Height));
+			}
+
+
+			return InputComplete(Model, nameof(Model))
+					&& InputComplete(LegislativeClass, nameof(LegislativeClass))
+					&& InputComplete(CurbMassChassis, nameof(CurbMassChassis))
+					&& InputComplete(GrossVehicleMassRating, nameof(GrossVehicleMassRating))
+					&& InputComplete(RegisteredClass, nameof(RegisteredClass))
+					&& InputComplete(NumberPassengerSeatsLowerDeck, nameof(NumberPassengerSeatsLowerDeck))
+					&& InputComplete(NumberPassengerSeatsUpperDeck, nameof(NumberPassengerSeatsUpperDeck))
+					&& InputComplete(VehicleCode, nameof(VehicleCode))
+					&& InputComplete(LowEntry, nameof(LowEntry)) && InputComplete(Height, nameof(Height));
+		}
+
+
 		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
 		{
+			if (ExemptedVehicle) {
+				return IsInputDataCompleteExempted(jobType, fullCheck);
+			}
 			GetADAS();
 			GetComponents();
 			if (fullCheck) {
-- 
GitLab