Untitled

 avatar
unknown
plain_text
a month ago
3.8 kB
2
Indexable
public Dictionary<string, JSONDataTable> GetCFSummaryScenario(string AssetName, string sessionId, string userName, List<string> scenarioNames, string dealName, string dataLevel = "L", string propertyName = null, List<string> allScenarioNames = null)
{
    // ... your existing code ...

    DataTable dtFinancial = lnDetailedUWSummary != null ? VABSDomainLayer.Utils.CMBS.LoanDashboardUtils.TransposeFinancialDatatoJSON(lnDetailedUWSummary) : new DataTable();

    if (dtFinancial.Columns.Count > 0)
    {
        // Create a new DataTable with the desired column order
        DataTable orderedDtFinancial = new DataTable();

        // Add User data columns first
        foreach (DataColumn col in dtFinancial.Columns)
        {
            if (col.ColumnName.StartsWith("USER ", StringComparison.OrdinalIgnoreCase) ||
                col.ColumnName.StartsWith("Market|", StringComparison.OrdinalIgnoreCase) ||
                col.ColumnName.StartsWith("OCM Base|", StringComparison.OrdinalIgnoreCase) ||
                col.ColumnName.StartsWith("test rupali|", StringComparison.OrdinalIgnoreCase) ||
                col.ColumnName.StartsWith("test|", StringComparison.OrdinalIgnoreCase)
                )
            {
                orderedDtFinancial.Columns.Add(col.ColumnName, col.DataType);
            }
        }

        // Add Calculated Average columns
        foreach (DataColumn col in dtFinancial.Columns)
        {
            if (col.ColumnName.StartsWith("Average|", StringComparison.OrdinalIgnoreCase))
            {
                orderedDtFinancial.Columns.Add(col.ColumnName, col.DataType);
            }
        }

        // Add Intex data columns
        foreach (DataColumn col in dtFinancial.Columns)
        {
            if (col.ColumnName.EndsWith("_INTEX|Amount", StringComparison.OrdinalIgnoreCase) ||
                col.ColumnName.EndsWith("_INTEX|PerUnit", StringComparison.OrdinalIgnoreCase) ||
                col.ColumnName.EndsWith("_INTEX|PercTotal", StringComparison.OrdinalIgnoreCase) ||
                col.ColumnName.Equals("UW_INTEX|Amount", StringComparison.OrdinalIgnoreCase) ||
                col.ColumnName.Equals("UW_INTEX|PerUnit", StringComparison.OrdinalIgnoreCase) ||
                col.ColumnName.Equals("UW_INTEX|PercTotal", StringComparison.OrdinalIgnoreCase)
               )
            {
                orderedDtFinancial.Columns.Add(col.ColumnName, col.DataType);
            }
        }

        // Add remaining columns (like FieldName, DisplayFieldName, SectionName) - these should likely be at the beginning
        foreach (DataColumn col in dtFinancial.Columns)
        {
            if (!orderedDtFinancial.Columns.Contains(col.ColumnName))
            {
                orderedDtFinancial.Columns.Add(col.ColumnName, col.DataType);
            }
        }

        // Populate the ordered DataTable
        foreach (DataRow row in dtFinancial.Rows)
        {
            DataRow newRow = orderedDtFinancial.NewRow();
            foreach (DataColumn col in orderedDtFinancial.Columns)
            {
                if (dtFinancial.Columns.Contains(col.ColumnName))
                {
                    newRow[col.ColumnName] = row[col.ColumnName];
                }
            }
            orderedDtFinancial.Rows.Add(newRow);
        }

        // Replace the original DataTable with the ordered one
        dtFinancial = orderedDtFinancial;
    }

    if (lnDetailedUWSummary.SummaryCFs.ContainsKey("Average"))
        lnDetailedUWSummary.SummaryCFs.Remove("Average");

    // ... rest of your code using dtFinancial ...

    returnData.Add("Financials", JSONUtils.DataTableToJSON(dtFinancial));
    // ... rest of your code ...

    return returnData;
}
Leave a Comment