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); }
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)); }
public void Should_calculate_mercedes_van() { var quote = InsuranceQuote.CreateFrom("van", "Mercedes"); var premium = QuotationEngine.Calculate(quote); premium.GetCost().ShouldBe(2000); }
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)); }
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); }
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); }
public override Premium ApplyRule(InsuranceQuote insuranceQuote, Premium premium) { if (_applyCondition(insuranceQuote)) { _action(premium); } return(premium); }
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); }
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)); }
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>()); }
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()); }
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); }
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)); }
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(); } } }
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")); } }
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)); }
public abstract Premium ApplyRule(InsuranceQuote insuranceQuote, Premium premium);