@@ -92,138 +92,6 @@ public WorkflowMessageService(CommonSettings commonSettings,
9292
9393 #endregion
9494
95- #region Utilities
96-
97- /// <summary>
98- /// Get active message templates by the name
99- /// </summary>
100- /// <param name="messageTemplateName">Message template name</param>
101- /// <param name="storeId">Store identifier</param>
102- /// <returns>
103- /// A task that represents the asynchronous operation
104- /// The task result contains the list of message templates
105- /// </returns>
106- protected virtual async Task < IList < MessageTemplate > > GetActiveMessageTemplatesAsync ( string messageTemplateName , int storeId )
107- {
108- //get message templates by the name
109- var messageTemplates = await _messageTemplateService . GetMessageTemplatesByNameAsync ( messageTemplateName , storeId ) ;
110-
111- //no template found
112- if ( ! messageTemplates ? . Any ( ) ?? true )
113- return new List < MessageTemplate > ( ) ;
114-
115- //filter active templates
116- messageTemplates = messageTemplates . Where ( messageTemplate => messageTemplate . IsActive ) . ToList ( ) ;
117-
118- return messageTemplates ;
119- }
120-
121- /// <summary>
122- /// Get EmailAccount to use with a message templates
123- /// </summary>
124- /// <param name="messageTemplate">Message template</param>
125- /// <param name="languageId">Language identifier</param>
126- /// <returns>
127- /// A task that represents the asynchronous operation
128- /// The task result contains the emailAccount
129- /// </returns>
130- protected virtual async Task < EmailAccount > GetEmailAccountOfMessageTemplateAsync ( MessageTemplate messageTemplate , int languageId )
131- {
132- var emailAccountId = await _localizationService . GetLocalizedAsync ( messageTemplate , mt => mt . EmailAccountId , languageId ) ;
133- //some 0 validation (for localizable "Email account" dropdownlist which saves 0 if "Standard" value is chosen)
134- if ( emailAccountId == 0 )
135- emailAccountId = messageTemplate . EmailAccountId ;
136-
137- var emailAccount = ( await _emailAccountService . GetEmailAccountByIdAsync ( emailAccountId ) ?? await _emailAccountService . GetEmailAccountByIdAsync ( _emailAccountSettings . DefaultEmailAccountId ) ) ??
138- ( await _emailAccountService . GetAllEmailAccountsAsync ( ) ) . FirstOrDefault ( ) ;
139- return emailAccount ;
140- }
141-
142- /// <summary>
143- /// Ensure language is active
144- /// </summary>
145- /// <param name="languageId">Language identifier</param>
146- /// <param name="storeId">Store identifier</param>
147- /// <returns>
148- /// A task that represents the asynchronous operation
149- /// The task result contains the return a value language identifier
150- /// </returns>
151- protected virtual async Task < int > EnsureLanguageIsActiveAsync ( int languageId , int storeId )
152- {
153- //load language by specified ID
154- var language = await _languageService . GetLanguageByIdAsync ( languageId ) ;
155-
156- if ( language == null || ! language . Published )
157- {
158- //load any language from the specified store
159- language = ( await _languageService . GetAllLanguagesAsync ( storeId : storeId ) ) . FirstOrDefault ( ) ;
160- }
161-
162- if ( language == null || ! language . Published )
163- {
164- //load any language
165- language = ( await _languageService . GetAllLanguagesAsync ( ) ) . FirstOrDefault ( ) ;
166- }
167-
168- if ( language == null )
169- throw new Exception ( "No active language could be loaded" ) ;
170-
171- return language . Id ;
172- }
173-
174- /// <summary>
175- /// Get email and name to send email for store owner
176- /// </summary>
177- /// <param name="messageTemplateEmailAccount">Message template email account</param>
178- /// <returns>Email address and name to send email fore store owner</returns>
179- protected virtual async Task < ( string email , string name ) > GetStoreOwnerNameAndEmailAsync ( EmailAccount messageTemplateEmailAccount )
180- {
181- var storeOwnerEmailAccount = _messagesSettings . UseDefaultEmailAccountForSendStoreOwnerEmails ? await _emailAccountService . GetEmailAccountByIdAsync ( _emailAccountSettings . DefaultEmailAccountId ) : null ;
182- storeOwnerEmailAccount ??= messageTemplateEmailAccount ;
183-
184- return ( storeOwnerEmailAccount . Email , storeOwnerEmailAccount . DisplayName ) ;
185- }
186-
187- /// <summary>
188- /// Get email and name to set ReplyTo property of email from customer
189- /// </summary>
190- /// <param name="messageTemplate">Message template</param>
191- /// <param name="customer">Customer</param>
192- /// <returns>Email address and name when reply to email</returns>
193- protected virtual async Task < ( string email , string name ) > GetCustomerReplyToNameAndEmailAsync ( MessageTemplate messageTemplate , Customer customer )
194- {
195- if ( ! messageTemplate . AllowDirectReply )
196- return ( null , null ) ;
197-
198- var replyToEmail = await _customerService . IsGuestAsync ( customer )
199- ? string . Empty
200- : customer . Email ;
201-
202- var replyToName = await _customerService . IsGuestAsync ( customer )
203- ? string . Empty
204- : await _customerService . GetCustomerFullNameAsync ( customer ) ;
205-
206- return ( replyToEmail , replyToName ) ;
207- }
208-
209- /// <summary>
210- /// Get email and name to set ReplyTo property of email from order
211- /// </summary>
212- /// <param name="messageTemplate">Message template</param>
213- /// <param name="order">Order</param>
214- /// <returns>Email address and name when reply to email</returns>
215- protected virtual async Task < ( string email , string name ) > GetCustomerReplyToNameAndEmailAsync ( MessageTemplate messageTemplate , Order order )
216- {
217- if ( ! messageTemplate . AllowDirectReply )
218- return ( null , null ) ;
219-
220- var billingAddress = await _addressService . GetAddressByIdAsync ( order . BillingAddressId ) ;
221-
222- return ( billingAddress . Email , $ "{ billingAddress . FirstName } { billingAddress . LastName } ") ;
223- }
224-
225- #endregion
226-
22795 #region Methods
22896
22997 #region Customer workflow
@@ -2867,6 +2735,147 @@ public virtual async Task<int> SendTestEmailAsync(int messageTemplateId, string
28672735
28682736 #region Common
28692737
2738+ /// <summary>
2739+ /// Get active message templates by the name
2740+ /// </summary>
2741+ /// <param name="messageTemplateName">Message template name</param>
2742+ /// <param name="storeId">Store identifier</param>
2743+ /// <returns>
2744+ /// A task that represents the asynchronous operation
2745+ /// The task result contains the list of message templates
2746+ /// </returns>
2747+ public virtual async Task < IList < MessageTemplate > > GetActiveMessageTemplatesAsync ( string messageTemplateName , int storeId )
2748+ {
2749+ //get message templates by the name
2750+ var messageTemplates = await _messageTemplateService . GetMessageTemplatesByNameAsync ( messageTemplateName , storeId ) ;
2751+
2752+ //no template found
2753+ if ( ! messageTemplates ? . Any ( ) ?? true )
2754+ return new List < MessageTemplate > ( ) ;
2755+
2756+ //filter active templates
2757+ messageTemplates = messageTemplates . Where ( messageTemplate => messageTemplate . IsActive ) . ToList ( ) ;
2758+
2759+ return messageTemplates ;
2760+ }
2761+
2762+ /// <summary>
2763+ /// Get email account to use with a message templates
2764+ /// </summary>
2765+ /// <param name="messageTemplate">Message template</param>
2766+ /// <param name="languageId">Language identifier</param>
2767+ /// <returns>
2768+ /// A task that represents the asynchronous operation
2769+ /// The task result contains the email account
2770+ /// </returns>
2771+ public virtual async Task < EmailAccount > GetEmailAccountOfMessageTemplateAsync ( MessageTemplate messageTemplate , int languageId )
2772+ {
2773+ var emailAccountId = await _localizationService . GetLocalizedAsync ( messageTemplate , mt => mt . EmailAccountId , languageId ) ;
2774+ //some 0 validation (for localizable "Email account" dropdownlist which saves 0 if "Standard" value is chosen)
2775+ if ( emailAccountId == 0 )
2776+ emailAccountId = messageTemplate . EmailAccountId ;
2777+
2778+ var emailAccount = ( await _emailAccountService . GetEmailAccountByIdAsync ( emailAccountId )
2779+ ?? await _emailAccountService . GetEmailAccountByIdAsync ( _emailAccountSettings . DefaultEmailAccountId ) )
2780+ ?? ( await _emailAccountService . GetAllEmailAccountsAsync ( ) ) . FirstOrDefault ( ) ;
2781+
2782+ return emailAccount ;
2783+ }
2784+
2785+ /// <summary>
2786+ /// Ensure language is active
2787+ /// </summary>
2788+ /// <param name="languageId">Language identifier</param>
2789+ /// <param name="storeId">Store identifier</param>
2790+ /// <returns>
2791+ /// A task that represents the asynchronous operation
2792+ /// The task result contains the active language identifier
2793+ /// </returns>
2794+ public virtual async Task < int > EnsureLanguageIsActiveAsync ( int languageId , int storeId )
2795+ {
2796+ //load language by specified ID
2797+ var language = await _languageService . GetLanguageByIdAsync ( languageId ) ;
2798+
2799+ if ( language == null || ! language . Published )
2800+ {
2801+ //load any language from the specified store
2802+ language = ( await _languageService . GetAllLanguagesAsync ( storeId : storeId ) ) . FirstOrDefault ( ) ;
2803+ }
2804+
2805+ if ( language == null || ! language . Published )
2806+ {
2807+ //load any language
2808+ language = ( await _languageService . GetAllLanguagesAsync ( ) ) . FirstOrDefault ( ) ;
2809+ }
2810+
2811+ if ( language == null )
2812+ throw new Exception ( "No active language could be loaded" ) ;
2813+
2814+ return language . Id ;
2815+ }
2816+
2817+ /// <summary>
2818+ /// Get email and name to send email for store owner
2819+ /// </summary>
2820+ /// <param name="messageTemplateEmailAccount">Message template email account</param>
2821+ /// <returns>
2822+ /// A task that represents the asynchronous operation
2823+ /// The task result contains the email address and name to send email for store owner
2824+ /// </returns>
2825+ public virtual async Task < ( string email , string name ) > GetStoreOwnerNameAndEmailAsync ( EmailAccount messageTemplateEmailAccount )
2826+ {
2827+ var storeOwnerEmailAccount = ( _messagesSettings . UseDefaultEmailAccountForSendStoreOwnerEmails
2828+ ? await _emailAccountService . GetEmailAccountByIdAsync ( _emailAccountSettings . DefaultEmailAccountId )
2829+ : null )
2830+ ?? messageTemplateEmailAccount ;
2831+
2832+ return ( storeOwnerEmailAccount . Email , storeOwnerEmailAccount . DisplayName ) ;
2833+ }
2834+
2835+ /// <summary>
2836+ /// Get email and name to set ReplyTo property of email from customer
2837+ /// </summary>
2838+ /// <param name="messageTemplate">Message template</param>
2839+ /// <param name="customer">Customer</param>
2840+ /// <returns>
2841+ /// A task that represents the asynchronous operation
2842+ /// The task result contains the email address and name to reply
2843+ /// </returns>
2844+ public virtual async Task < ( string email , string name ) > GetCustomerReplyToNameAndEmailAsync ( MessageTemplate messageTemplate , Customer customer )
2845+ {
2846+ if ( ! messageTemplate . AllowDirectReply )
2847+ return ( null , null ) ;
2848+
2849+ var replyToEmail = await _customerService . IsGuestAsync ( customer )
2850+ ? string . Empty
2851+ : customer . Email ;
2852+
2853+ var replyToName = await _customerService . IsGuestAsync ( customer )
2854+ ? string . Empty
2855+ : await _customerService . GetCustomerFullNameAsync ( customer ) ;
2856+
2857+ return ( replyToEmail , replyToName ) ;
2858+ }
2859+
2860+ /// <summary>
2861+ /// Get email and name to set ReplyTo property of email from order
2862+ /// </summary>
2863+ /// <param name="messageTemplate">Message template</param>
2864+ /// <param name="order">Order</param>
2865+ /// <returns>
2866+ /// A task that represents the asynchronous operation
2867+ /// The task result contains the email address and name to reply
2868+ /// </returns>
2869+ public virtual async Task < ( string email , string name ) > GetCustomerReplyToNameAndEmailAsync ( MessageTemplate messageTemplate , Order order )
2870+ {
2871+ if ( ! messageTemplate . AllowDirectReply )
2872+ return ( null , null ) ;
2873+
2874+ var billingAddress = await _addressService . GetAddressByIdAsync ( order . BillingAddressId ) ;
2875+
2876+ return ( billingAddress . Email , $ "{ billingAddress . FirstName } { billingAddress . LastName } ") ;
2877+ }
2878+
28702879 /// <summary>
28712880 /// Send notification
28722881 /// </summary>
0 commit comments