Esempio n. 1
0
        public Premium Handle(InsuranceQuote insuranceQuote)
        {
            if (!CanHandle(insuranceQuote))
            {
                return(null);
            }

            var premium = _module.Handle(insuranceQuote);

            if (insuranceQuote.Age > 25 && insuranceQuote.Age < 36)
            {
                premium.Risk *= 3;
            }

            if (insuranceQuote.Age > 21 && insuranceQuote.Age < 26)
            {
                premium.Risk *= 4;
            }

            if (insuranceQuote.Age > 16 && insuranceQuote.Age < 22)
            {
                premium.Risk *= 5;
            }
            return(premium);
        }
Esempio n. 2
0
        public ActionResult Admin()
        {
            string queryString = @"SELECT Id, FirstName, LastName, EmailAddress from Quotes";

            List <InsuranceQuote> quotes = new List <InsuranceQuote>();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand commmand = new SqlCommand(queryString, connection);

                connection.Open();

                SqlDataReader reader = commmand.ExecuteReader();

                while (reader.Read())
                {
                    var quote = new InsuranceQuote();
                    quote.Id           = Convert.ToInt32(reader["Id"]);
                    quote.FirstName    = reader["FirstName"].ToString();
                    quote.LastName     = reader["LastName"].ToString();
                    quote.EmailAddress = reader["EmailAddress"].ToString();
                    quotes.Add(quote);
                }
            }

            return(View(quotes));
        }
Esempio n. 3
0
        public void Should_calculate_mercedes_van()
        {
            var quote   = InsuranceQuote.CreateFrom("van", "Mercedes");
            var premium = QuotationEngine.Calculate(quote);

            premium.GetCost().ShouldBe(2000);
        }
Esempio n. 4
0
        public ActionResult Index()
        {
            string queryString = @"SELECT Id, FirstName, LastName, EmailAddress, FinalQuote from Quotes";
            List <InsuranceQuote> insquotes = new List <InsuranceQuote>();

            //Similar to connection block in HomeController method GetQuote(). Connects to database and displays information.
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);

                connection.Open();

                SqlDataReader reader = command.ExecuteReader();

                //Finds and sets each parameter for the cshtml page to print to the screen for the admin.
                while (reader.Read())
                {
                    var insquote = new InsuranceQuote();
                    insquote.Id           = Convert.ToInt32(reader["Id"]);
                    insquote.FirstName    = reader["FirstName"].ToString();
                    insquote.LastName     = reader["LastName"].ToString();
                    insquote.EmailAddress = reader["EmailAddress"].ToString();
                    insquote.FinalQuote   = reader["FinalQuote"].ToString();

                    insquotes.Add(insquote);
                }
            }
            return(View(insquotes));
        }
Esempio n. 5
0
        public void Should_calcualate_audi_van()
        {
            var quote   = InsuranceQuote.CreateFrom("van", "Audi");
            var premium = QuotationEngine.Calculate(quote);

            premium.GetCost().ShouldBe(1500);
        }
        public ActionResult Admin()
        {
            string queryString           = @"SELECT Id, FirstName, LastName, EmailAddress, DateOfBirth, CarYear, CarMake, DUI, SpeedingTickets, CoverageAnswer FROM InsuranceWorld";
            List <InsuranceQuote> quotes = new List <InsuranceQuote>();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);

                connection.Open();

                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    var quote = new InsuranceQuote();
                    quote.Id              = Convert.ToInt32(reader["Id"]);
                    quote.FirstName       = reader["FirstName"].ToString();
                    quote.EmailAddress    = reader["EmailAddress"].ToString();
                    quote.DateOfBirth     = reader["DateOfBirth"].ToString();
                    quote.CarYear         = Convert.ToInt32(reader["CarYear"]);
                    quote.CarMake         = reader["CarMmake"].ToString();
                    quote.CarModel        = reader["CarModel"].ToString();
                    quote.DUI             = reader["DUI"].ToString();
                    quote.SpeedingTickets = Convert.ToInt32(reader["SpeedingTickets"]);
                    quote.CoverageAnswer  = reader["CoverageAnswer"].ToString();
                    quotes.Add(quote);
                }
            }

            return(View(quotes));
        }
 public override Premium ApplyRule(InsuranceQuote insuranceQuote, Premium premium)
 {
     if (insuranceQuote.Manufacturer == "Mercedes")
     {
         premium.Risk = 2;
     }
     return(premium);
 }
Esempio n. 8
0
 public override Premium ApplyRule(InsuranceQuote insuranceQuote, Premium premium)
 {
     if (insuranceQuote.Type == "van")
     {
         premium.BasicPremium = 1000;
     }
     return(premium);
 }
        public override Premium ApplyRule(InsuranceQuote insuranceQuote, Premium factor)
        {
            if (insuranceQuote.Manufacturer == "Audi")
            {
                factor.Risk = 1.5;
            }

            return(factor);
        }
Esempio n. 10
0
        public override Premium ApplyRule(InsuranceQuote insuranceQuote, Premium premium)
        {
            if (_applyCondition(insuranceQuote))
            {
                _action(premium);
            }

            return(premium);
        }
Esempio n. 11
0
        public void should_calculate_tier_4_group()
        {
            var quote = InsuranceQuote.CreateFrom("van", "mercedes");

            quote.Age = 17;
            var premium = QuotationEngine.Calculate(quote);

            premium.GetCost().ShouldBe(10000);
        }
Esempio n. 12
0
        public void Should_calulcate_low_risk_tier_one_group()
        {
            var quote   = InsuranceQuote.CreateFrom("van", "mercedes");
            var premium = QuotationEngine.Calculate(quote);

            quote.Age = 36;

            premium.GetCost().ShouldBe(2000);
        }
        public void Should_raise_error_when_no_modules_to_handle_quote()
        {
            GivenAnInsuranceModule();
            GivenACalculationEngine();

            _insuranceModule.CanHandle(Arg.Any <InsuranceQuote>()).Returns(false);

            InsuranceQuote quote = InsuranceQuote.CreateFrom("car", "audi");

            Assert.Throws <Exception>(() => _calculationEngine.CalculatePremium(quote));
        }
Esempio n. 14
0
        public virtual Premium GetPremium(Premium premium, InsuranceQuote insuranceQuote)
        {
            premium = ApplyRule(insuranceQuote, premium);

            if (!(_nextRule == null))
            {
                premium = _nextRule.GetPremium(premium, insuranceQuote);
            }

            return(premium);
        }
        public void should_invoke_canHandle()
        {
            GivenAnInsuranceModule();
            GivenACalculationEngine();
            GivenNoErrorHandler();

            InsuranceQuote quote = InsuranceQuote.CreateFrom("car", "audi");

            _calculationEngine.CalculatePremium(quote);

            _insuranceModule.Received().CanHandle(quote);
        }
        public virtual Premium Handle(InsuranceQuote insuranceQuote)
        {
            if (!CanHandle(insuranceQuote))
            {
                return(null);
            }

            var premium = new Premium();

            premium = Rule.GetPremium(premium, insuranceQuote);

            return(premium);
        }
        public void Should_invoke_module_handler_if_can_handle()
        {
            GivenAnInsuranceModule();
            GivenACalculationEngine();
            GivenNoErrorHandler();

            _insuranceModule.CanHandle(Arg.Any <InsuranceQuote>()).Returns(true);

            InsuranceQuote quote = InsuranceQuote.CreateFrom("car", "audi");

            _calculationEngine.CalculatePremium(quote);

            _insuranceModule.Received().Handle(Arg.Any <InsuranceQuote>());
        }
        public void Should_not_invoke_handle_if_no_relevant_module()
        {
            GivenAnInsuranceModule();
            GivenACalculationEngine();
            GivenNoErrorHandler();

            _insuranceModule.CanHandle(Arg.Any <InsuranceQuote>()).Returns(false);

            InsuranceQuote quote = InsuranceQuote.CreateFrom("car", "audi");

            _calculationEngine.CalculatePremium(quote);

            _insuranceModule.DidNotReceive().Handle(Arg.Any <InsuranceQuote>());
        }
Esempio n. 19
0
        public ActionResult InsuranceQuote(string firstName, string lastName, string emailAddress, DateTime birthDate, int carYear, string carMake,
                                           string carModel, bool dui, int speedingTicket, bool fullCoverage, decimal quote)
        {
            if (string.IsNullOrEmpty(emailAddress))
            {
                return(View("~/Views/Shared/Error.cshtml"));
            }
            else
            {
                using (QuotesEntities db = new QuotesEntities())
                {
                    quote = 50m;

                    var request = new InsuranceQuote();
                    request.FirstName    = firstName;
                    request.LastName     = lastName;
                    request.EmailAddress = emailAddress;
                    request.DateOfBirth  = birthDate;

                    int age = Convert.ToInt16(DateTime.Now - birthDate);
                    if (age >= 18 && age <= 25 || age > 100)
                    {
                        quote = quote + 25m;
                    }
                    if (age > 18)
                    {
                        quote = quote + 100m;
                    }

                    request.CarYear        = carYear;
                    request.CarMake        = carMake;
                    request.CarModel       = carModel;
                    request.DUI            = dui;
                    request.SpeedingTicket = speedingTicket;
                    request.FullCoverage   = fullCoverage;

                    //needs to create formulas for quote here

                    request.Quote = quote;

                    db.InsuranceQuotes.Add(request);
                    db.SaveChanges();
                }
            }
            return(View("Quote"));
        }
        [HttpPost] // <--- This is called Data Annotations,
        public ActionResult GetQuote(string firstName, string lastName, string emailAddress,
                                     string dateOfBirth, int carYear, string carMake,
                                     string dUI, int speedingTickets, string coverageAnswer)
        {
            string queryString = @"INSERT INTO InsuranceWorld (FirstName, LastName, EmailAddress, DateOfBirth, CarYear, CarMake, DUI, SpeedingTickets, CoverageAnswer";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                command.Parameters.Add("@FirstName", SqlDbType.VarChar);
                command.Parameters.Add("@LastName", SqlDbType.VarChar);
                command.Parameters.Add("@EmailAddress", SqlDbType.VarChar);
                command.Parameters.Add("@DateOfBirth", SqlDbType.VarChar);
                command.Parameters.Add("@CarYear", SqlDbType.Int);
                command.Parameters.Add("@CarMake", SqlDbType.VarChar);
                command.Parameters.Add("@DUI", SqlDbType.VarChar);
                command.Parameters.Add("@SpeedingTickets", SqlDbType.Int);
                command.Parameters.Add("@CoverageAnswer", SqlDbType.VarChar);

                command.Parameters["@FirstName"].Value       = firstName;
                command.Parameters["@LastName"].Value        = lastName;
                command.Parameters["@EmailAddress"].Value    = emailAddress;
                command.Parameters["@DateOfBirth"].Value     = dateOfBirth;
                command.Parameters["@CarYear"].Value         = carYear;
                command.Parameters["@CarMake"].Value         = carMake;
                command.Parameters["@DUI"].Value             = dUI;
                command.Parameters["@SpeedingTickets"].Value = speedingTickets;
                command.Parameters["@CoverageAnswer"].Value  = coverageAnswer;
                int answer = InsuranceQuote.GetQuote(dateOfBirth, carYear, carMake, speedingTickets, dUI, coverageAnswer);
                command.Parameters["@Estimate"].Value = answer;

                connection.Open();
                command.ExecuteNonQuery();
                connection.Close();
            }

            return(View());
        }
Esempio n. 21
0
        public Premium CalculatePremium(InsuranceQuote insuranceQuote)
        {
            Contract.Requires <ArgumentNullException>(insuranceQuote != null);

            bool    handled = false;
            Premium premium = null;

            foreach (var module in _modules)
            {
                if (module.CanHandle(insuranceQuote))
                {
                    premium = module.Handle(insuranceQuote);
                    handled = true;
                    break;
                }
            }

            if (!handled)
            {
                ErrorHandler.RaiseUnknownModuleError(insuranceQuote.Module);
            }

            return(premium);
        }
Esempio n. 22
0
        public ActionResult Quote()
        {
            string queryString = @"SELECT TOP 1 * from Quotes ORDER BY Id DESC";

            var quotes = new List <InsuranceQuote>();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand commmand = new SqlCommand(queryString, connection);

                connection.Open();

                SqlDataReader reader = commmand.ExecuteReader();

                while (reader.Read())
                {
                    var quote = new InsuranceQuote();

                    quote.Id           = Convert.ToInt32(reader["Id"]);
                    quote.FirstName    = reader["FirstName"].ToString();
                    quote.LastName     = reader["LastName"].ToString();
                    quote.EmailAddress = reader["EmailAddress"].ToString();
                    quote.DateOfBirth  = Convert.ToDateTime(reader["DateOfBirth"]);
                    quote.CarYear      = Convert.ToInt32(reader["CarYear"]);
                    quote.CarMake      = reader["CarMake"].ToString();
                    quote.CarModel     = reader["CarModel"].ToString();
                    quote.Dui          = reader["Dui"].ToString();
                    quote.Tickets      = Convert.ToInt32(reader["Tickets"]);
                    quote.Coverage     = reader["Coverage"].ToString();
                    quote.QuoteTotal   = Convert.ToInt32(reader["QuoteTotal"]);
                    quotes.Add(quote);
                }
            }

            return(View(quotes));
        }
 public virtual bool CanHandle(InsuranceQuote insuranceQuote)
 {
     return(_canHandle(insuranceQuote));
 }
Esempio n. 24
0
        public ActionResult SignUp(string firstName, string lastName, string emailAddress, int age, string carMake, string carModel, int carYear, bool dui, bool fullCoverage, int speedTickets)
        {
            if (string.IsNullOrEmpty(firstName) || string.IsNullOrEmpty(lastName) || string.IsNullOrEmpty(emailAddress) || string.IsNullOrEmpty(carMake) || string.IsNullOrEmpty(carModel))
            {
                return(View("There was an error. Please be sure to fill in all values."));
            }

            decimal quote           = 50;
            decimal duiPercentage   = .25m;
            decimal addFullCoverage = .5m;

            if (age < 25)
            {
                quote += 25;
            }

            else if (age < 18)
            {
                quote += 100;
            }

            else if (age > 100)
            {
                quote += 25;
            }


            if (carYear < 2000)
            {
                quote += 25;
            }

            else if (carYear > 2015)
            {
                quote += 25;
            }


            if (carMake == "Porsche")
            {
                quote += 25;
            }

            else if (carMake == "Porsche" && carModel == "Carerra 911")
            {
                quote += 25;
            }


            if (dui == true)
            {
                quote *= duiPercentage;
            }

            if (speedTickets > 0)
            {
                quote += speedTickets * 10;
            }

            if (fullCoverage == true)
            {
                quote *= addFullCoverage;
            }

            else
            {
                using (InsuranceEntities2 db = new InsuranceEntities2())
                {
                    var insuranceQuote = new InsuranceQuote();
                    insuranceQuote.FirstName    = firstName;
                    insuranceQuote.LastName     = lastName;
                    insuranceQuote.EmailAddress = emailAddress;
                    insuranceQuote.carMake      = carMake;
                    insuranceQuote.carYear      = carYear;
                    insuranceQuote.Dui          = dui;
                    insuranceQuote.fullCoverage = fullCoverage;
                    insuranceQuote.speedTicket  = speedTickets;

                    db.Insurees.Add(insuranceQuote);
                    db.SaveChanges();
                }
            }
        }
Esempio n. 25
0
        public ActionResult GetQuote(string firstName, string lastName, string emailAddress, string dateOfBirth, string carYear,
                                     string carMake, string carModel, string dui, string speedingTickets, string fullCoverage, string finalQuote)
        {
            InsuranceQuote newQuote = new InsuranceQuote();

            //if and else if blocks to handle missing or invalid information presented by the user when filling out the form.
            if (string.IsNullOrEmpty(firstName) || string.IsNullOrEmpty(lastName) || string.IsNullOrEmpty(emailAddress) || string.IsNullOrEmpty(dateOfBirth) ||
                string.IsNullOrEmpty(carYear) || string.IsNullOrEmpty(carMake) || string.IsNullOrEmpty(carModel) || string.IsNullOrEmpty(speedingTickets))
            {
                return(View("~/Views/Shared/InputError.cshtml"));
            }
            else if (Convert.ToInt32(carYear) > Convert.ToInt32(DateTime.Now.Year) + 1 || Convert.ToInt32(carYear) < 1908)
            {
                return(View("~/Views/Shared/YearError.cshtml"));
            }
            //final else block to proceed with primary function of the method.
            else
            {
                //Establishing vars used in if statements for quote calculations.
                decimal insQuote     = 50.00m;
                int     vehicleYear  = Convert.ToInt32(carYear);
                int     ticketNumber = Convert.ToInt32(speedingTickets);

                //The following few lines are used to calculate the user's age for quote purposes.
                DateTime now       = DateTime.Now;
                DateTime birthDate = Convert.ToDateTime(dateOfBirth);
                int      age       = now.Year - birthDate.Year;

                if (now.Month < birthDate.Month || (now.Month == birthDate.Month && now.Day < birthDate.Day))
                {
                    age--;
                }
                int userAge = age;

                //If statements used to calculate quote.
                if (userAge < 25)
                {
                    insQuote = insQuote + 25.0m;
                }
                if (userAge < 18)
                {
                    insQuote = insQuote + 100.0m;
                }
                if (userAge > 100)
                {
                    insQuote = insQuote + 25.0m;
                }
                if (vehicleYear < 2000)
                {
                    insQuote = insQuote + 25.0m;
                }
                if (vehicleYear > 2015)
                {
                    insQuote = insQuote + 25.0m;
                }
                if (carMake.ToLower() == "porsche")
                {
                    insQuote = insQuote + 25.0m;
                }
                if (carMake.ToLower() == "porsche" && carModel.ToLower() == "911 carrera")
                {
                    insQuote = insQuote + 25.0m;
                }
                if (ticketNumber > 0)
                {
                    int ticketPrice = 10 * ticketNumber; insQuote = insQuote + ticketPrice;
                }
                if (dui == "Yes")
                {
                    decimal duiPrice = insQuote / 4.0m; insQuote = insQuote + duiPrice;
                }
                if (fullCoverage == "Yes")
                {
                    decimal fullCovPrice = insQuote / 2.0m; insQuote = insQuote + fullCovPrice;
                }
                insQuote   = Math.Round(insQuote, 2);
                finalQuote = insQuote.ToString();

                //This is used as a string in the "FinalQuote" page to display what the user's estimated ins cost per month is.
                newQuote.FinalQuote = finalQuote;

                //This opens a connection to the database and adds the user's information to it.
                string queryString = @"INSERT INTO Quotes (FirstName, LastName, EmailAddress, DateOfBirth, CarYear, CarMake, CarModel, DUI, SpeedingTickets, FullCoverage, FinalQuote) 
                                        VALUES (@FirstName, @LastName, @EmailAddress, @DateOfBirth, @CarYear, @CarMake, @CarModel, @DUI, @SpeedingTickets, @Fullcoverage, @FinalQuote)";

                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    SqlCommand command = new SqlCommand(queryString, connection);
                    command.Parameters.Add("@FirstName", SqlDbType.VarChar);
                    command.Parameters.Add("@LastName", SqlDbType.VarChar);
                    command.Parameters.Add("@EmailAddress", SqlDbType.VarChar);
                    command.Parameters.Add("@DateOfBirth", SqlDbType.Date);
                    command.Parameters.Add("@CarYear", SqlDbType.Int);
                    command.Parameters.Add("@CarMake", SqlDbType.VarChar);
                    command.Parameters.Add("@CarModel", SqlDbType.VarChar);
                    command.Parameters.Add("@SpeedingTickets", SqlDbType.Int);
                    command.Parameters.Add("@DUI", SqlDbType.VarChar);
                    command.Parameters.Add("@FullCoverage", SqlDbType.VarChar);
                    command.Parameters.Add("@FinalQuote", SqlDbType.Money);

                    command.Parameters["@FirstName"].Value       = firstName;
                    command.Parameters["@LastName"].Value        = lastName;
                    command.Parameters["@EmailAddress"].Value    = emailAddress;
                    command.Parameters["@DateOfBirth"].Value     = dateOfBirth;
                    command.Parameters["@CarYear"].Value         = carYear;
                    command.Parameters["@CarMake"].Value         = carMake;
                    command.Parameters["@CarModel"].Value        = carModel;
                    command.Parameters["@SpeedingTickets"].Value = speedingTickets;
                    command.Parameters["@DUI"].Value             = dui;
                    command.Parameters["@FullCoverage"].Value    = fullCoverage;
                    command.Parameters["@FinalQuote"].Value      = finalQuote;

                    connection.Open();
                    command.ExecuteNonQuery();
                    connection.Close();
                }
                //This is the string that will display in FinalQuote.cshtml.
                ViewData["MyQuote"] = newQuote;

                return(View("~/Views/Home/FinalQuote.cshtml"));
            }
        }
Esempio n. 26
0
 public bool CanHandle(InsuranceQuote insuranceQuote)
 {
     return(_module.CanHandle(insuranceQuote));
 }
        public ActionResult SendForm(string firstName, string lastName, string emailAddress, DateTime dateOfBirth, int carYear, string carMake, string carModel, bool dui, int speedTickets, string coverage)
        {
            if (string.IsNullOrEmpty(firstName) || string.IsNullOrEmpty(lastName) || string.IsNullOrEmpty(emailAddress) || dateOfBirth == null || carYear == 0 || string.IsNullOrEmpty(carMake) || string.IsNullOrEmpty(carModel) || string.IsNullOrEmpty(coverage))
            {
                return(View("~/Views/Shared/Error.cshtml"));
            }

            decimal quoteAmount = 50;

            using (var db = new CarInsuranceEntities1())
            {
                var quote = new InsuranceQuote();


                if (DateTime.Now - dateOfBirth < TimeSpan.FromDays(365 * 25))// if user is under 25
                {
                    quoteAmount += 25;
                }
                if (DateTime.Now - dateOfBirth < TimeSpan.FromDays(365 * 18))// if user is under 18
                {
                    quoteAmount += 100;
                }
                else if (DateTime.Now - dateOfBirth > TimeSpan.FromDays(365 * 100))// if user is over 100
                {
                    quoteAmount += 25;
                }

                if (carYear < 2000)
                {
                    quoteAmount += 25;
                }
                else if (carYear > 2015)
                {
                    quoteAmount += 25;
                }

                if (carMake.ToLower().Contains("porsche"))
                {
                    quoteAmount += 25;

                    if (carModel.ToLower().Contains("911 carrera"))
                    {
                        quoteAmount += 25;
                    }
                }

                quoteAmount += speedTickets * 10;

                if (dui)
                {
                    quoteAmount *= (decimal)1.25;
                }

                bool fullCoverage = (coverage == "Full");

                if (fullCoverage)
                {
                    quoteAmount *= (decimal)1.5;
                }

                quote.FirstName    = firstName;
                quote.LastName     = lastName;
                quote.EmailAddress = emailAddress;
                quote.DateOfBirth  = dateOfBirth;
                string CarDate = string.Format("01-01-" + carYear);
                quote.CarYear      = DateTime.Parse(CarDate);
                quote.CarMake      = carMake;
                quote.CarModel     = carModel;
                quote.Dui          = dui;
                quote.SpeedTickets = speedTickets;
                quote.FullCoverage = fullCoverage;
                quote.Quote        = quoteAmount;

                db.InsuranceQuotes.Add(quote);
                db.SaveChanges();
            }

            return(View("Quote", quoteAmount));
        }
Esempio n. 28
0
 public abstract Premium ApplyRule(InsuranceQuote insuranceQuote, Premium premium);