Esempio n. 1
0
        private JsonTable BuildBondIssuMaturesChartDataForExcel(string rate, string columnType, DateTime start, DateTime end, string category, string itemList, string unit, int isUseSubCategory = 0, string subCategory = "Bond_Class", string subCategoryValue = "", bool isTotal = false)
        {
            var jTable      = new JsonTable();
            var typeName    = "TypeCn";
            var subTypeName = "SubTypeCn";

            if (CultureHelper.IsEnglishCulture())
            {
                typeName    = "TypeEn";
                subTypeName = "SubTypeEn";
            }

            var yearsDic = new Dictionary <string, DataTable>();
            var dates    = PopulateRateTimes(start, end, rate);

            for (var i = 0; i < dates.Count; i += 2)
            {
                var currentStart = dates[i];
                var currentEnd   = dates[i + 1];
                var summaryData  = BondReportRepository.GetBondDepositoryBalanceChart(columnType, currentStart, currentEnd, category, itemList, unit, isUseSubCategory, subCategory, subCategoryValue);
                yearsDic.Add(rate == "y" ? currentEnd.ToString("yyyy") : currentEnd.ToString("yyyy-M"), summaryData);
            }
            var    rows     = yearsDic.FirstOrDefault().Value.Rows;
            var    typeList = new Dictionary <string, string>();
            string header;

            foreach (DataRow row in rows)
            {
                header = (string.IsNullOrEmpty(subCategoryValue) || subCategoryValue == "undefined")
                    ? row[typeName].ToString()
                    : String.Format("{0}({1})", row[typeName], row[subTypeName]);
                typeList.Add(row["Type"].ToString(), header);
            }

            jTable.ColumTemplate.Add(new JsonColumn {
                Name = Resources.Global.Date, ColumnName = "Date"
            });
            if (!isTotal)
            {
                foreach (var t in typeList)
                {
                    jTable.ColumTemplate.Add(new JsonColumn {
                        Name = t.Value, ColumnName = t.Key + "_" + t.Value
                    });
                }
            }
            else
            {
                jTable.ColumTemplate.Add(new JsonColumn {
                    Name = Resources.Global.Total, ColumnName = "Total"
                });
            }


            foreach (var f in yearsDic)
            {
                var currentRow = new Dictionary <string, string>();
                currentRow.Add("Date", f.Key);
                if (isTotal)
                {
                    double total = 0;
                    foreach (DataRow v in f.Value.Rows)
                    {
                        total += Convert.ToDouble(v[columnType]);
                    }
                    currentRow.Add("Total", total.ToString(CultureInfo.InvariantCulture));
                }
                else
                {
                    foreach (DataRow v in f.Value.Rows)
                    {
                        var name = (string.IsNullOrEmpty(subCategoryValue) || subCategoryValue == "undefined")
                            ? v[typeName]
                            : String.Format("{0}({1})", v[typeName], v[subTypeName]);
                        currentRow.Add(v["Type"] + "_" + name, v[columnType].ToString());
                    }
                }

                jTable.RowData.Add(currentRow);
            }
            return(jTable);
        }
Esempio n. 2
0
        private ChartData GetIssuMaturesTopChart(string rate, string chartType, string columnType, DateTime start, DateTime end, string category, string itemList, string unit, int isUseSubCategory = 0, string subCategory = "Bond_Class", string subCategoryValue = "", bool isTotal = false)
        {
            if (start > end)
            {
                return(new ChartData());
            }
            var chartData = new ChartData
            {
                ChartType = chartType,
                YText     = Resources.Global.Unit + "(" + HtmlUtil.GetUnitOptionByKey(unit) + ")"
            };

            switch (columnType)
            {
            case "InitialBalance":
                chartData.Decimal = 2;
                break;

            case "Issues":
                chartData.YText   = string.Empty;
                chartData.Decimal = 0;
                break;

            case "IssuesPercent":
                chartData.YText   = string.Empty;
                chartData.Decimal = 2;
                break;

            case "IssuesAmount":
                chartData.Decimal = 2;
                break;

            case "IssuesAmountPercent":
                chartData.YText   = string.Empty;
                chartData.Decimal = 2;
                break;

            case "MaturityBonds":
                chartData.YText   = string.Empty;
                chartData.Decimal = 0;
                break;

            case "MaturityAmount":
                chartData.Decimal = 2;
                break;

            case "EndBalance":
                chartData.Decimal = 2;
                break;

            case "EndIssuesPercent":
                chartData.YText   = string.Empty;
                chartData.Decimal = 2;
                break;
            }
            var typeName    = "TypeCn";
            var subTypeName = "SubTypeCn";

            if (CultureHelper.IsEnglishCulture())
            {
                typeName    = "TypeEn";
                subTypeName = "SubTypeEn";
            }
            if (chartType == "bar" || chartType == "line")
            {
                var yearsDic = new Dictionary <string, DataTable>();
                var dates    = PopulateRateTimes(start, end, rate);
                for (var i = 0; i < dates.Count; i += 2)
                {
                    var currentStart = dates[i];
                    var currentEnd   = dates[i + 1];
                    var summaryData  = BondReportRepository.GetBondDepositoryBalanceChart(columnType, currentStart, currentEnd, category, itemList, unit, isUseSubCategory, subCategory, subCategoryValue);
                    yearsDic.Add(rate == "y" ? currentEnd.ToString("yyyy") : currentEnd.ToString("yyyy-M"), summaryData);
                }
                chartData.ColumnCategories = yearsDic.Keys.Select(x => x.ToString()).ToArray();
                var groupDic = new Dictionary <string, List <double> >();
                if (isTotal)
                {
                    groupDic.Add(Resources.Global.Total, new List <double>());
                    foreach (var keyValue in yearsDic)
                    {
                        double total = 0;
                        for (var j = 0; j < keyValue.Value.Rows.Count; j++)
                        {
                            total += Convert.ToDouble(keyValue.Value.Rows[j][columnType]);
                        }
                        groupDic[Resources.Global.Total].Add(total);
                    }
                }
                else
                {
                    foreach (var keyValue in yearsDic)
                    {
                        for (var j = 0; j < keyValue.Value.Rows.Count; j++)
                        {
                            var name = keyValue.Value.Rows[j][typeName].ToString();
                            if (string.IsNullOrEmpty(subCategoryValue))
                            {
                                if (!groupDic.ContainsKey(name))
                                {
                                    groupDic.Add(name, new List <double>());
                                }
                            }
                            else
                            {
                                name = string.Format("{0}({1})", keyValue.Value.Rows[j][typeName], keyValue.Value.Rows[j][subTypeName]);
                                if (!groupDic.ContainsKey(name))
                                {
                                    groupDic.Add(name, new List <double>());
                                }
                            }
                            groupDic[name].Add(Convert.ToDouble(keyValue.Value.Rows[j][columnType]));
                        }
                    }
                }
                var seriesDataList = new List <SeriesData>();
                foreach (var keyValue in groupDic)
                {
                    var sData = new SeriesData {
                        name = keyValue.Key
                    };
                    if (keyValue.Value != null)
                    {
                        sData.data = keyValue.Value.ToArray();
                        seriesDataList.Add(sData);
                    }
                }
                chartData.ColumnSeriesData = seriesDataList.ToArray();
            }
            else
            {
                var groupData = BondReportRepository.GetBondDepositoryBalanceChart(columnType, start, end, category, itemList, unit, isUseSubCategory, subCategory, subCategoryValue);
                var pieData   = new List <PieSectionData>();
                for (int j = 0; j < groupData.Rows.Count; j++)
                {
                    var currentSection = new PieSectionData {
                        name = groupData.Rows[j][typeName].ToString(), y = Convert.ToDouble(groupData.Rows[j][columnType])
                    };
                    pieData.Add(currentSection);
                }
                chartData.PieSeriesData = pieData.ToArray();
            }


            return(chartData);
        }