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(""")) { 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)); }
/// <summary> /// Get data used by open market report /// </summary> /// <returns></returns> public IEnumerable <BondIssueRate> GetBondIssueRatesRepo(BondIssueParams reportParams) { return(BondReportRepository.GetBondIssueRatesRepo(reportParams)); }
/// <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)); }