Exemplo n.º 1
0
        public void TestMethod1()
        {
            PolicyType ptA = PolicyType.GetPolicyType("A");
            PolicyType ptB = PolicyType.GetPolicyType("B");
            PolicyType ptC = PolicyType.GetPolicyType("C");

            MaturityData maturityData1 = new MaturityData("A001", new DateTime(1989, 1, 1), 10, false, 10, 10);

            Assert.IsTrue(ptA.QualifiesForDiscretionayBonus(maturityData1));
            Assert.IsFalse(ptB.QualifiesForDiscretionayBonus(maturityData1));
            Assert.IsFalse(ptC.QualifiesForDiscretionayBonus(maturityData1));

            MaturityData maturityData2 = new MaturityData("A001", new DateTime(1990, 1, 1), 10, false, 10, 10);

            Assert.IsFalse(ptA.QualifiesForDiscretionayBonus(maturityData2));
            Assert.IsFalse(ptB.QualifiesForDiscretionayBonus(maturityData2));
            Assert.IsFalse(ptC.QualifiesForDiscretionayBonus(maturityData2));

            MaturityData maturityData3 = new MaturityData("A001", new DateTime(1990, 1, 1), 10, true, 10, 10);

            Assert.IsFalse(ptA.QualifiesForDiscretionayBonus(maturityData3));
            Assert.IsTrue(ptB.QualifiesForDiscretionayBonus(maturityData3));
            Assert.IsTrue(ptC.QualifiesForDiscretionayBonus(maturityData3));

            MaturityData maturityData4 = new MaturityData("A001", new DateTime(1989, 1, 1), 10, true, 10, 10);

            Assert.IsTrue(ptA.QualifiesForDiscretionayBonus(maturityData4));
            Assert.IsTrue(ptB.QualifiesForDiscretionayBonus(maturityData4));
            Assert.IsFalse(ptC.QualifiesForDiscretionayBonus(maturityData4));
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            Console.Write("Please provide the folder path where the MaturityData.csv file is");
            string fileLocation = Console.ReadLine();
            string curFile      = fileLocation.Replace("\\MaturityData.csv", "") + "\\MaturityData.csv";              //caters for cases where user inputs the full path, and not just the folder

            if (File.Exists(curFile))
            {
                Console.WriteLine("File exists. Proceeding");
                List <MaturityData> policies = File.ReadAllLines(curFile)
                                               .Skip(1)
                                               .Select(v => MaturityData.FromCsv(v)).ToList();

                Console.WriteLine("File read in, processing");
                foreach (MaturityData policy in policies)
                {
                    int    applicableFee     = 0;
                    int    isBonusApplicable = 0;
                    string type = policy.policy_number.Substring(0, 1);

                    applicableFee        = GetApplicableFee(type);
                    isBonusApplicable    = IsBonusApplicable(policy, isBonusApplicable, type);
                    policy.maturityValue = CalculateMaturityValue(policy, applicableFee, isBonusApplicable);
                }
                Console.WriteLine("Processing completed, outputing file");

                DataToXML(policies, fileLocation);
            }
            else
            {
                Console.WriteLine("File does not exist. Program will now close");
            }
            Console.Read();
        }
Exemplo n.º 3
0
 private static double CalculateMaturityValue(MaturityData value, int applicableFee, int isBonusApplicable)
 {
     if (applicableFee != 0)
     {
         return(((value.premiums / 100 * (100 - applicableFee)) + (isBonusApplicable * value.discretionary_bonus)) * value.uplift_percentage); //normal calculation
     }
     else
     {
         return(0);           //if policy number is invalid(doesnt start with A,B,C it returns 0 so invalid policy numbers can be quickly checked
     }
 }
Exemplo n.º 4
0
            public static MaturityData FromCsv(string csvLine)
            {
                string[]     values       = csvLine.Split(',');
                MaturityData maturityData = new MaturityData();

                maturityData.policy_number       = Convert.ToString(values[0]);
                maturityData.policy_start_date   = DateTime.ParseExact(values[1], "dd/MM/yyyy", CultureInfo.InvariantCulture);
                maturityData.premiums            = Convert.ToDouble(values[2]);
                maturityData.membership          = Convert.ToString(values[3]);
                maturityData.discretionary_bonus = Convert.ToDouble(values[4]);
                maturityData.uplift_percentage   = Convert.ToDouble(values[5], new CultureInfo("en-US"));
                maturityData.maturityValue       = 0;
                return(maturityData);
            }
Exemplo n.º 5
0
 private static int IsBonusApplicable(MaturityData value, int isBonusApplicable, string type)
 {
     if (type == "A" && value.policy_start_date < CriteriaDateA)
     {
         isBonusApplicable = 1;
     }
     else if (type == "B" && value.membership == "Y")
     {
         isBonusApplicable = 1;
     }
     else if (type == "C" && value.policy_start_date >= CriteriaDateA && value.membership == "Y")
     {
         isBonusApplicable = 1;
     }
     else
     {
         isBonusApplicable = 0;
     }
     return(isBonusApplicable);
 }
Exemplo n.º 6
0
        public void TestMethod1()
        {
            Dictionary <string, string> dict = new Dictionary <string, string>();

            dict.Add("policy_number", "A001");
            dict.Add("policy_start_date", "01/06/1986");
            dict.Add("premiums", "1000");
            dict.Add("membership", "Y");
            dict.Add("discretionary_bonus", "200");
            dict.Add("uplift_percentage", "40");

            MaturityData md = MaturityDataExtractor.Extractor(dict);

            Assert.AreEqual(md.PolicyNumber, "A001");
            Assert.AreEqual(md.PolicyStartDate.Day, 1);
            Assert.AreEqual(md.PolicyStartDate.Month, 6);
            Assert.AreEqual(md.PolicyStartDate.Year, 1986);
            Assert.AreEqual(md.Premiums, 1000);
            Assert.IsTrue(md.Membership);
            Assert.AreEqual(md.DiscretionaryBonus, 200);
            Assert.AreEqual(md.UpliftPercentage, 40);
        }
Exemplo n.º 7
0
        public void PolicyTypeCTest()
        {
            Dictionary <string, string> dict = new Dictionary <string, string>();

            dict.Add("policy_number", "C001");
            dict.Add("policy_start_date", "01/06/1986");
            dict.Add("premiums", "1000");
            dict.Add("membership", "Y");
            dict.Add("discretionary_bonus", "200");
            dict.Add("uplift_percentage", "40");

            MaturityData md = MaturityDataExtractor.Extractor(dict);

            Assert.AreEqual(md.PolicyType.Name, "C");
            Assert.AreEqual(md.QualifyingDiscretionaryBonus, 0);
            md.Membership = false;
            Assert.AreEqual(md.QualifyingDiscretionaryBonus, 0);
            md.PolicyStartDate = DateTime.Now;
            Assert.AreEqual(md.QualifyingDiscretionaryBonus, 0);
            md.Membership = true;
            Assert.AreEqual(md.QualifyingDiscretionaryBonus, 200);
        }