// Detailed Loss with Custom Frequency and Custom Vulnerability Sets
/// using System;
using System.Collections.Generic;
using AIR.InformationModel.ModelBuilder;
using AIR.Services.Common.Data;
using AIR.Services.LossAnalysis.Api;
using AIR.Services.LossAnalysis.Data;
class SnippetSubmitDetailedLossAnalysisWithCustomVulnerabilityRequest
{
private static void SubmitLossAnalysis(int businessUnitSid, int sqlInstanceSid, int projectSid, int exposureViewSid, int resultDsSid,
string eventSetStandardName, string analysisName, string currency, int currencyExchangeRateSid, Listlt;CustomVulnerabilitySetgt; customVulnerabilitySets)
{
LossAnalysisServiceClient lossClient = new LossAnalysisServiceClient();
SubmitDetailedLossAnalysisRequest request = new SubmitDetailedLossAnalysisRequest();
request.BusinessUnitSid = businessUnitSid;
request.SqlInstanceSid = sqlInstanceSid;
Listlt;DemandSurgeRegionOptiongt; demandSurgeRegions = new Listlt;DemandSurgeRegionOptiongt;();
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 3 });
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 4 });
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 8 });
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 10 });
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 11, UseCustom = true }); //if custom curve is to be used for a specific region set the UseCustom to true
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 12 });
request.AnalysisOptions = new DetailedLossAnalysisOptions()
{
Name = analysisName,
ProjectSid = projectSid,
Currency = currency,
CurrencyExchangeRateSid = currencyExchangeRateSid,
ExposureTarget = new AIR.Services.AnalysisCommon.Data.ExposureTarget()
{
Type = AIR.Services.AnalysisCommon.Data.ExposureTargetType.ExposureView,
Sid = exposureViewSid
},
EarthquakeOptions = new EarthquakeLossOptions()
{
IsInducedEventsEnabled = false
},
Perils = PerilSetCode.Earthquake | PerilSetCode.FireFollowingEarthquake,
PerilImpactFactors = new Listlt;PerilImpactFactorgt;() { new PerilImpactFactor() { Percentage = 10, PerilSetCode = AIR.Services.Common.Data.PerilSetCode.StormSurge, UserLineOfBusiness = "Commerical" } },
EnableDemandSurge = true,
DemandSurgeRegionOptions = demandSurgeRegions,
FacultativeReinsuranceOptions = AIR.Services.LossAnalysis.Data.FacultativeReinsuranceOptions.ApplyInSerialToTreaties,
ApplyDisaggregation = false,
AveragePropertyOptions = AIR.Services.LossAnalysis.Data.AveragePropertyOptions.Off,
IgnoreInvalidConstructionOccupancyCode = true,
EventSetStandardName = eventSetStandardName,
ResultDataSourceSid = resultDsSid,
Note: If you set the EventDetail to Layer and the FinancialPerspective to GrossPreLayer, you must set the GeographyDetail to None.
OutputOptions = new LossAnalysisOutputOptions()
{
EventDetail = AIR.Services.LossAnalysis.Data.EventDetail.Portfolio,
AverageAnnualLossSummary = AverageAnnualLossSummaryOption.Contract,
FinancialPerspectives = FinancialPerspectives.GroundUp | FinancialPerspectives.Retained |
FinancialPerspectives.NetPreCatastrophe | FinancialPerspectives.Gross,
GeographyDetail = GeographyDetail.SubArea,
ByModel = true,
ByPeril = true,
},
// ScheduledTime = DateTime.UtcNow.AddHours(2),
// Priority = JobPriority.High
IsApplyAIRAnalysis = true // AIR Analysis optional flag(on/off)
};
//Custom Vulnerability
if (customVulnerabilitySets?.Count > 0)
{
request.AnalysisOptions.IsSelectedVulnerabilitySet = true;
request.AnalysisOptions.LossVulnerabilitySetSIDs = new Listlt;intgt;();
request.AnalysisOptions.SelectedLossVulnerabilitySets = new Listlt;VulnerabilityModificationSetgt;();
foreach (var customVulnerabilitySet in customVulnerabilitySets)
{
request.AnalysisOptions.SelectedLossVulnerabilitySets.Add(
new VulnerabilityModificationSet()
{
ModelCode = customVulnerabilitySet.ModelCode,
VulnerabilitySetName = customVulnerabilitySet.VulnerabilitySetName,
VulnerabilitySetSid = customVulnerabilitySet.Sid
});
request.AnalysisOptions.LossVulnerabilitySetSIDs.Add(customVulnerabilitySet.Sid);
}
}
SubmitDetailedLossAnalysisResponse response = lossClient.SubmitDetailedLossAnalysis(request);
if (response.Status.Code == StatusCode.Success)
Console.WriteLine("Request successfully Submitted with Activity Sid: " + response.ActivitySid);
}
}
//Catastrophe only
using System;
using System.Collections.Generic;
using AIR.Services.Common.Data;
using AIR.Services.LossAnalysis.Api;
using AIR.Services.LossAnalysis.Data;
class SnippetSubmitDetailedLossAnalysisRequest
{
private static void SubmitLossAnalysis(int businessUnitSid, int sqlInstanceSid, int projectSid, int exposureViewSid, int resultDsSid,
string eventSetStandardName, string analysisName, string currency, int currencyExchangeRateSid)
{
LossAnalysisServiceClient lossClient = new LossAnalysisServiceClient();
SubmitDetailedLossAnalysisRequest request = new SubmitDetailedLossAnalysisRequest();
request.BusinessUnitSid = businessUnitSid;
request.SqlInstanceSid = sqlInstanceSid;
List<DemandSurgeRegionOption> demandSurgeRegions = new List<DemandSurgeRegionOption>();
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 3 });
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 4 });
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 8 });
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 10 });
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 11, UseCustom = true }); //if custom curve is to be used for a specific region set the UseCustom to true
demandSurgeRegions.Add(new DemandSurgeRegionOption() { RegionCode = 12 });
request.AnalysisOptions = new DetailedLossAnalysisOptions()
{
Name = analysisName,
ProjectSid = projectSid,
Currency = currency,
CurrencyExchangeRateSid = currencyExchangeRateSid,
ExposureTarget = new AIR.Services.AnalysisCommon.Data.ExposureTarget()
{
Type = AIR.Services.AnalysisCommon.Data.ExposureTargetType.ExposureView,
Sid = exposureViewSid
},
EarthquakeOptions = new EarthquakeLossOptions()
{
IsInducedEventsEnabled = false
},
Perils = PerilSetCode.Earthquake | PerilSetCode.FireFollowingEarthquake,
PerilImpactFactors = new List<PerilImpactFactor>() { new PerilImpactFactor() { Percentage = 10, PerilSetCode = AIR.Services.Common.Data.PerilSetCode.StormSurge, UserLineOfBusiness = "Commerical" } },
EnableDemandSurge = true,
DemandSurgeRegionOptions = demandSurgeRegions,
FacultativeReinsuranceOptions = AIR.Services.LossAnalysis.Data.FacultativeReinsuranceOptions.ApplyInSerialToTreaties,
ApplyDisaggregation = false,
AveragePropertyOptions = AIR.Services.LossAnalysis.Data.AveragePropertyOptions.Off,
IgnoreInvalidConstructionOccupancyCode = true,
EventSetStandardName = eventSetStandardName,
ResultDataSourceSid = resultDsSid,
//Note: If you set the EventDetail to Layer and the FinancialPerspective to GrossPreLayer, you must set the GeographyDetail to None.
OutputOptions = new LossAnalysisOutputOptions()
{
EventDetail = AIR.Services.LossAnalysis.Data.EventDetail.Portfolio,
AverageAnnualLossSummary = AverageAnnualLossSummaryOption.Contract,
FinancialPerspectives = FinancialPerspectives.GroundUp | FinancialPerspectives.Retained |
FinancialPerspectives.NetPreCatastrophe | FinancialPerspectives.Gross,
GeographyDetail = GeographyDetail.SubArea,
ByModel = true,
ByPeril = true,
},
//ScheduledTime = DateTime.UtcNow.AddHours(2),
//Priority = JobPriority.High
};
SubmitDetailedLossAnalysisResponse response = lossClient.SubmitDetailedLossAnalysis(request);
if (response.Status.Code == StatusCode.Success)
Console.WriteLine("Request successfully Submitted with Activity Sid: " + response.ActivitySid);
}
}