Example #1
0
        private IList <Token> GenerateTokens(Customer customer, Product product)
        {
            var tokens = new List <Token>();

            _messageTokenProvider.AddStoreTokens(tokens);
            _messageTokenProvider.AddCustomerTokens(tokens, customer);
            _messageTokenProvider.AddProductTokens(tokens, product);

            return(tokens);
        }
Example #2
0
        public void SendNewRequestEmail(int requestId, int languageId)
        {
            var request  = _requestService.GetRequestById(requestId);
            var template = _messageTemplateService.GetMessageTemplateByName("ResponceNew");

            template.Subject = template.GetLocalized(x => x.Subject, languageId, false, false);
            template.Body    = template.GetLocalized(x => x.Body, languageId, false, false);
            //template
            var tokens = new List <Token>();

            _messageTokenProvider.AddProductTokens(tokens, _productService.GetProductById(request.ProductId), languageId);
            _messageTokenProvider.AddStoreTokens(tokens);
            _messageTokenProvider.AddNewRequestTokens(tokens, request, languageId);
            string subject = _tokenizer.Replace(template.Subject, tokens, true);
            string body    = _tokenizer.Replace(template.Body, tokens, true);

            string email        = request.Product.Customer.Email;
            var    emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);
            var    from         = new MailAddress(emailAccount.Email, emailAccount.DisplayName);
            var    to           = new MailAddress(email);

            _emailSender.SendEmail(emailAccount, subject, body, from, to);
        }
Example #3
0
        /// <summary>
        /// Sends "email a friend" message
        /// </summary>
        /// <param name="customer">Customer instance</param>
        /// <param name="languageId">Message language identifier</param>
        /// <param name="product">Product instance</param>
        /// <param name="customerEmail">Customer's email</param>
        /// <param name="friendsEmail">Friend's email</param>
        /// <param name="personalMessage">Personal message</param>
        /// <returns>Queued email identifier</returns>
        public virtual int SendProductEmailAFriendMessage(Customer customer, int languageId,
                                                          Product product, string customerEmail, string friendsEmail, string personalMessage)
        {
            if (customer == null)
            {
                throw new ArgumentNullException("customer");
            }

            if (product == null)
            {
                throw new ArgumentNullException("product");
            }

            var store = _storeContext.CurrentStore;

            languageId = EnsureLanguageIsActive(languageId, store.Id);

            var messageTemplate = GetActiveMessageTemplate(MessageTemplateSystemNames.EmailAFriendMessage, store.Id);

            if (messageTemplate == null)
            {
                return(0);
            }

            //email account
            var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId);

            //tokens
            var tokens = new List <Token>();

            _messageTokenProvider.AddStoreTokens(tokens, store, emailAccount);
            _messageTokenProvider.AddCustomerTokens(tokens, customer);
            _messageTokenProvider.AddProductTokens(tokens, product, languageId);
            tokens.Add(new Token("EmailAFriend.PersonalMessage", personalMessage, true));
            tokens.Add(new Token("EmailAFriend.Email", customerEmail));

            //event notification
            _eventPublisher.MessageTokensAdded(messageTemplate, tokens);

            return(SendNotification(messageTemplate, emailAccount, languageId, tokens, friendsEmail, string.Empty));
        }