public ActionResult HomeInstallationQuote(int productId)
        {
            Product product = _productService.GetProductById(productId);
            HomeInstallationQuoteModel model = new HomeInstallationQuoteModel();

            if (product != null)
                model.ProductName = product.Name;
            
            return View(HOME_INSTALLATION_QUOTE_VIEW, model);
        }
        public ActionResult HomeInstallationQuote(HomeInstallationQuoteModel Model)
        {
            if (ModelState.IsValid)
            {
                bool successfullySent = SendFreeSampleMessage(Model);

                if (successfullySent)
                    return RedirectToAction("HomeInstallationQuoteSuccessful");
                else
                {
                    ModelState.AddModelError("", _localizationService
                        .GetResource("Plugin.Misc.FreeSample.ErrorOccured"));
                }
            }

            return View(HOME_INSTALLATION_QUOTE_VIEW, Model);
        }
        private IList<Token> GenerateTokens(HomeInstallationQuoteModel Model)
        {
            IList<Token> tokens = new List<Token>();

            string additionalMessage = string.IsNullOrWhiteSpace(Model.AdditionalInfo) ?
                "N/A" : Model.AdditionalInfo;
            string phone = string.IsNullOrWhiteSpace(Model.Phone) ?
                "N/A" : Model.Phone;
            
            string projectStage = GetProjectStageToken(Model);
            projectStage = string.IsNullOrWhiteSpace(projectStage) ? "N/A" : projectStage;

            _messageTokenProvider.AddStoreTokens(tokens);
            tokens.Add(new Token("InstallationQuote.ProductName", Model.ProductName));
            tokens.Add(new Token("InstallationQuote.Name", Model.Name));
            tokens.Add(new Token("InstallationQuote.Email", Model.Email));
            tokens.Add(new Token("InstallationQuote.Phone", phone));
            tokens.Add(new Token("InstallationQuote.PostCode", Model.PostCode));
            tokens.Add(new Token("InstallationQuote.Rooms", Model.Rooms.ToString()));
            tokens.Add(new Token("InstallationQuote.Flooring", Model.Flooring.ToString()));
            tokens.Add(new Token("InstallationQuote.ProjectStage", projectStage));
            tokens.Add(new Token("InstallationQuote.AdditionalInfo", additionalMessage));

            if (Model.FreeCredit)
                tokens.Add(new Token("InstallationQuote.FreeCredit", "Yes"));
            else
                tokens.Add(new Token("InstallationQuote.FreeCredit", "No"));

            return tokens;
        }
 private string GetProjectStageToken(HomeInstallationQuoteModel Model)
 {
     if (Model.ProjectStageId == 1)
         return ("Just looking for price");
     if (Model.ProjectStageId == 2)
         return ("Within next 4 weeks");
     if (Model.ProjectStageId == 3)
         return ("Within next 3 months");
     if (Model.ProjectStageId == 4)
         return ("Within next 6 months");
     else
         return null;
 }
        private bool SendFreeSampleMessage(HomeInstallationQuoteModel Model)
        {
            MessageTemplate messageTemplate =
                GetLocalizedActiveMessageTemplate("HomeInstallationQuote.Form");

            if (messageTemplate == null)
                return false;

            EmailAccount sendTo = GetEmailAccountOfMessageTemplate(messageTemplate,
                _workContext.WorkingLanguage.Id);
            IList<Token> tokens = GenerateTokens(Model);

            _eventPublisher.MessageTokensAdded(messageTemplate, tokens);
            return 0 != SendMessage(messageTemplate, Model.Name, Model.Email, sendTo,
                _workContext.WorkingLanguage.Id, tokens);
        }