Exemplo n.º 1
0
        public ActionResult AddBond(int reportId, string displayName, DateTime?date, string bondType, string term, string couponType, string rating, string grid)
        {
            var serializer = new JavaScriptSerializer();

            if (grid.Contains("&quot"))
            {
                grid = System.Web.HttpUtility.HtmlDecode(grid);
            }
            var g = serializer.Deserialize(grid, typeof(List <BondIssueRate>)) as List <BondIssueRate>;

            var param = new BondIssueParams
            {
                StartDate = date ?? new DateTime(DateTime.Now.Year, 1, 1),
                BondType  = bondType,
                Term      = term,
                IsFloat   = couponType,
                Rating    = rating,
            };

            var bondRateRepo = ReportService.GetBondIssueRatesRepo(param).ToList();

            var bondIssueReport = new BondIssueRateReport(reportId)
            {
                Name        = displayName,
                Grid        = g,
                IsAllRating = rating == "All"
            };

            bondIssueReport.InitOrUpdate(bondRateRepo);
            var themeName = ThemeHelper.GetTheme(Request);

            bondIssueReport.Chart.Theme = themeName;

            return(PartialView("_IssueRatesStatistical", bondIssueReport));
        }
Exemplo n.º 2
0
 /// <summary>
 /// Get data used by open market report
 /// </summary>
 /// <returns></returns>
 public IEnumerable <BondIssueRate> GetBondIssueRatesRepo(BondIssueParams reportParams)
 {
     return(BondReportRepository.GetBondIssueRatesRepo(reportParams));
 }
Exemplo n.º 3
0
        /// <summary>
        /// Get bond issue rate data
        /// </summary>
        /// <param name="bondIssueParams"></param>
        /// <returns></returns>
        public IEnumerable <BondIssueRate> GetBondIssueRatesRepo(BondIssueParams bondIssueParams)
        {
            var term = bondIssueParams.Term;
            Func <BondIssueRate, bool> termCondition;

            switch (term)
            {
            case "6M": termCondition = t => t.term > 170 && t.term < 190; break;

            case "9M": termCondition = t => t.term > 260 && t.term < 280; break;

            case "1Y": termCondition = t => t.term == 1; break;

            case "2Y": termCondition = t => t.term == 2; break;

            case "3Y": termCondition = t => t.term == 3; break;

            case "5Y": termCondition = t => t.term == 5; break;

            case "7Y": termCondition = t => t.term == 7; break;

            case "10Y": termCondition = t => t.term == 10; break;

            case "15Y": termCondition = t => t.term == 15; break;

            case "20Y": termCondition = t => t.term == 20; break;

            case "30Y": termCondition = t => t.term == 30; break;

            default: termCondition = t => t.term > 80 && t.term < 100; break;     //3M
            }

            Func <BondIssueRate, bool> ratingCondition = r => r.rating_number == bondIssueParams.Rating;

            IEnumerable <BondIssueRate> repo;

            using (var vavdb = new BondDBEntities())
            {
                repo = (from r in vavdb.BOND
                        where (r.orig_issue_dt >= bondIssueParams.StartDate) &&
                        (r.cdc_asset_class_cd == bondIssueParams.BondType) &&
                        (r.isfloat == bondIssueParams.IsFloat) &&
                        (r.re_issue != "1")
                        select new BondIssueRate
                {
                    bond_name_cn = r.bond_name_cn,
                    bond_name_en = r.bond_name_en,
                    code = r.code,
                    orig_issue_dt = r.orig_issue_dt,
                    maturity_dt = r.maturity_dt,
                    term = r.term,
                    yield = r.yield,
                    orig_iss_amt = r.orig_iss_amt,
                    coupon_type_cn = r.coupon_class_cn,
                    coupon_type_en = r.coupon_class_en,
                    latest_rating_cd = r.latest_rating_cd,
                    cdc_asset_class_number = r.cdc_asset_class_number,
                    cdc_asset_class_cn = r.cdc_asset_class_cn,
                    cdc_asset_class_en = r.cdc_asset_class_en,
                    isfloat = r.isfloat,
                    rating_number = r.rating_number,
                    assetId = r.assetId,
                    re_issue = r.re_issue
                }).ToList();
            }

            IEnumerable <BondIssueRate> result = repo;

            if (bondIssueParams.Rating != null && bondIssueParams.Rating != "All")
            {
                result = repo.Where(ratingCondition);
            }

            return(result.Where(termCondition));
        }