public DataTable RatingModelTable(string tableName, string inputOutputParameters, string ratingModelLabel, string locationIdentifier) { DataTable ratingModelTable = new DataTable(tableName); ratingModelTable.Columns.Add("Identifier", typeof(string)); ratingModelTable.Columns.Add("InputParameter", typeof(string)); ratingModelTable.Columns.Add("InputUnitId", typeof(string)); ratingModelTable.Columns.Add("InputUnitSymbol", typeof(string)); ratingModelTable.Columns.Add("InputParameterRoundingSpec", typeof(string)); ratingModelTable.Columns.Add("OutputParameter", typeof(string)); ratingModelTable.Columns.Add("OutputUnitId", typeof(string)); ratingModelTable.Columns.Add("OutputUnitSymbol", typeof(string)); ratingModelTable.Columns.Add("OutputParameterRoundingSpec", typeof(string)); ratingModelTable.Columns.Add("Description", typeof(string)); ratingModelTable.Columns.Add("Comment", typeof(string)); ratingModelTable.Columns.Add("TimeRange", typeof(string)); ratingModelTable.Columns.Add("RatingModelInfo", typeof(string)); ratingModelTable.Columns.Add("RatingModelDescriptionObject", typeof(object)); string ratingModelIdentifier = string.Format("{0}.{1}@{2}", inputOutputParameters, ratingModelLabel, locationIdentifier); DataRow ratingModelRow = ratingModelTable.NewRow(); ratingModelRow["Identifier"] = ratingModelIdentifier; ratingModelTable.Rows.Add(ratingModelRow); RatingModelDescription ratingModelDescription = _Common.GetRatingModelDescription(ratingModelIdentifier, locationIdentifier); ratingModelRow["RatingModelDescriptionObject"] = ratingModelDescription; string locationName = _Common.GetLocationDescriptionByIdentifier(locationIdentifier).Name; if (ratingModelDescription == null) { if (string.IsNullOrEmpty(ratingModelLabel) && string.IsNullOrEmpty(inputOutputParameters)) { ratingModelRow["RatingModelInfo"] = Resources.RatingModelUnspecified; } else { ratingModelRow["RatingModelInfo"] = string.Format(Resources.NoRatingModelFoundWithXYZZ, inputOutputParameters, ratingModelLabel, locationIdentifier, locationName); } } else { string inputParameterDisplayId = ratingModelDescription.InputParameter; string inputUnitId = ratingModelDescription.InputUnit; string outputParameterDisplayId = ratingModelDescription.OutputParameter; string outputUnitId = ratingModelDescription.OutputUnit; string rmDescription = ratingModelDescription.Description; ratingModelRow["InputParameter"] = inputParameterDisplayId; ratingModelRow["InputUnitId"] = inputUnitId; ratingModelRow["InputUnitSymbol"] = _Common.GetUnitSymbol(inputUnitId); ratingModelRow["InputParameterRoundingSpec"] = _Common.GetParameterRoundingSpec(inputParameterDisplayId); ratingModelRow["OutputParameter"] = outputParameterDisplayId; ratingModelRow["OutputUnitId"] = outputUnitId; ratingModelRow["OutputUnitSymbol"] = _Common.GetUnitSymbol(outputUnitId); ratingModelRow["OutputParameterRoundingSpec"] = _Common.GetParameterRoundingSpec(outputParameterDisplayId); ratingModelRow["Description"] = rmDescription; ratingModelRow["Comment"] = ratingModelDescription.Comment; ratingModelRow["RatingModelInfo"] = string.Format(Resources.NoRatingCurvesFoundWithXY, ratingModelIdentifier, locationName); RatingCurveListServiceResponse ratingCurveListResponse = _Common.GetRatingCurveList(ratingModelIdentifier); if (ratingCurveListResponse != null) { ratingModelRow["RatingModelInfo"] = string.Format(Resources.RatingModelInformation, ratingModelIdentifier, locationName, inputParameterDisplayId, _Common.GetUnitSymbol(inputUnitId), outputParameterDisplayId, _Common.GetUnitSymbol(outputUnitId), ratingCurveListResponse.RatingCurves.Count); } } return(ratingModelTable); }
public AllTablesResult LoadAllTables(RatingModelDescription ratingModelDescription, RatingCurveListServiceResponse ratingCurves, double stepSize) { var result = new AllTablesResult(); var validTableNumbers = new HashSet <double>( ratingCurves .RatingCurves .Select(c => double.TryParse(c.Id, out var number) ? (double?)number : null) .Where(d => d.HasValue) .Select(d => d.Value)); for (var i = 0; i < ratingCurves.RatingCurves.Count; ++i) { var ratingCurve = ratingCurves.RatingCurves[i]; if (!double.TryParse(ratingCurve.Id, out var tableNumber)) { tableNumber = 1.0 + i; while (validTableNumbers.Contains(tableNumber)) { tableNumber += ratingCurves.RatingCurves.Count; } } result.Tables.Add(new Table { TableNumber = tableNumber, TableName = ratingCurve.Id, NumPeriods = ratingCurve.PeriodsOfApplicability.Count, NumPoints = ratingCurve.BaseRatingTable.Count }); result.TableDates.AddRange(ratingCurve.PeriodsOfApplicability.Select(p => new TableDate { TableNumber = tableNumber, StartDate = p.StartTime, EndDate = p.EndTime })); result.TableValues.AddRange(ratingCurve.BaseRatingTable.Select(p => new TableValue { TableNumber = tableNumber, Input = p.InputValue ?? double.NaN, Output = p.OutputValue ?? double.NaN })); } return(result); }