private void Process_Business_Case_Model()

in src/Assessment/Processor/ProcessDatasets.cs [2214:2388]


        private void Process_Business_Case_Model(
            Business_Case Business_Case_Data,
            List<SQL_MI_PaaS> SQL_MI_PaaS_List,
            List<SQL_IaaS_Instance_Rehost_Perf> SQL_IaaS_Instance_Rehost_Perf_List, 
            List<SQL_IaaS_Server_Rehost_Perf> SQL_IaaS_Server_Rehost_Perf_List,
            List<WebApp_PaaS> WebApp_PaaS_List,
            List<WebApp_IaaS_Server_Rehost_Perf>WebApp_IaaS_Server_Rehost_Perf_List,
            List<VM_IaaS_Server_Rehost_Perf> VM_IaaS_Server_Rehost_Perf_List
            )
        {
            UserInputObj.LoggerObj.LogInformation("Creating excel model for Business_Case");

            Business_Case_Data.OnPremisesIaaSCost.ComputeLicenseCost =
                BusinessCaseData.OnPremIaaSCostDetails.ComputeLicenseCost - BusinessCaseData.OnPremIaaSCostDetails.EsuLicenseCost;
            Business_Case_Data.OnPremisesIaaSCost.EsuLicenseCost = BusinessCaseData.OnPremIaaSCostDetails.EsuLicenseCost;
            Business_Case_Data.OnPremisesIaaSCost.StorageCost = BusinessCaseData.OnPremIaaSCostDetails.StorageCost;
            Business_Case_Data.OnPremisesIaaSCost.NetworkCost = BusinessCaseData.OnPremIaaSCostDetails.NetworkCost;
            Business_Case_Data.OnPremisesIaaSCost.SecurityCost = BusinessCaseData.OnPremIaaSCostDetails.SecurityCost;
            Business_Case_Data.OnPremisesIaaSCost.ITStaffCost = BusinessCaseData.OnPremIaaSCostDetails.ITStaffCost;
            Business_Case_Data.OnPremisesIaaSCost.FacilitiesCost = BusinessCaseData.OnPremIaaSCostDetails.FacilitiesCost;

            Business_Case_Data.OnPremisesPaaSCost.ComputeLicenseCost = 
                BusinessCaseData.OnPremPaaSCostDetails.ComputeLicenseCost - BusinessCaseData.OnPremPaaSCostDetails.EsuLicenseCost;
            Business_Case_Data.OnPremisesPaaSCost.EsuLicenseCost = BusinessCaseData.OnPremPaaSCostDetails.EsuLicenseCost;
            Business_Case_Data.OnPremisesPaaSCost.StorageCost = BusinessCaseData.OnPremPaaSCostDetails.StorageCost;
            Business_Case_Data.OnPremisesPaaSCost.NetworkCost = BusinessCaseData.OnPremPaaSCostDetails.NetworkCost;
            Business_Case_Data.OnPremisesPaaSCost.SecurityCost = BusinessCaseData.OnPremPaaSCostDetails.SecurityCost;
            Business_Case_Data.OnPremisesPaaSCost.ITStaffCost = BusinessCaseData.OnPremPaaSCostDetails.ITStaffCost;
            Business_Case_Data.OnPremisesPaaSCost.FacilitiesCost = BusinessCaseData.OnPremPaaSCostDetails.FacilitiesCost;

            Business_Case_Data.OnPremisesAvsCost.ComputeLicenseCost = 
                BusinessCaseData.OnPremAvsCostDetails.ComputeLicenseCost - BusinessCaseData.OnPremAvsCostDetails.EsuLicenseCost;
            Business_Case_Data.OnPremisesAvsCost.EsuLicenseCost = BusinessCaseData.OnPremAvsCostDetails.EsuLicenseCost;
            Business_Case_Data.OnPremisesAvsCost.StorageCost = BusinessCaseData.OnPremAvsCostDetails.StorageCost;
            Business_Case_Data.OnPremisesAvsCost.NetworkCost = BusinessCaseData.OnPremAvsCostDetails.NetworkCost;
            Business_Case_Data.OnPremisesAvsCost.SecurityCost = BusinessCaseData.OnPremAvsCostDetails.SecurityCost;
            Business_Case_Data.OnPremisesAvsCost.ITStaffCost = BusinessCaseData.OnPremAvsCostDetails.ITStaffCost;
            Business_Case_Data.OnPremisesAvsCost.FacilitiesCost = BusinessCaseData.OnPremAvsCostDetails.FacilitiesCost;

            Business_Case_Data.TotalOnPremisesCost.ComputeLicenseCost =
                Business_Case_Data.OnPremisesIaaSCost.ComputeLicenseCost +
                Business_Case_Data.OnPremisesPaaSCost.ComputeLicenseCost +
                Business_Case_Data.OnPremisesAvsCost.ComputeLicenseCost;

            Business_Case_Data.TotalOnPremisesCost.EsuLicenseCost =
                Business_Case_Data.OnPremisesIaaSCost.EsuLicenseCost +
                Business_Case_Data.OnPremisesPaaSCost.EsuLicenseCost +
                Business_Case_Data.OnPremisesAvsCost.EsuLicenseCost;

            Business_Case_Data.TotalOnPremisesCost.StorageCost =
                Business_Case_Data.OnPremisesIaaSCost.StorageCost +
                Business_Case_Data.OnPremisesPaaSCost.StorageCost +
                Business_Case_Data.OnPremisesAvsCost.StorageCost;

            Business_Case_Data.TotalOnPremisesCost.NetworkCost =
                Business_Case_Data.OnPremisesIaaSCost.NetworkCost +
                Business_Case_Data.OnPremisesPaaSCost.NetworkCost +
                Business_Case_Data.OnPremisesAvsCost.NetworkCost;

            Business_Case_Data.TotalOnPremisesCost.SecurityCost =
                Business_Case_Data.OnPremisesIaaSCost.SecurityCost +
                Business_Case_Data.OnPremisesPaaSCost.SecurityCost +
                Business_Case_Data.OnPremisesAvsCost.SecurityCost;

            Business_Case_Data.TotalOnPremisesCost.ITStaffCost =
                Business_Case_Data.OnPremisesIaaSCost.ITStaffCost +
                Business_Case_Data.OnPremisesPaaSCost.ITStaffCost +
                Business_Case_Data.OnPremisesAvsCost.ITStaffCost;

            Business_Case_Data.TotalOnPremisesCost.FacilitiesCost =
                Business_Case_Data.OnPremisesIaaSCost.FacilitiesCost +
                Business_Case_Data.OnPremisesPaaSCost.FacilitiesCost +
                Business_Case_Data.OnPremisesAvsCost.FacilitiesCost;


            if (!AzureIaaSCalculator.IsCalculationComplete())
            {
                AzureIaaSCalculator.SetParameters(
                    SQL_IaaS_Instance_Rehost_Perf_List,
                    SQL_IaaS_Server_Rehost_Perf_List,
                    WebApp_IaaS_Server_Rehost_Perf_List,
                    VM_IaaS_Server_Rehost_Perf_List
                    );
                AzureIaaSCalculator.Calculate();
            }

            Business_Case_Data.AzureIaaSCost.ComputeLicenseCost = AzureIaaSCalculator.GetTotalComputeCost() * 12.0;
            Business_Case_Data.AzureIaaSCost.EsuLicenseCost = 0;
            Business_Case_Data.AzureIaaSCost.StorageCost = AzureIaaSCalculator.GetTotalStorageCost() * 12.0;
            Business_Case_Data.AzureIaaSCost.NetworkCost =
                 0.05 * (Business_Case_Data.AzureIaaSCost.ComputeLicenseCost + Business_Case_Data.AzureIaaSCost.StorageCost);
            Business_Case_Data.AzureIaaSCost.SecurityCost = AzureIaaSCalculator.GetTotalSecurityCost() * 12.0;
            Business_Case_Data.AzureIaaSCost.ITStaffCost = BusinessCaseData.AzureIaaSCostDetails.ITStaffCost;
            Business_Case_Data.AzureIaaSCost.FacilitiesCost = BusinessCaseData.AzureIaaSCostDetails.FacilitiesCost;

            if (!AzurePaaSCalculator.IsCalculationComplete())
            {
                AzurePaaSCalculator.SetParameters(SQL_MI_PaaS_List, WebApp_PaaS_List);
                AzurePaaSCalculator.Calculate();
            }

            Business_Case_Data.AzurePaaSCost.ComputeLicenseCost = AzurePaaSCalculator.GetTotalComputeCost() * 12.0;
            Business_Case_Data.AzurePaaSCost.EsuLicenseCost = 0;
            Business_Case_Data.AzurePaaSCost.StorageCost = AzurePaaSCalculator.GetTotalStorageCost() * 12.0;
            Business_Case_Data.AzurePaaSCost.NetworkCost = 
                0.05 * (Business_Case_Data.AzurePaaSCost.ComputeLicenseCost + Business_Case_Data.AzurePaaSCost.StorageCost);
            Business_Case_Data.AzurePaaSCost.SecurityCost = AzurePaaSCalculator.GetTotalSecurityCost() * 12.0;
            Business_Case_Data.AzurePaaSCost.ITStaffCost = BusinessCaseData.AzurePaaSCostDetails.ITStaffCost;
            Business_Case_Data.AzurePaaSCost.FacilitiesCost = BusinessCaseData.AzurePaaSCostDetails.FacilitiesCost;

            if (UserInputObj.BusinessProposal == BusinessProposal.AVS.ToString() && !AzureAvsCalculator.IsCalculationComplete())
            {
                AzureAvsCalculator.SetParameters(AVSAssessmentsData);
                AzureAvsCalculator.Calculate();
            }

            Business_Case_Data.AzureAvsCost.ComputeLicenseCost = AzureAvsCalculator.GetTotalAvsComputeCost() * 12.0;
            Business_Case_Data.AzureAvsCost.EsuLicenseCost = BusinessCaseData.AzureAvsCostDetails.EsuLicenseCost;
            Business_Case_Data.AzureAvsCost.StorageCost = BusinessCaseData.AzureAvsCostDetails.StorageCost;
            Business_Case_Data.AzureAvsCost.NetworkCost = 
                BusinessCaseData.AzureAvsCostDetails.NetworkCost + 
                0.05 * (Business_Case_Data.AzureAvsCost.ComputeLicenseCost - BusinessCaseData.AzureAvsCostDetails.ComputeLicenseCost);
            Business_Case_Data.AzureAvsCost.ITStaffCost = BusinessCaseData.AzureAvsCostDetails.ITStaffCost;
            Business_Case_Data.AzureAvsCost.SecurityCost = BusinessCaseData.AzureAvsCostDetails.SecurityCost;
            Business_Case_Data.AzureAvsCost.FacilitiesCost = BusinessCaseData.AzureAvsCostDetails.FacilitiesCost;

            if (UserInputObj.BusinessProposal == BusinessProposal.AVS.ToString() && UserInputObj.WorkflowObj.IsExpressWorkflow)
            {
                Business_Case_Data.AzureAvsCost.ComputeLicenseCost = BusinessCaseData.AzureAvsCostDetails.ComputeLicenseCost -
                    BusinessCaseData.AzureAvsCostDetails.EsuLicenseCost;

                Business_Case_Data.AzureAvsCost.NetworkCost = BusinessCaseData.AzureAvsCostDetails.NetworkCost;
            }

            Business_Case_Data.TotalAzureCost.ComputeLicenseCost =
                Business_Case_Data.AzureIaaSCost.ComputeLicenseCost +
                Business_Case_Data.AzurePaaSCost.ComputeLicenseCost +
                Business_Case_Data.AzureAvsCost.ComputeLicenseCost;

            Business_Case_Data.TotalAzureCost.EsuLicenseCost =
                Business_Case_Data.AzureIaaSCost.EsuLicenseCost +
                Business_Case_Data.AzurePaaSCost.EsuLicenseCost +
                Business_Case_Data.AzureAvsCost.EsuLicenseCost;

            Business_Case_Data.TotalAzureCost.StorageCost =
                Business_Case_Data.AzureIaaSCost.StorageCost +
                Business_Case_Data.AzurePaaSCost.StorageCost +
                Business_Case_Data.AzureAvsCost.StorageCost;

            Business_Case_Data.TotalAzureCost.NetworkCost =
                Business_Case_Data.AzureIaaSCost.NetworkCost +
                Business_Case_Data.AzurePaaSCost.NetworkCost +
                Business_Case_Data.AzureAvsCost.NetworkCost;

            Business_Case_Data.TotalAzureCost.ITStaffCost =
                Business_Case_Data.AzureIaaSCost.ITStaffCost +
                Business_Case_Data.AzurePaaSCost.ITStaffCost +
                Business_Case_Data.AzureAvsCost.ITStaffCost;

            Business_Case_Data.TotalAzureCost.SecurityCost =
                Business_Case_Data.AzureIaaSCost.SecurityCost +
                Business_Case_Data.AzurePaaSCost.SecurityCost +
                Business_Case_Data.AzureAvsCost.SecurityCost;

            Business_Case_Data.TotalAzureCost.FacilitiesCost =
                Business_Case_Data.AzureIaaSCost.FacilitiesCost +
                Business_Case_Data.AzurePaaSCost.FacilitiesCost +
                Business_Case_Data.AzureAvsCost.FacilitiesCost;

            Business_Case_Data.WindowsServerLicense.ComputeLicenseCost = BusinessCaseData.WindowsServerLicense.ComputeLicenseCost;
            Business_Case_Data.SqlServerLicense.ComputeLicenseCost = BusinessCaseData.SqlServerLicense.ComputeLicenseCost;
            Business_Case_Data.EsuSavings.ComputeLicenseCost = BusinessCaseData.EsuSavings.ComputeLicenseCost;

            UserInputObj.LoggerObj.LogInformation("Updated Business_Case excel model");
        }