public static void ValidateStartDate(PolicyDetails details)
 {
     if (details.StartDate < DateTime.Now.Date)
     {
         throw new PolicyValidationException(DeclineReason.StartDateOfPolicy);
     }
 }
Esempio n. 2
0
        public void Create_Policy_WithCriteria()
        {
            //Login
            PolicyDetails policydetails = new PolicyDetails();

            Navigate_To_Policy();
            policydetails.ClickAddPolicyButton();
            String policyName        = policydetails.setPolicyName();
            String policyDescription = policydetails.setPolicyDescription();

            policydetails.ClickAddCriteriaDialog();
            policydetails.ClickAddCriteriaButton();
            String CriteriaName = policydetails.setCriteriaName();

            policydetails.SetCriteriaType("Number");
            policydetails.setCriteriaDescription();
            policydetails.ClickSaveCriteriaButton();
            policydetails.ClickSelectCriteriaButton();
            policydetails.setCriteriaPriority();
            policydetails.ClickSaveButton();
            policydetails.WaitForStatus();
            policydetails.SearchByName(policyName);

            PurgeLinkedData.DeletAdmissionPolicyCriteriaRelation(policyName);
            PurgeLinkedData.DeletAdmissionCriteria(CriteriaName);
            PurgeLinkedData.DeletAdmissionPolicy(policyName);
        }
Esempio n. 3
0
        public ActionResult Details(PolicyDetails cusObj)
        {
            string        con    = ConfigurationManager.ConnectionStrings["Myconnection"].ConnectionString;
            SqlConnection sqlCon = new SqlConnection(con);

            sqlCon.Open();
            SqlCommand    sqlCmd = new SqlCommand("select cover_amount,payout_option,policy_term,payment_term,plan_type,add_on from POLICY_DETAILS where policy_id=(Select max (policy_id) From POLICY_DETAILS)", sqlCon);
            SqlDataReader sdr    = sqlCmd.ExecuteReader();

            if (sdr.Read())
            {
                cusObj.cover_amount  = Convert.ToInt32(sdr["cover_amount"]);
                cusObj.payout_option = sdr["payout_option"].ToString();
                cusObj.policy_term   = Convert.ToInt32(sdr["policy_term"]);
                cusObj.payment_term  = Convert.ToInt32(sdr["payment_term"]);
                cusObj.plan_type     = sdr["plan_type"].ToString();
                cusObj.add_on        = sdr["add_on"].ToString();
            }
            else
            {
                ViewData["Message"] = "User Login Failed";
            }
            sqlCon.Close();



            return(View(cusObj));
        }
        public static void ValidateDriverClaimCount(PolicyDetails details)
        {
            int drivers = details.Drivers?.Count() ?? 0;

            if (drivers == 0)
            {
                throw new PolicyValidationException(DeclineReason.NoDriversSpecified);
            }

            if (drivers < Calculator.MinDrivers)
            {
                throw new PolicyValidationException(DeclineReason.InsufficientDriversSpecified);
            }

            if (drivers > Calculator.MaxDrivers)
            {
                throw new PolicyValidationException(DeclineReason.TooManyDriversSpecified);
            }

            int maxClaims = 0;

            maxClaims = details.Drivers
                        .Select(x => Math.Max(maxClaims, x.PreviousClaims?.Count() ?? 0))
                        .Max();

            if (maxClaims > Calculator.MaxClaimsPerDriver)
            {
                throw new PolicyValidationException(DeclineReason.TooManyPreviousClaims);
            }
        }
Esempio n. 5
0
        public async Task <IActionResult> Edit(int id, [Bind("Policyid,Userid,Policynumber,Inscompanyid,Inscompanyname,Inscontactname,Inscompanywebsite,Inscontactphone,Inscontactemail,Policynickname,Policytype")] PolicyDetails policyDetails)
        {
            if (id != policyDetails.Policyid)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(policyDetails);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PolicyDetailsExists(policyDetails.Policyid))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            //ViewData["Userid"] = new SelectList(_context.PolicyHolder, "Userid", "Email", policyDetails.Userid);
            return(View(policyDetails));
        }
 public static void DriverIsAccountant(PolicyDetails details)
 {
     if (details.Drivers
         .FirstOrDefault(x => x.Occupation.Equals("Accountant", StringComparison.InvariantCultureIgnoreCase)) != null)
     {
         details.Premium -= details.Premium / 10M;
     }
 }
        public static void ValidateAgeOldestDriver(PolicyDetails details)
        {
            var oldestDriver = details.Drivers.OrderBy(x => x.DateOfBirth).First();
            var age          = oldestDriver.DateOfBirth.GetAgeInYears(details.StartDate);

            if (age >= 75)
            {
                throw new PolicyValidationException(DeclineReason.AgeOfOldestDriver, oldestDriver.Name);
            }
        }
        public void TestRuleValidation_Age()
        {
            // Setup policy details with a driver who is 21.
            var policyDetails = new PolicyDetails()
            {
                StartDate = DateTime.Now.AddDays(1).Date,
                Drivers   = new Driver[]
                {
                    new Driver()
                    {
                        Name        = "William Orr",
                        Occupation  = "Developer",
                        DateOfBirth = new DateTime(1962, 6, 21),
                    },

                    new Driver()
                    {
                        Name        = "William Young",
                        Occupation  = "Youth",
                        DateOfBirth = DateTime.Now.AddYears(-21).Date,
                    }
                }
            };

            this.premiumCalculator.Validate += Validators.ValidateDriverClaimCount;
            this.premiumCalculator.Validate += Validators.ValidateAgeYoungestDriver;
            this.premiumCalculator.Validate += Validators.ValidateAgeOldestDriver;

            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.None, policyDetails.DeclineReason);

            Assert.AreEqual(this.premiumCalculator.StartingPoint * 1.2M, policyDetails.Premium);

            // Change the second driver to be 26
            policyDetails.Drivers.Skip(1).First().DateOfBirth = DateTime.Now.AddYears(-26).Date;
            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.None, policyDetails.DeclineReason);

            Assert.AreEqual(this.premiumCalculator.StartingPoint * 0.9M, policyDetails.Premium);

            // Change the second driver to be 76
            policyDetails.Drivers.Skip(1).First().DateOfBirth = DateTime.Now.AddYears(-76).Date;
            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.AgeOfOldestDriver, policyDetails.DeclineReason);

            // Change the second driver to be 20
            policyDetails.Drivers.Skip(1).First().DateOfBirth = DateTime.Now.AddYears(-20).Date;
            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.AgeOfYoungestDriver, policyDetails.DeclineReason);
        }
Esempio n. 9
0
        public void Navigate_To_Policy()
        {
            //Login
            String[] featureList = { "Admission PoliciesandCriteria" };
            FeatureBee.FeatureBeeLogin.LoginWithFeatureBee(featureList, FeatureBee.FeatureBeeLogin.iSIMSUserType.AdmissionsOfficer);
            AutomationSugar.NavigateMenu("Tasks", "Admissions", "Manage Admission Policies");
            PolicyDetails policydetails = new PolicyDetails();
            String        policyTitle   = policydetails.getPolicyTitle();

            Assert.IsTrue(policyTitle.Contains("Admission Policies"));
        }
Esempio n. 10
0
        public ActionResult Index(PolicyDetails cusObj)
        {
            Response.Write("Phone NUmber = " + TempData["Phone_Number"]);
            long          Phone   = (long)Convert.ToDouble(TempData["Phone_Number"]);
            string        con     = ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString;
            SqlConnection sqlCon  = new SqlConnection(con);
            SqlCommand    command = new SqlCommand("spGETPKCUSTOMER", sqlCon);

            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.AddWithValue("@phone_number", Phone);

            SqlDataAdapter myadapter = new SqlDataAdapter(command);

            myds = new DataSet();
            myadapter.Fill(myds, "CUSTOMER");
            rc = myds.Tables["CUSTOMER"].Rows.Count;
            if (rc > 0)
            {
                ViewBag.customer_id = myds.Tables["CUSTOMER"].Rows[0][0].ToString();
            }

            Response.Write("customer id + " + ViewBag.customer_id);


            SqlCommand sqlCmd = new SqlCommand("INSERT into POLICY_DETAILS (customer_id,cover_amount,payout_option,policy_term,payment_term,plan_type,add_on,policy_start_date,policy_active_flag,policy_applied) values (@customer_id,@cover_amount,@payout_option,@policy_term,@payment_term,@plan_type,@add_on,@policy_start_date,@policy_active_flag,@policy_applied)", sqlCon);

            sqlCon.Open();


            sqlCmd.Parameters.AddWithValue("@customer_id", ViewBag.customer_id);
            sqlCmd.Parameters.AddWithValue("@cover_amount", cusObj.cover_amount);
            sqlCmd.Parameters.AddWithValue("@payout_option", cusObj.payout_option);
            sqlCmd.Parameters.AddWithValue("@policy_term", cusObj.policy_term);
            sqlCmd.Parameters.AddWithValue("@payment_term", cusObj.payment_term);
            sqlCmd.Parameters.AddWithValue("@plan_type", cusObj.plan_type);
            sqlCmd.Parameters.AddWithValue("@add_on", String.IsNullOrWhiteSpace(cusObj.add_on) ? (object)DBNull.Value : (object)cusObj.add_on);
            sqlCmd.Parameters.AddWithValue("@policy_start_date", DateTime.Now);
            //sqlCmd.Parameters.AddWithValue("@policy_end_date", );
            sqlCmd.Parameters.AddWithValue("@policy_active_flag", 0);
            sqlCmd.Parameters.AddWithValue("@policy_applied", DateTime.Now);


            SqlDataReader sdr = sqlCmd.ExecuteReader();

            sqlCon.Close();
            return(RedirectToRoute(new
            {
                controller = "Policy",
                action = "Details"
            }));
        }
        public void TestRuleValidation_Occupation()
        {
            var policyDetails = new PolicyDetails()
            {
                StartDate = DateTime.Now.AddDays(1).Date,
                Drivers   = new Driver[]
                {
                    new Driver()
                    {
                        Name           = "William Orr",
                        Occupation     = "Developer",
                        DateOfBirth    = new DateTime(1962, 6, 21),
                        PreviousClaims = new Claim[]
                        {
                            new Claim()
                            {
                                ClaimDate = new DateTime(1980, 1, 1)
                            }
                        }
                    }
                }
            };

            this.premiumCalculator.Validate += Validators.ValidateDriverClaimCount;
            this.premiumCalculator.Validate += Validators.DriverIsChauffeur;
            this.premiumCalculator.Validate += Validators.DriverIsAccountant;

            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.None, policyDetails.DeclineReason);

            Assert.AreEqual(this.premiumCalculator.StartingPoint, policyDetails.Premium);

            // Change occupation to "Chauffeur".
            policyDetails.Drivers.First().Occupation = "Chauffeur";

            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.None, policyDetails.DeclineReason);

            Assert.AreEqual(this.premiumCalculator.StartingPoint * 1.1M, policyDetails.Premium);

            // Change occupation to "Accountant".
            policyDetails.Drivers.First().Occupation = "Accountant";

            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.None, policyDetails.DeclineReason);

            Assert.AreEqual(this.premiumCalculator.StartingPoint * 0.9M, policyDetails.Premium);
        }
Esempio n. 12
0
        public void Create_Basic_Policy()
        {
            //Login

            PolicyDetails policydetails = new PolicyDetails();

            Navigate_To_Policy();
            policydetails.ClickAddPolicyButton();
            String policyName        = policydetails.setPolicyName();
            String policyDescription = policydetails.setPolicyDescription();

            policydetails.ClickSaveButton();
            policydetails.ClickNoCriteriaDialogButton();
            policydetails.WaitForStatus();
            //Purge created data
            PurgeLinkedData.DeletAdmissionPolicy(policyName);
        }
Esempio n. 13
0
        public void CalculatePremium(PolicyDetails policyDetails)
        {
            if (policyDetails == null)
            {
                throw new ArgumentNullException(nameof(policyDetails));
            }

            try
            {
                policyDetails.Reset(this.StartingPoint);

                this.Validate?.Invoke(policyDetails);
            }
            catch (PolicyValidationException exception)
            {
                policyDetails.Update(exception);
            }
        }
Esempio n. 14
0
        public void Delete_Policy_WIthout_Criteria()
        {
            //Login
            PolicyDetails policydetails = new PolicyDetails();

            //Insert a policy into database
            Guid   policyId          = Guid.NewGuid();
            string policyName        = CoreQueries.GetColumnUniqueString("AdmissionsPolicy", "Name", 10, tenantID);
            string policyDescription = CoreQueries.GetColumnUniqueString("AdmissionsPolicy", "Description", 10, tenantID);

            using (new DataSetup(GetPolicyRecord(policyId, policyName, policyDescription)))
            {
                //Act
                Navigate_To_Policy();
                policydetails.SearchByName(policyName);
                policydetails.ClickDeleteButton();
            }
        }
Esempio n. 15
0
        public async Task <IActionResult> Create([Bind("Policynickname,Policytype,Userid,Policynumber,Inscompanyname,Inscontactname,Inscompanywebsite,Inscontactphone,Inscontactemail")] PolicyDetails policyDetails)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.GetUserAsync(HttpContext.User);

                var currentEmail = user.Email;
                var newUserId    = await _context.PolicyHolder.FirstOrDefaultAsync(p => p.Email == currentEmail);

                policyDetails.Userid = newUserId.Userid;
                _context.Add(policyDetails);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            //ViewData["Userid"] = new SelectList(_context.PolicyHolder, "Userid", "Email", policyDetails.Userid);
            return(View(policyDetails));
        }
Esempio n. 16
0
        public static void ValidateAgeYoungestDriver(PolicyDetails details)
        {
            var youngestDriver = details.Drivers.OrderByDescending(x => x.DateOfBirth).First();
            var age            = youngestDriver.DateOfBirth.GetAgeInYears(details.StartDate);

            if (age < 21)
            {
                throw new PolicyValidationException(DeclineReason.AgeOfYoungestDriver, youngestDriver.Name);
            }

            if (age >= 21 && age <= 25)
            {
                details.Premium += details.Premium / 5M;
            }
            else if (age > 25 && age < 75)
            {
                details.Premium -= details.Premium / 10M;
            }
        }
Esempio n. 17
0
        private void CalculateButtonClick(object sender, EventArgs e)
        {
            var details = new PolicyDetails()
            {
                StartDate = this.startDateTimePicker.Value.Date,
                Drivers   = this.driversList.Items.OfType <Driver>()
            };

            this.premiumCalculator.CalculatePremium(details);

            if (details.IsApproved)
            {
                this.resultTextLabel.Text = $"Approved: Premium is £ {details.Premium.ToString("0.00")}";
            }
            else
            {
                this.resultTextLabel.Text = $"Declined: {details.ReasonDeclined}";
            }
        }
Esempio n. 18
0
        public void Search_Policy_ByName()
        {
            //Login
            PolicyDetails policydetails = new PolicyDetails();

            //Insert a policy into database
            Guid   policyId          = Guid.NewGuid();
            string policyName        = CoreQueries.GetColumnUniqueString("AdmissionsPolicy", "Name", 10, tenantID);
            string policyDescription = CoreQueries.GetColumnUniqueString("AdmissionsPolicy", "Description", 10, tenantID);

            using (new DataSetup(GetPolicyRecord(policyId, policyName, policyDescription)))
            {
                //Act
                Navigate_To_Policy();
                policydetails.ClickAddPolicyButton();
                policydetails.SearchByName(policyName);
            }
            //Purge created data
            PurgeLinkedData.DeletAdmissionPolicy(policyId);
        }
Esempio n. 19
0
        public static void ValidatePreviousClaims(PolicyDetails details)
        {
            const int MaxDriverClaims = 2;
            const int MaxTotalClaims  = 3;

            int totalNumberOfClaims = 0;

            foreach (var driver in details.Drivers.Where(x => x.PreviousClaims != null))
            {
                int driverClaims = 0;

                foreach (var claim in driver.PreviousClaims)
                {
                    ++driverClaims;
                    ++totalNumberOfClaims;

                    if (driverClaims > MaxDriverClaims)
                    {
                        throw new PolicyValidationException(DeclineReason.DriverHasTooManyClaims, driver.Name, MaxDriverClaims);
                    }

                    if (totalNumberOfClaims > MaxTotalClaims)
                    {
                        throw new PolicyValidationException(DeclineReason.PolicyHasTooManyClaims, MaxTotalClaims);
                    }

                    var age = claim.ClaimDate.GetAgeInYears(details.StartDate);

                    if (age < 1)
                    {
                        details.Premium += details.Premium / 5M;
                    }
                    else if (age < 5)
                    {
                        details.Premium += details.Premium / 10M;
                    }
                }
            }
        }
Esempio n. 20
0
        public void Initialize()
        {
            _policyDetailsService = Substitute.For <IPolicyDetailsService>();
            _mapper = Substitute.For <AutoMapper.IMapper>();
            _log    = Substitute.For <Logger.IMapper>();

            _policyDetails = new PolicyDetails

            {
                IDPolicyDetails = 1,
                IDTypeFuel      = 4
            };


            _policyDetailsService.AllPolicys()
            .Returns(Task.FromResult((IEnumerable <PolicyDetails>) new List <PolicyDetails>()
            {
                _policyDetails
            })
                     );

            _policyDetailsService.FindById(Arg.Is <int>(x => x == 1))
            .Returns(_policyDetails);
        }
        public void TestInvalidEntries()
        {
            // Empty policy (no drivers, also then less than minimum 1).
            var policyDetails = new PolicyDetails()
            {
                StartDate = DateTime.Now.AddDays(1).Date,
            };

            this.premiumCalculator.Validate += Validators.ValidateDriverClaimCount;

            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.NoDriversSpecified, policyDetails.DeclineReason);

            // Create drivers, adding one too many.
            List <Driver> drivers = new List <Driver>();

            for (int i = 1; i <= Calculator.MaxDrivers + 1; i++)
            {
                drivers.Add(new Driver()
                {
                    Name        = $"Driver {i}",
                    Occupation  = $"Job {i}",
                    DateOfBirth = new DateTime(1970 + i - 1, i % 12, i % 28)
                });
            }

            policyDetails.Drivers = drivers;

            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.TooManyDriversSpecified, policyDetails.DeclineReason);

            // Remove drivers so that there is no more than the max allowed.
            policyDetails.Drivers = policyDetails.Drivers.Take(Calculator.MaxDrivers);

            // Add claims to each driver, increasing the number each time so that at least one driver has too many.
            foreach (var driver in policyDetails.Drivers)
            {
                int i = driver.DateOfBirth.Year - 1968;

                List <Claim> claims = new List <Claim>();

                do
                {
                    claims.Add(new Claim()
                    {
                        ClaimDate = new DateTime(1980, 1, i)
                    });
                }while (--i > 0);

                driver.PreviousClaims = claims;
            }

            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.TooManyPreviousClaims, policyDetails.DeclineReason);

            // Remove excessive claims.
            foreach (var driver in policyDetails.Drivers
                     .Where(x => (x.PreviousClaims?.Count() ?? 0) > Calculator.MaxClaimsPerDriver))
            {
                driver.PreviousClaims = driver.PreviousClaims.Take(Calculator.MaxClaimsPerDriver);
            }

            this.premiumCalculator.CalculatePremium(policyDetails);

            Assert.AreEqual(DeclineReason.None, policyDetails.DeclineReason);
        }
Esempio n. 22
0
 public void AddPolicyDetails(PolicyDetails policyDetails)
 {
     _context.PolicyDetails.Add(policyDetails);
 }
Esempio n. 23
0
 public void DeletePolicyDetails(PolicyDetails policy)
 {
     _context.PolicyDetails.Remove(policy);
 }
 public void DeletePolicyDetails(PolicyDetails policy)
 {
     _policyDetailsRepository.DeletePolicyDetails(policy);
 }
 public void AddPolicyDetails(PolicyDetails policyDetails)
 {
     _policyDetailsRepository.AddPolicyDetails(policyDetails);
 }