/// <summary> /// Renders a view on screen. /// </summary> /// <returns>A view</returns> public ActionResult Index() { var customerId = String.Empty; string modelCode; var viewModel = new FormViewModel(); if (!String.IsNullOrEmpty(Request.QueryString["c"])) { customerId = Request.QueryString["c"]; var command = new GetCustomerDataCommand(Int32.Parse(customerId)); var customer = command.Execute(); viewModel = new FormViewModel { FirstName = customer.FirstName.ToLower().ToTitleCase(), LastName = customer.LastName.ToLower().ToTitleCase(), Email = customer.Email.ToLower() }; } if (!String.IsNullOrEmpty(Request.QueryString["m"])) { modelCode = Request.QueryString["m"]; } else { var cQuery = customerId != String.Empty ? ("?c=" + customerId) : ""; return(RedirectToAction("Index", "Home", cQuery)); } var result = new List <Title>(); var values = Enum.GetValues(typeof(Salutation)); foreach (var item in values) { result.Add(new Title { Id = (int)item, Name = item.ToString() }); } viewModel.Titles = result.ToList(); viewModel.Code = modelCode; var car = _dbContext.GetCar(modelCode).SingleOrDefault(); if (car != null) { ViewBag.ModelName = car.Name; } ViewBag.UserId = customerId; ViewBag.ModelCode = modelCode; ViewBag.EngineName = car.EngineName; ViewBag.Brand = car.Brand; ViewBag.Url = car.Url; ViewBag.ModelName = car.Name; ViewBag.Model = car.Model; if (!string.IsNullOrEmpty(customerId)) { viewModel.UserId = Int32.Parse(customerId); } return(View(viewModel)); }
/// <summary> /// Sends form data to eMaster and GRG APIs and despatches emails. /// </summary> /// <returns>True/False</returns> /// <exception cref="CarNotFoundException"> /// Car not found. /// or /// Finance option not found. /// </exception> public bool Execute() { var isComplete = false; var dbCar = _dbContext.GetCar(_carModel).FirstOrDefault(); if (dbCar == null) { throw new CarNotFoundException("Car not found."); } var dbFinance = _dbContext.GetCarFinance(dbCar.Id).FirstOrDefault(); if (dbFinance == null) { throw new CarNotFoundException("Finance option not found."); } var car = new Models.NewCar() { Code = dbCar.Code, Color = dbCar.Color, Engine = dbCar.Engine, EngineName = dbCar.EngineName, Model = dbCar.Model, Name = dbCar.Name, Capacity = dbCar.Capacity, Luggage = dbCar.Luggage, Lifestyle = dbCar.Lifestyle, Awd = dbCar.Awd, High = dbCar.High, Convertible = dbCar.Convertible, Price = dbCar.Price, Cost = dbCar.Cost, Speed = dbCar.Speed, Mph = dbCar.Mph, Economy = dbCar.Economy, Terms = dbCar.Terms, Alt_1 = dbCar.Alt1, Alt_2 = dbCar.Alt2, Alt_3 = dbCar.Alt3, APR = dbFinance.APR, Contribution = dbFinance.Contribution, CreditCharge = dbFinance.CreditCharge, Deposit = dbFinance.Deposit, FinalPayment = dbFinance.FinalPayment, PurchaseFee = dbFinance.PurchaseFee, ROI = dbFinance.ROI, Term = dbFinance.Term, FinancePrice = dbFinance.FinancePrice, Payment = dbFinance.Payment, Mpg = Convert.ToDouble(dbCar.Mpg), Url = dbCar.Url, Joke = dbCar.Joke }; _customer.Car = car; var requestUrl = string.Empty; // Send to eMaster API var emResponse = false; if (_customer.UserId != "0") { IProvider eMasterProvider = new EMasterProvider(); var emfunc = new FuncHelper.ExternalApiFunction <Customer, string, bool>(eMasterProvider.SendData); emResponse = FuncHelper.DoFuncWithRetry(emfunc, _customer, out requestUrl, TimeSpan.FromSeconds(2)); } // Send to GRG API IProvider grassRootsProvider = new GrassRootsProvider(); var grgfunc = new FuncHelper.ExternalApiFunction <Customer, string, bool>(grassRootsProvider.SendData); var grgResponse = FuncHelper.DoFuncWithRetry(grgfunc, _customer, out requestUrl, TimeSpan.FromSeconds(2)); Log.Info("Response: " + grgResponse); if (!grgResponse) { var errorEmailSubject = Config.ErrorEmailSubject; var errorEmailDestination = Config.ErrorEmailDestination; var errorEmailText = requestUrl; MandrillHelper.SendEmail(errorEmailDestination, errorEmailSubject, null, "An error occured while processing the following URL:\r\n\r\n" + errorEmailText); } string readHTMLFile; string readTextFile; var subject = Config.EmailMeResultsSubject; using (var reader = new StreamReader(_htmlTemplatePath)) { readHTMLFile = reader.ReadToEnd(); } using (var reader = new StreamReader(_textTemplatePath)) { readTextFile = reader.ReadToEnd(); } var htmlBody = readHTMLFile; var textBody = readTextFile; var assetPath = Config.EmailAssetsDomain + Config.EmailAssetsLocation; var carAssetPath = Config.EmailAssetsDomain + Config.EmailCarAssetsLocation; var carPath = carAssetPath + "/" + _customer.Car.Code + ".jpg"; var colour = Enum.GetValues(typeof(Colour)) .Cast <Colour>() .FirstOrDefault(v => v.GetDescription() == _customer.Car.Color); var hexColour = colour.DisplayName(); htmlBody = htmlBody.Replace("[[Title]]", _customer.Title) .Replace("[[Firstname]]", _customer.FirstName.ToUpper()) .Replace("[[Lastname]]", _customer.LastName.ToUpper()) .Replace("[[CarName]]", (Config.Brand + " " + car.EngineName + " " + car.Model).ToUpper()) .Replace("[[Location]]", assetPath) .Replace("[[CarImage]]", carPath) .Replace("[[Colour]]", hexColour); textBody = textBody.Replace("[[Title]]", _customer.Title) .Replace("[[Firstname]]", _customer.FirstName.ToUpper()) .Replace("[[Lastname]]", _customer.LastName.ToUpper()) .Replace("[[CarName]]", (Config.Brand + " " + car.EngineName + " " + car.Model).ToUpper()) .Replace("[[Location]]", assetPath) .Replace("[[CarImage]]", carPath) .Replace("[[Colour]]", hexColour); MandrillHelper.SendEmail(_customer.Email, subject, htmlBody, textBody); isComplete = true; return(isComplete); }
public ActionResult ResultDetail(string modelCode, string userId) { if (String.IsNullOrEmpty(modelCode)) { return(PartialView("_ResultError")); } var dbCar = _dbContext.GetCar(modelCode).FirstOrDefault(); if (dbCar == null) { return(RedirectToAction("Index", "Home")); } var dbFinance = _dbContext.GetCarFinance(dbCar.Id).FirstOrDefault(); if (dbFinance == null) { return(RedirectToAction("Index", "Home")); } var viewModel = new CarViewModel { Brand = Common.Config.Brand, Code = dbCar.Code, Model = dbCar.Model, Color = dbCar.Color, Engine = dbCar.Engine, Engine_Name = dbCar.EngineName, Url = dbCar.Url, Name = dbCar.Name, Capacity = dbCar.Capacity, Luggage = dbCar.Luggage, Lifestyle = dbCar.Lifestyle, Awd = dbCar.Awd, High = dbCar.High, Convertible = dbCar.Convertible, Price = dbCar.Price, Cost = dbCar.Cost, Speed = dbCar.Speed, Mph = dbCar.Mph, Economy = dbCar.Economy, Alt_1 = dbCar.Alt1, Alt_2 = dbCar.Alt2, Alt_3 = dbCar.Alt3, Terms = dbCar.Terms, Finance = new Models.Finance { Info = dbFinance.Info, Term = dbFinance.Term ?? 0, Payment = dbFinance.Payment ?? 0.0, Price = dbFinance.FinancePrice ?? 0.0, Deposit = dbFinance.Deposit ?? 0.0, Contribution = dbFinance.Contribution ?? 0.0, Purchase_Fee = dbFinance.PurchaseFee ?? 0.0, Final_Payment = dbFinance.FinalPayment ?? 0.0, Credit_Charge = dbFinance.CreditCharge ?? 0.0, ROI = dbFinance.ROI, APR = dbFinance.APR } }; ViewBag.UserId = userId; return(PartialView("_ResultDetail", viewModel)); }