/// <summary> /// Sends 'New researcher account submitted' message to a store owner /// </summary> /// <param name="user">User</param> /// <param name="researcher">Researcher</param> /// <param name="languageId">Message language identifier</param> /// <returns>Queued email identifier</returns> public virtual IList <int> SendNewResearcherAccountApplyStoreOwnerNotification(User user, Researcher researcher, int languageId) { if (user == null) { throw new ArgumentNullException(nameof(user)); } if (researcher == null) { throw new ArgumentNullException(nameof(researcher)); } //var store = _storeContext.CurrentStore; //languageId = EnsureLanguageIsActive(languageId, store.Id); //var messageTemplates = GetActiveMessageTemplates(MessageTemplateSystemNames.NewResearcherAccountApplyStoreOwnerNotification, store.Id); var messageTemplates = GetActiveMessageTemplates(MessageTemplateSystemNames.NewResearcherAccountApplyStoreOwnerNotification, 0); if (!messageTemplates.Any()) { return(new List <int>()); } //tokens var commonTokens = new List <Token>(); _messageTokenProvider.AddUserTokens(commonTokens, user); _messageTokenProvider.AddResearcherTokens(commonTokens, researcher); return(messageTemplates.Select(messageTemplate => { //email account var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); var tokens = new List <Token>(commonTokens); //_messageTokenProvider.AddStoreTokens(tokens, store, emailAccount); _messageTokenProvider.AddUserTokens(tokens, user); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var toEmail = emailAccount.Email; var toName = emailAccount.DisplayName; return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName); }).ToList()); }