Example #1
0
        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;
        }
Example #2
0
        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;
        }
Example #3
0
        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;
            }
        }
Example #4
0
    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];
            }
        }
    }
Example #5
0
 private void ExpireScenario(ScenarioDetail detail)
 {
 }
Example #6
0
        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;
        }
Example #7
0
        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;
                }

            }
        }
Example #8
0
        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;
        }
Example #9
0
        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 };
 }
Example #11
0
        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();
        }