public ScenarioDetail Add(int scenarioGroupID) { ScenarioDetail detail = new ScenarioDetail(); detail.Default(Context.UserName); var scenarioGroup = Context.ScenarioGroups.Find(scenarioGroupID); scenarioGroup.ScenarioDetails.Add(detail); detail.ScenarioGroup = scenarioGroup; detail.ScenarioGroupID = scenarioGroup.ScenarioGroupID; detail.Name = "Scenario Name"; return detail; }
public ScenarioUnit AddFirstUnit(ScenarioDetail scenarioDetail, IEnumerable<RiskFactorDimension> riskFactorDimensions) { ScenarioUnit unit = new ScenarioUnit(); unit.Default(Context.UserName); scenarioDetail.ScenarioUnits.Add(unit); unit.ScenarioDetail = scenarioDetail; ScenarioPoint point; for (int points=0; points < Math.Pow(2,riskFactorDimensions.Count()); points++) { point = AddPoint(scenarioDetail, riskFactorDimensions); ScenarioUnitPoint scenarioUnitPoint = new ScenarioUnitPoint(); scenarioUnitPoint.Default(Context.UserName); scenarioUnitPoint.ScenarioUnit = unit; scenarioUnitPoint.ScenarioPoint = point; unit.ScenarioUnitPoints.Add(scenarioUnitPoint); } if (scenarioDetail.Status == EntityStatus.Approved) scenarioDetail.Modified(Context.UserName); return unit; }
public async Task <ScenarioViewInputs> getScenarioViewDetails(int scenarioid, string currentModel) { ScenarioViewInputs inputs = null; try { ScenarioDetail scenario = new ScenarioDetail(); scenario = await _dbContext.ScenarioDetails.Where(x => x.ScenarioId == scenarioid && x.IsActive == true).FirstOrDefaultAsync(); if (scenario != null) { inputs = new ScenarioViewInputs(); inputs.ScenarioName = scenario.ScenarioName; inputs.BaseScenarioId = (int)scenario.BaseScenarioId; inputs.ScenarioRemarks = scenario.Comments; inputs.IsEnergyBalance = scenario.IsEnergyBalanceIncluded; inputs.scenarioMode = scenario.ScenarioMode; string baseSecnarioName = ""; baseSecnarioName = _dbContext.ScenarioDetails.Where(x => x.ScenarioId == scenario.BaseScenarioId && x.IsActive == true).Select(x => x.ScenarioName).FirstOrDefault(); inputs.BaseScenarioName = baseSecnarioName; List <ScenarioBases> scenarioBase = _dbContext.ScenarioDetails.Where(x => x.IsActive == true).AsEnumerable().Select((w, i) => new ScenarioBases { ScenarioId = w.ScenarioId, ScenarioName = w.ScenarioName }).ToList(); inputs.scenarioBase = scenarioBase; List <ScenarioModels> scenarioModels = _dbContext.ModelDetails.AsEnumerable().Select((w, i) => new ScenarioModels { ModelId = w.ModelId, ModelCode = w.ModelCode, ModelName = w.ModelName }).ToList(); inputs.scenarioModels = scenarioModels; List <CommonHeader> scenarioSelectedModels = null; scenarioSelectedModels = _dbContext.Database.SqlQuery <CommonHeader>("[E2MAS].[API_GetModelStatus] @SCENARIOID,@MODELCODE", new SqlParameter { ParameterName = "@SCENARIOID", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = scenarioid }, new SqlParameter { ParameterName = "@MODELCODE", SqlDbType = SqlDbType.Char, Direction = ParameterDirection.Input, Value = currentModel }).ToList(); inputs.scenarioSelectedModels = scenarioSelectedModels; List <ScenarioCountries> scenarioCountries = await _dbContext.Database.SqlQuery <ScenarioCountries>("[E2MAS].[API_GetCountryList]").ToListAsync(); inputs.scenarioCountries = scenarioCountries; List <CommonInputCountries> scenarioSelectedcountries = _dbContext.Database.SqlQuery <CommonInputCountries>("[E2MAS].[API_GetScenarioCountries] @SCENARIOID", new SqlParameter { ParameterName = "@SCENARIOID", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = scenarioid }).ToList(); inputs.scenarioSelectedcountries = scenarioSelectedcountries; CommonInputYears years = _dbContext.Database.SqlQuery <CommonInputYears>("[E2MAS].[API_GetScenarioInputDetails] @SCENARIOID", new SqlParameter { ParameterName = "@SCENARIOID", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = scenarioid }).FirstOrDefault(); inputs.InputYears = years; } return(inputs); } catch (Exception ex) { throw ex; } }
void OnIntensityChanged(int intensityLevel, ScenarioDetail detail) { ClearParameters(); foreach (var parameter in detail.Parameters) { if (parameter is BoolParameter) { var boolParameter = parameter as BoolParameter; var p = Instantiate(BoolParameterPrefab); string parameterName = parameter.Name; p.GetComponentInChildren <Text>().text = parameter.DisplayName; p.transform.SetParent(parametersPanel); var toggle = p.GetComponentInChildren <Toggle>(); toggle.onValueChanged.AddListener( delegate(bool value) { boolParameters[parameterName] = value; } ); toggle.isOn = boolParameter.IntensityDefault[intensityLevel]; boolParameters[parameterName] = boolParameter.IntensityDefault[intensityLevel]; } else if (parameter is IntParameter) { var intParameter = parameter as IntParameter; var p = Instantiate(IntParameterPrefab); string parameterName = parameter.Name; p.GetComponentInChildren <Text>().text = parameter.DisplayName; p.transform.SetParent(parametersPanel); var slider = p.GetComponentInChildren <Slider>(); slider.minValue = intParameter.Min; slider.maxValue = intParameter.Max; slider.onValueChanged.AddListener( delegate(float value) { intParameters[parameterName] = (int)value; } ); slider.value = intParameter.IntensityDefault[intensityLevel]; intParameters[parameterName] = intParameter.IntensityDefault[intensityLevel]; } else if (parameter is FloatParameter) { var floatParameter = parameter as FloatParameter; var p = Instantiate(FloatParameterPrefab); string parameterName = parameter.Name; p.GetComponentInChildren <Text>().text = parameter.DisplayName; p.transform.SetParent(parametersPanel); var slider = p.GetComponentInChildren <Slider>(); slider.minValue = floatParameter.Min; slider.maxValue = floatParameter.Max; slider.onValueChanged.AddListener( delegate(float value) { floatParameters[parameterName] = value; } ); slider.value = floatParameter.IntensityDefault[intensityLevel]; floatParameters[parameterName] = floatParameter.IntensityDefault[intensityLevel]; } else if (parameter is ChoiceParameter) { var choiceParameter = parameter as ChoiceParameter; var p = Instantiate(StringParameterPrefab); string parameterName = parameter.Name; p.GetComponentInChildren <Text>().text = parameter.DisplayName; p.transform.SetParent(parametersPanel); var dropdown = p.GetComponentInChildren <Dropdown>(); dropdown.ClearOptions(); dropdown.AddOptions(choiceParameter.Values); dropdown.onValueChanged.AddListener( delegate(int value) { choiceParameters[parameterName] = new Choice() { Text = dropdown.options[value].text, Index = value }; } ); choiceParameters[parameterName] = new Choice() { Text = dropdown.options[choiceParameter.IntensityDefault[intensityLevel]].text, Index = choiceParameter.IntensityDefault[intensityLevel] }; dropdown.value = choiceParameter.IntensityDefault[intensityLevel]; } } }
private void ExpireScenario(ScenarioDetail detail) { }
private ScenarioPoint AddPoint(ScenarioDetail scenarioDetail, IEnumerable<RiskFactorDimension> riskFactorDimensions) { ScenarioPoint scenarioPoint = new ScenarioPoint(); scenarioPoint.Default(Context.UserName); scenarioDetail.ScenarioPoints.Add(scenarioPoint); foreach (RiskFactorDimension dimension in riskFactorDimensions) { ScenarioPointCoordinate coordinate = new ScenarioPointCoordinate(); coordinate.Default(Context.UserName); scenarioPoint.ScenarioPointCoordinates.Add(coordinate); coordinate.ScenarioPoint = scenarioPoint; coordinate.RiskFactorDimension = dimension; } return scenarioPoint; }
protected override void BeforeSave() { DateTime timestamp = DateTime.UtcNow; //find all changed enities var modifiedEntities = Context.ChangeTracker.Entries<ScenarioDetail>() .Where(p => p.State == EntityState.Modified) .Select(p => p.Entity); foreach (ScenarioDetail detail in modifiedEntities) { //main entity, for which we keep versioning Scenario mainEntity = detail.Scenario; ICollection<ScenarioDetail> mainEntityDetails = mainEntity.ScenarioDetails; if (detail.Status == EntityStatus.ExpiredInSession) { foreach (ScenarioDetail item in mainEntityDetails) { if (detail.ScenarioDetailID != item.ScenarioDetailID) { item.EndTime = detail.EndTime; item.ModifiedBy = detail.ModifiedBy; item.ModifiedAt = detail.ModifiedAt; } } mainEntity.EndTime = detail.EndTime; mainEntity.ModifiedBy = detail.ModifiedBy; mainEntity.ModifiedAt = detail.ModifiedAt; } if (detail.Status == EntityStatus.ApprovedInSession) { //entity has been approved //mark existing details as expired foreach (ScenarioDetail item in mainEntityDetails) { if (detail.ScenarioDetailID != item.ScenarioDetailID) { item.Latest = false; item.EndTime = detail.ApprovedAt.Value; detail.StartTime = detail.ApprovedAt.Value; } } //check if main entity is approved - if not copy details if (mainEntity.Status != EntityStatus.Approved) { mainEntity.ApprovedAt = detail.ApprovedAt; mainEntity.ApprovedBy = detail.ApprovedBy; mainEntity.StartTime = detail.StartTime; } } else if (detail.Status == EntityStatus.UnapprovedInSession) { //new version of the entity //we are creating a copy of currently edited entity //and add it back to context ScenarioDetail copy = new ScenarioDetail(); mainEntity.ScenarioDetails.Add(copy); //copy values from original Context.Entry(copy).CurrentValues.SetValues(detail); //reset auditing copy.ResetCopy(); //revert the changes - done implicitly Context.Entry(detail).State = EntityState.Unchanged; //remove latest flag detail.Latest = false; } } }
public Scenario DeepCopy(Scenario scenario, string scenarioName = "") { Scenario copyScenario = new Scenario(); Context.Scenarios.Add(copyScenario); //copy values from original and reset audit Context.Entry(copyScenario).CurrentValues.SetValues(scenario); copyScenario.Default(Context.UserName); ScenarioDetail copyDetail = new ScenarioDetail(); Context.ScenarioDetails.Add(copyDetail); Context.Entry(copyDetail).CurrentValues.SetValues(scenario.ScenarioDetail); copyDetail.Default(Context.UserName); copyDetail.Name = scenarioName; copyScenario.ScenarioDetails.Add(copyDetail); //copy locuses foreach (ScenarioLocus locus in scenario.ScenarioDetail.ScenarioLocuses.ToList()) { ScenarioLocus copyLocus = new ScenarioLocus(); Context.ScenarioLocuses.Add(copyLocus); Context.Entry(copyLocus).CurrentValues.SetValues(locus); copyLocus.Default(Context.UserName); copyDetail.ScenarioLocuses.Add(copyLocus); //copy locus dim items foreach (ScenarioLocusDimItem dimItem in locus.ScenarioLocusDimItems.ToList()) { ScenarioLocusDimItem copyDimItem = new ScenarioLocusDimItem(); Context.ScenarioLocusDimItems.Add(copyDimItem); Context.Entry(copyDimItem).CurrentValues.SetValues(dimItem); copyDimItem.Default(Context.UserName); copyLocus.ScenarioLocusDimItems.Add(copyDimItem); } //copy locus dim groups foreach (ScenarioLocusDimGroup dimGroup in locus.ScenarioLocusDimGroups.ToList()) { ScenarioLocusDimGroup copyDimGroup = new ScenarioLocusDimGroup(); Context.ScenarioLocusDimGroups.Add(copyDimGroup); Context.Entry(copyDimGroup).CurrentValues.SetValues(dimGroup); copyDimGroup.Default(Context.UserName); copyLocus.ScenarioLocusDimGroups.Add(copyDimGroup); } } //copy points foreach (ScenarioPoint point in scenario.ScenarioDetail.ScenarioPoints.ToList()) { ScenarioPoint copyPoint = new ScenarioPoint(); Context.ScenarioPoints.Add(copyPoint); Context.Entry(copyPoint).CurrentValues.SetValues(point); copyPoint.Default(Context.UserName); copyDetail.ScenarioPoints.Add(copyPoint); //copy coordinates foreach (ScenarioPointCoordinate coordinate in point.ScenarioPointCoordinates.ToList()) { ScenarioPointCoordinate copyCoordinate = new ScenarioPointCoordinate(); Context.ScenarioPointCoordinates.Add(copyCoordinate); Context.Entry(copyCoordinate).CurrentValues.SetValues(coordinate); copyCoordinate.Default(Context.UserName); copyPoint.ScenarioPointCoordinates.Add(copyCoordinate); } } //copy untis foreach (ScenarioUnit unit in scenario.ScenarioDetail.ScenarioUnits.ToList()) { ScenarioUnit copyUnit = new ScenarioUnit(); Context.ScenarioUnits.Add(copyUnit); Context.Entry(copyUnit).CurrentValues.SetValues(unit); copyUnit.Default(Context.UserName); copyDetail.ScenarioUnits.Add(copyUnit); //copy coordinates foreach (ScenarioUnitPoint unitPoint in unit.ScenarioUnitPoints.ToList()) { ScenarioUnitPoint copyUnitPoint = new ScenarioUnitPoint(); Context.ScenarioUnitPoints.Add(copyUnitPoint); Context.Entry(copyUnitPoint).CurrentValues.SetValues(unitPoint); copyUnitPoint.Default(Context.UserName); copyUnit.ScenarioUnitPoints.Add(copyUnitPoint); } } return copyScenario; }
public ScenarioLocus AddLocus(ScenarioDetail scenarioDetail) { ScenarioLocus locus = new ScenarioLocus(); locus.Default(Context.UserName); if (Context.ScenarioLocuses.Count() > 0) locus.ScenarioLocusID = Context.ScenarioLocuses.Max(x => x.ScenarioLocusID) + 1; else locus.ScenarioLocusID = 1; scenarioDetail.ScenarioLocuses.Add(locus); if (scenarioDetail.Status == EntityStatus.Approved) scenarioDetail.Modified(Context.UserName); return locus; }
public ScenarioModel GetScenarioModel(ScenarioDetail detail) { return new ScenarioModel() { Name = detail.Name, ParentID = detail.ScenarioGroupID, ID = detail.ScenarioID * -1, IsScenario = true }; }
internal static void AddScenarios(ScenarioGeneratorModel context) { DateTime now = context.AsOfDate; ScenarioGroup sg1 = context.ScenarioGroupDetails.Where(x => x.Name == "Cyprus Contagion").First().ScenarioGroup; ScenarioGroup sg2 = context.ScenarioGroupDetails.Where(x => x.Name == "Double Dip Recession").First().ScenarioGroup; ScenarioGroup sg3 = context.ScenarioGroupDetails.Where(x => x.Name == "Eurozone Crisis").First().ScenarioGroup; RiskFactorType rft1 = context.RiskFactorTypeDetails.Where(x => x.Name == "IR Volatility").First().RiskFactorType; RiskFactorType rft2 = context.RiskFactorTypeDetails.Where(x => x.Name == "FX Rate").First().RiskFactorType; RiskFactorType rft3 = context.RiskFactorTypeDetails.Where(x => x.Name == "FX Volatility").First().RiskFactorType; ScenarioDetail scd; Scenario sc = new Scenario() { StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now, CreatedBy = "A", ApprovedAt = now.AddDays(-100), ApprovedBy = "B" }; context.Scenarios.Add(sc); scd = new ScenarioDetail() { Name = "Scenario IR Rate (v1)", StartTime = now.AddDays(-80), EndTime = now.AddDays(-50), CreatedAt = now.AddDays(-120), CreatedBy = "A", ApprovedAt = now.AddDays(-80), ApprovedBy = "B", ModifiedAt = now.AddDays(-110), ModifiedBy = "C", ScenarioGroup = sg1, RiskFactorType = rft2, Latest = false }; sc.ScenarioDetails.Add(scd); scd = new ScenarioDetail() { Name = "Scenario IR Rate (v2)", StartTime = now.AddDays(-50), EndTime = now.AddDays(-20), CreatedAt = now.AddDays(-75), CreatedBy = "A", ApprovedAt = now.AddDays(-50), ApprovedBy = "B", ModifiedAt = now.AddDays(-60), ModifiedBy = "C", ScenarioGroup = sg1, RiskFactorType = rft2, Latest = false }; sc.ScenarioDetails.Add(scd); scd = new ScenarioDetail() { Name = "Scenario IR Rate (v3)", StartTime = now.AddDays(-20), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-30), CreatedBy = "A", ApprovedAt = now.AddDays(-20), ApprovedBy = "B", ModifiedAt = now.AddDays(-35), ModifiedBy = "C", ScenarioGroup = sg1, RiskFactorType = rft2, Latest = false }; sc.ScenarioDetails.Add(scd); scd = new ScenarioDetail() { Name = "Scenario IR Rate", StartTime = DateTime.MinValue, EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-10), CreatedBy = "A", ModifiedAt = now.AddDays(-5), ModifiedBy = "C", ScenarioGroup = sg1, RiskFactorType = rft2, Latest = true }; sc.ScenarioDetails.Add(scd); Scenario sc2 = new Scenario() { StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now, CreatedBy = "A", ApprovedAt = now.AddDays(-50), ApprovedBy = "B", BaseScenario = sc }; context.Scenarios.Add(sc2); scd = new ScenarioDetail() { Name = "Scenario IR Volatility (v1)", StartTime = now.AddDays(-50), EndTime = now.AddDays(-25), CreatedAt = now.AddDays(-30), CreatedBy = "A", ApprovedAt = now.AddDays(-50), ApprovedBy = "B", ModifiedAt = now.AddDays(-550), ModifiedBy = "C", ScenarioGroup = sg2, RiskFactorType = rft1, Latest = false }; sc2.ScenarioDetails.Add(scd); scd = new ScenarioDetail() { Name = "Scenario IR Volatility (v2)", StartTime = now.AddDays(-25), EndTime = now.AddDays(-10), CreatedAt = now.AddDays(-38), CreatedBy = "A", ApprovedAt = now.AddDays(-25), ApprovedBy = "B", ModifiedAt = now.AddDays(-30), ModifiedBy = "C", ScenarioGroup = sg2, RiskFactorType = rft1, Latest = false }; sc2.ScenarioDetails.Add(scd); scd = new ScenarioDetail() { Name = "Scenario IR Volatility (v3)", StartTime = now.AddDays(-10), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-15), CreatedBy = "A", ApprovedAt = now.AddDays(-10), ApprovedBy = "B", ModifiedAt = now.AddDays(-17), ModifiedBy = "C", ScenarioGroup = sg2, RiskFactorType = rft1, Latest = false }; sc2.ScenarioDetails.Add(scd); scd = new ScenarioDetail() { Name = "Scenario IR Volatility", StartTime = DateTime.MinValue, EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-5), CreatedBy = "A", ModifiedAt = now.AddDays(-3), ModifiedBy = "C", ScenarioGroup = sg3, RiskFactorType = rft1, Latest = true }; sc2.ScenarioDetails.Add(scd); Scenario sc3 = new Scenario() { StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-80), CreatedBy = "A", ApprovedAt = now.AddDays(-50), ApprovedBy = "B"}; context.Scenarios.Add(sc3); scd = new ScenarioDetail() { Name = "IR Bond Swap Spread", StartTime = now.AddDays(-50), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-80), CreatedBy = "A", ApprovedAt = now.AddDays(-50), ApprovedBy = "B", ScenarioGroup = sg3, RiskFactorType = rft1, Latest = true }; sc3.ScenarioDetails.Add(scd); scd.Scenario = sc3; Scenario sc4 = new Scenario() { StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-80), CreatedBy = "A", ApprovedAt = now.AddDays(-50), ApprovedBy = "B" }; context.Scenarios.Add(sc4); scd = new ScenarioDetail() { Name = "FX Volatility", StartTime = now.AddDays(-50), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-80), CreatedBy = "A", ApprovedAt = now.AddDays(-50), ApprovedBy = "B", ScenarioGroup = sg3, RiskFactorType = rft3, Latest = true }; sc4.ScenarioDetails.Add(scd); scd.Scenario = sc4; context.SaveChanges(); }