Пример #1
0
        internal static void AddConstituents(ScenarioGeneratorModel context)
        {
            DateTime now = context.AsOfDate;

            var curveDetail = context.CurveDetails.Where(x => x.Name == "SWAPSOIS").First();
            var curve = curveDetail.Curve;

            var riskFactorDimType = context.RiskFactorDimTypes.Include("RiskFactorDimensionDetails").Where(x => x.Name == "Tenor").First();
            var riskDimension = riskFactorDimType.RiskFactorDimensionDetails.First().RiskFactorDimension;

            var curveDimension = new CurveDimension() { RiskFactorDimension = riskDimension, StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-100), CreatedBy = "A", ApprovedAt = now.AddDays(-100), ApprovedBy = "B", Latest = true };

            curve.CurveDimensions.Add(curveDimension);

            RiskFactorDimItemDetail dimItemDetail = context.RiskFactorDimItemDetails.Where(x => x.Name == "1D").First();
            curveDimension.CurveConstituents.Add(new CurveConstituent() { CurveDimension = curveDimension, RiskFactorDimItem = dimItemDetail.RiskFactorDimItem, StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-100), CreatedBy = "A", ApprovedAt = now.AddDays(-100), ApprovedBy = "B", Latest = true });

            dimItemDetail = context.RiskFactorDimItemDetails.Where(x => x.Name == "2D").First();
            curveDimension.CurveConstituents.Add(new CurveConstituent() { CurveDimension = curveDimension, RiskFactorDimItem = dimItemDetail.RiskFactorDimItem, StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-100), CreatedBy = "A", ApprovedAt = now.AddDays(-100), ApprovedBy = "B", Latest = true });

            dimItemDetail = context.RiskFactorDimItemDetails.Where(x => x.Name == "3D").First();
            curveDimension.CurveConstituents.Add(new CurveConstituent() { CurveDimension = curveDimension, RiskFactorDimItem = dimItemDetail.RiskFactorDimItem, StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-100), CreatedBy = "A", ApprovedAt = now.AddDays(-100), ApprovedBy = "B", Latest = true });

            dimItemDetail = context.RiskFactorDimItemDetails.Where(x => x.Name == "4D").First();
            curveDimension.CurveConstituents.Add(new CurveConstituent() { CurveDimension = curveDimension, RiskFactorDimItem = dimItemDetail.RiskFactorDimItem, StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-100), CreatedBy = "A", ApprovedAt = now.AddDays(-100), ApprovedBy = "B", Latest = true });

            dimItemDetail = context.RiskFactorDimItemDetails.Where(x => x.Name == "5D").First();
            curveDimension.CurveConstituents.Add(new CurveConstituent() { CurveDimension = curveDimension, RiskFactorDimItem = dimItemDetail.RiskFactorDimItem, StartTime = now.AddDays(-100), EndTime = DateTime.MaxValue, CreatedAt = now.AddDays(-100), CreatedBy = "A", ApprovedAt = now.AddDays(-100), ApprovedBy = "B", Latest = true });

            context.SaveChanges();
        }
Пример #2
0
        public CurveConstituent AddRiskFactorDimItemDetail(RiskFactorDimItemDetail item, CurveDetail curve, RiskFactorDimension dimension)
        {
            var existingDim = curve.Curve.CurveDimensions.FirstOrDefault(x => x.RiskFactorDimensionID == dimension.RiskFactorDimensionID);
            CurveConstituent persisted = null;

            if (existingDim != null)
            {
                persisted = existingDim.CurveConstituents.Where(x => x.RiskFactorDimItemID == item.RiskFactorDimItemID
                                                              && x.CurveDimension.RiskFactorDimensionID == dimension.RiskFactorDimensionID
                                                              && x.CurveDimension.CurveID == curve.CurveID).FirstOrDefault();
            }

            if (persisted != null && Context.Entry(persisted).State == EntityState.Modified)
            {
                // remove any changes
                Context.Entry(persisted).State = EntityState.Unchanged;
                return persisted;
            }

            var detail = new CurveConstituent();
            detail.Default(Context.UserName);
            detail.CurveConstituentID = Context.CurveConstituents.Count() > 0 ? Context.CurveConstituents.Max(x => x.CurveConstituentID) + 1 : 1;
            var dim = curve.Curve.CurveDimensions.FirstOrDefault(x => x.RiskFactorDimensionID == dimension.RiskFactorDimensionID);
            if (dim == null)
            {
                var newDim = new CurveDimension();
                newDim.Approve(Context.UserName);
                newDim.CurveDimensionID = Context.CurveDimensions.Count() > 0 ? Context.CurveDimensions.Max(x => x.CurveDimensionID) + 1 : 1;
                newDim.Default(Context.UserName);
                newDim.RiskFactorDimensionID = dimension.RiskFactorDimensionID;
                detail.CurveDimension = newDim;
                newDim.Curve = curve.Curve;
                curve.Curve.CurveDimensions.Add(newDim);
                Context.CurveDimensions.Add(newDim);
            }
            else
            {
                detail.CurveDimension = dim;
            }

            detail.RiskFactorDimItem = item.RiskFactorDimItem;
            Context.CurveConstituents.Add(detail);

            return detail;
        }