public decimal GetQuote(CarQuote carquote)
        {
            decimal basequote = 50.00m;
            var     agefrombirthdaycalculator = new AgeFromBirthdayCalculator();
            var     age = agefrombirthdaycalculator.getAgeFromBirthday(Convert.ToDateTime(carquote.DOB));
            var     agecostcalculator     = new AgeCostCalculator();
            decimal extraCostBecauseOfAge = agecostcalculator.getExtraCostBecauseOfAge(age);
            decimal quote = basequote + extraCostBecauseOfAge;
            var     caryearcostcalculator = new CarYearCostCalculator();

            quote += caryearcostcalculator.getExtraCostBecauseOfCarYear(Convert.ToInt32(carquote.CarYear));
            var carmodelmakecostcalculator = new CarModelMakeCostCalculator();

            quote += carmodelmakecostcalculator.getCostBecauseOfCarModelAndMake(carquote.CarModel, carquote.CarMake);
            var speedingticketcostcalculator = new SpeedingTicketCostCalculator();

            quote += speedingticketcostcalculator.getCostBecauseOfNumberOfSpeedingTickets(Convert.ToInt32(carquote.NumberSpeedingTickets));
            var duicostcalculator = new DUICostCalculator();

            quote += duicostcalculator.getCostBecauseOfDUI(Convert.ToBoolean(carquote.DUI), quote);
            var fullcoveragecostcalculator = new FullCoverageCostCalculator();

            quote += fullcoveragecostcalculator.getCostBecauseOfCoverageType(carquote.FullOrLiability, quote);
            return(quote);
        }
 public ActionResult EnterCarInfo(string firstname, string lastname, string email, string dob, string caryear, string carmake, string carmodel, string numberspeedingtickets, string fullorliability, string dui)
 {
     if (string.IsNullOrEmpty(firstname) || string.IsNullOrEmpty(lastname) || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(carmake) || string.IsNullOrEmpty(carmodel) || string.IsNullOrEmpty(fullorliability) || string.IsNullOrEmpty(dob) || string.IsNullOrEmpty(caryear) || string.IsNullOrEmpty(numberspeedingtickets) || string.IsNullOrEmpty(dui))
     {
         return(View("~/Views/Shared/Error.cshtml"));
     }
     else
     {
         using (CarQuoteDBEntities db = new CarQuoteDBEntities())
         {
             var carquote = new CarQuote();
             carquote.FirstName             = firstname;
             carquote.LastName              = lastname;
             carquote.Email                 = email;
             carquote.DOB                   = Convert.ToDateTime(dob);
             carquote.CarYear               = Convert.ToInt32(caryear);
             carquote.CarMake               = carmake;
             carquote.CarModel              = carmodel;
             carquote.DUI                   = Convert.ToBoolean(dui);
             carquote.NumberSpeedingTickets = Convert.ToInt32(numberspeedingtickets);
             carquote.FullOrLiability       = fullorliability;
             var quotecalculator = new QuoteCalculator();
             carquote.Quote = quotecalculator.GetQuote(carquote);
             db.CarQuotes.Add(carquote);
             db.SaveChanges();
             return(View("ShowQuote", carquote));
         }
     }
 }
        public ActionResult ProcessCarSeeker(string firstName, string lastName, string emailAddress,
                                             DateTime dateOfBirth, DateTime carYear, string carMake, string carModel,
                                             bool?hasHadDUI, int?speedingTickets, bool?coverageVsLiability)
        {
            using (CarQuotesDBEntities db = new CarQuotesDBEntities())
            {
                var carSeeker = new CarSeeker();

                carSeeker.FirstName    = firstName;
                carSeeker.LastName     = lastName;
                carSeeker.EmailAddress = emailAddress;
                carSeeker.DateOfBirth  = dateOfBirth;
                carSeeker.CarYear      = carYear;
                carSeeker.CarMake      = carMake;
                carSeeker.CarModel     = carModel;

                if (Request.Form["HasHadDUI"] == "Yes")
                {
                    carSeeker.HasHadDUI = true;
                }
                else
                {
                    carSeeker.HasHadDUI = false;
                }

                carSeeker.SpeedingTickets = speedingTickets;

                if (Request.Form["CoverageVsLiability"] == "Full Coverage")
                {
                    carSeeker.CoverageVsLiability = true;
                }
                else
                {
                    carSeeker.CoverageVsLiability = false;
                }

                db.CarSeekers.Add(carSeeker);
                db.SaveChanges();

                var carSeekerProcessed  = new CarSeekerProcessed();
                var carSeekersProcessed = new List <CarSeekerProcessed>();
                int finalQuote          = 50;
                CarQuote.CalculateQuote(carSeeker, out finalQuote);

                carSeekerProcessed.FirstName           = carSeeker.FirstName;
                carSeekerProcessed.LastName            = carSeeker.LastName;
                carSeekerProcessed.EmailAddress        = carSeeker.EmailAddress;
                carSeekerProcessed.DateOfBirth         = carSeeker.DateOfBirth;
                carSeekerProcessed.CarYear             = carSeeker.CarYear;
                carSeekerProcessed.CarMake             = carSeeker.CarMake;
                carSeekerProcessed.CarModel            = carSeeker.CarModel;
                carSeekerProcessed.HasHadDUI           = carSeeker.HasHadDUI;
                carSeekerProcessed.SpeedingTickets     = carSeeker.SpeedingTickets;
                carSeekerProcessed.CoverageVsLiability = carSeeker.CoverageVsLiability;
                carSeekerProcessed.FinalQuote          = finalQuote;

                carSeekersProcessed.Add(carSeekerProcessed);

                return(View("YourQuote", carSeekersProcessed));
            }
        }
        public ActionResult CarQuote(string firstName, string lastName, string emailAddress,
                                     string DOB, int carYear, string carMake, string carModel,
                                     bool DUI, int numberOfSpeedingTickets, string coverageType)
        {
            double quoteFinal = 50; // base price

            // calculate age and modify quote as needed
            DateTime dateOfBirth = DateTime.Parse(DOB);
            DateTime currentDate = DateTime.Now;
            int      age         = currentDate.Year - dateOfBirth.Year;

            if (dateOfBirth.DayOfYear > currentDate.DayOfYear)
            {
                age--;
            }
            if (age < 25 && age >= 18)
            {
                quoteFinal += 25;
            }
            if (age < 18)
            {
                quoteFinal += 100;
            }
            if (age >= 100)
            {
                quoteFinal += 25;
            }

            // modify quote dependent upon car year
            if (carYear < 2000)
            {
                quoteFinal += 25;
            }
            if (carYear >= 2015)
            {
                quoteFinal += 25;
            }

            // modify quote dependent upon car model
            if (carMake.ToLower() == "porsche")
            {
                quoteFinal += 25;
            }
            if (carMake.ToLower() == "porsche" && carModel.ToLower() == "911 carrera")
            {
                quoteFinal += 25;
            }

            // modify quote dependent upon number of speeding tickets
            if (numberOfSpeedingTickets > 0)
            {
                quoteFinal += 10 * numberOfSpeedingTickets;
            }

            // increase price if had DUI in past
            if (DUI)
            {
                quoteFinal *= 1.25;
            }

            // increase again if full coverage
            if (coverageType == "full")
            {
                quoteFinal *= 1.5;
            }

            ViewBag.Quote = Convert.ToDecimal(quoteFinal);


            // add to database
            using (QuotesEntities db = new QuotesEntities())
            {
                var carQuote = new CarQuote();
                carQuote.Quote                   = Convert.ToDecimal(quoteFinal);
                carQuote.DateOfQuote             = currentDate;
                carQuote.FirstName               = firstName;
                carQuote.LastName                = lastName;
                carQuote.EmailAddress            = emailAddress;
                carQuote.DateOfBirth             = dateOfBirth;
                carQuote.CarMake                 = carMake;
                carQuote.CarModel                = carModel;
                carQuote.CarYear                 = carYear;
                carQuote.CoverageType            = coverageType;
                carQuote.DUI                     = DUI.ToString();
                carQuote.NumberOfSpeedingTickets = numberOfSpeedingTickets;

                db.CarQuotes.Add(carQuote);
                db.SaveChanges();
            }

            return(View());
        }
        public ActionResult ProcessQuote(string firstName, string lastName, string emailAddress,
                                         DateTime dateOfBirth, int carYear, string carMake, string carModel,
                                         bool?DUI, int speedingTickets, bool?coverageType)
        {
            using (QuotesEntities db = new QuotesEntities())
            {
                var Quotes = new Insuree();

                Quotes.FirstName    = firstName;
                Quotes.LastName     = lastName;
                Quotes.EmailAddress = emailAddress;
                Quotes.DateOfBirth  = dateOfBirth;
                Quotes.CarYear      = carYear;
                Quotes.CarMake      = carMake;
                Quotes.CarModel     = carModel;

                if (Request.Form["DUI"] == "Yes")
                {
                    Quotes.DUI = true;
                }
                else
                {
                    Quotes.DUI = false;
                }

                Quotes.SpeedingTickets = speedingTickets;

                if (Request.Form["CoverageType"] == "Full Coverage")
                {
                    Quotes.CoverageType = true;
                }
                else
                {
                    Quotes.CoverageType = false;
                }

                db.Insurees.Add(Quotes);
                db.SaveChanges();

                var quoteProcessed  = new QuotesProcessed();
                var quotesProcessed = new List <QuotesProcessed>();
                int finalQuote      = 50;
                CarQuote.CalculateQuote(Quotes, out finalQuote);

                quoteProcessed.FirstName       = Quotes.FirstName;
                quoteProcessed.LastName        = Quotes.LastName;
                quoteProcessed.EmailAddress    = Quotes.EmailAddress;
                quoteProcessed.DateOfBirth     = Quotes.DateOfBirth;
                quoteProcessed.CarYear         = Quotes.CarYear;
                quoteProcessed.CarMake         = Quotes.CarMake;
                quoteProcessed.CarModel        = Quotes.CarModel;
                quoteProcessed.DUI             = Quotes.DUI;
                quoteProcessed.SpeedingTickets = Quotes.SpeedingTickets;
                quoteProcessed.CoverageType    = Quotes.CoverageType;
                quoteProcessed.FinalQuote      = finalQuote;

                quotesProcessed.Add(quoteProcessed);

                return(View("YourQuote", quotesProcessed));
            }
        }