Esempio n. 1
0
        private RiskRateDetail getRiskRateDetail(int actualSumAssured, OrderedDictionary dictionary)
        {
            RiskRateDetail riskRateDetail = null;

            for (var index = 0; index < dictionary.Keys.Count; index++)
            {
                int     lowerBandSumAssured = (int)dictionary.Cast <DictionaryEntry>().ElementAt(index).Key;
                decimal lowerBandRiskRate   = (decimal)dictionary[index];
                int     nextIndex           = index + 1;
                int     upperBandSumAssured = (int)dictionary.Cast <DictionaryEntry>().ElementAt(nextIndex).Key;
                decimal upperBandRiskRate   = (decimal)dictionary[nextIndex];

                if (actualSumAssured >= lowerBandSumAssured && actualSumAssured <= upperBandSumAssured)
                {
                    riskRateDetail = new RiskRateDetail(
                        actualSumAssured,
                        lowerBandSumAssured,
                        lowerBandRiskRate,
                        upperBandSumAssured,
                        upperBandRiskRate
                        );
                    break;
                }
            }
            return(riskRateDetail);
        }
Esempio n. 2
0
        private decimal calculateRiskRate(int sumAssured, OrderedDictionary dictionary)
        {
            decimal riskRate;

            RiskRateDetail riskRateDetail      = getRiskRateDetail(sumAssured, dictionary);
            decimal        lowerBandSumAssured = riskRateDetail.LowerBandSumAssured;
            decimal        upperBandSumAssured = riskRateDetail.UpperBandSumAssured;
            decimal        lowerBandRiskRate   = riskRateDetail.LowerBandRiskRateValue;
            decimal        upperBandRiskRate   = riskRateDetail.UpperBandRiskRateValue;

            riskRate = ((sumAssured - lowerBandSumAssured) / (upperBandSumAssured - lowerBandSumAssured) * upperBandRiskRate
                        + (upperBandSumAssured - sumAssured) / (upperBandSumAssured - lowerBandSumAssured) * lowerBandRiskRate);

            return(riskRate);
        }