/// <summary> /// Commit message /// Send the messages which are registered /// </summary> /// <param name="asynchronously">Commit message asynchronously</param> /// <returns>Return send result</returns> public static async Task <SendMessageResult> CommitAsync(bool asynchronously = true) { if (CurrentMessageBox?.Messages?.IsNullOrEmpty() ?? true) { return(SendMessageResult.MessageIsNullOrEmpty()); } SendMessageResult sendMessageResult = null; var currentMessages = CurrentMessageBox.Messages.Select(c => c).ToList(); CurrentMessageBox.Clear(); if (asynchronously) { InternalQueueMessageItem messageInternalCommand = new InternalQueueMessageItem(MessageProvider, currentMessages, WorkManager.Current); InternalQueueManager.GetQueue(EZNEWConstants.InternalQueueNames.Message).Enqueue(messageInternalCommand); sendMessageResult = SendMessageResult.SendSuccess(); } else { sendMessageResult = await(MessageProvider?.SendAsync(new SendMessageOptions() { Messages = currentMessages }) ?? Task.FromResult(SendMessageResult.NoProvider())).ConfigureAwait(false); } return(sendMessageResult); }
static SendMessageResult GetSmsOptions(MessageTemplate messageTemplate, MessageInfo message, string smsTag, IEnumerable <string> mobiles, bool asynchronously, out SendSmsOptions sendSmsOptions) { sendSmsOptions = null; if (messageTemplate == null) { throw new ArgumentNullException(nameof(MessageTemplate)); } if (message == null) { throw new ArgumentNullException(nameof(MessageInfo)); } if (string.IsNullOrWhiteSpace(messageTemplate.Content)) { throw new Exception("The message template content is null or empty"); } if (mobiles.IsNullOrEmpty()) { throw new Exception("The mobiles is null or empty"); } var parameterDict = message.Parameters?.ObjectToStringDcitionary(); Dictionary <string, string> templateParameters = GetTemplateParameters(parameterDict); //content var contentResolveResult = ResolveTemplate(messageTemplate.Content, templateParameters); if (!contentResolveResult.Item1 || string.IsNullOrWhiteSpace(contentResolveResult.Item3)) { if (!string.IsNullOrWhiteSpace(contentResolveResult.Item2)) { return(SendMessageResult.NoParameter($"Not set '{contentResolveResult.Item2}' value in the sms body template")); } return(SendMessageResult.MessageIsNullOrEmpty($"The sms body is null or empty")); } //Send sms sendSmsOptions = new SendSmsOptions() { Tag = smsTag, Content = contentResolveResult.Item3, Parameters = parameterDict, Asynchronously = asynchronously, Mobiles = mobiles, }; sendSmsOptions.AddWorkId(message.WorkId); sendSmsOptions.AddTemplateMessageId(message.Id); return(SendMessageResult.SendSuccess()); }
static SendMessageResult GetEmailOptions(MessageTemplate messageTemplate, MessageInfo message, string emailCategory, IEnumerable <string> emails, bool asynchronously, out SendEmailOptions sendEmailOptions) { sendEmailOptions = null; if (messageTemplate == null) { throw new ArgumentNullException(nameof(MessageTemplate)); } if (message == null) { throw new ArgumentNullException(nameof(MessageInfo)); } if (string.IsNullOrWhiteSpace(messageTemplate.Title)) { throw new Exception("The message template title is null or empty"); } if (string.IsNullOrWhiteSpace(messageTemplate.Content)) { throw new Exception("The message template content is null or empty"); } if (emails.IsNullOrEmpty()) { throw new Exception("The emails is null or empty"); } var parameterDict = message.Parameters?.ObjectToStringDcitionary(); Dictionary <string, string> templateParameters = GetTemplateParameters(parameterDict); //title var titleResolveResult = ResolveTemplate(messageTemplate.Title, templateParameters); if (!titleResolveResult.Item1 || string.IsNullOrWhiteSpace(titleResolveResult.Item3)) { if (!string.IsNullOrWhiteSpace(titleResolveResult.Item2)) { return(SendMessageResult.NoParameter($"Not set '{titleResolveResult.Item2}' value in the email title template")); } return(SendMessageResult.MessageIsNullOrEmpty($"The email title is null or empty")); } //content var contentResolveResult = ResolveTemplate(messageTemplate.Content, templateParameters); if (!contentResolveResult.Item1 || string.IsNullOrWhiteSpace(contentResolveResult.Item3)) { if (!string.IsNullOrWhiteSpace(contentResolveResult.Item2)) { return(SendMessageResult.NoParameter($"Not set '{contentResolveResult.Item2}' value in the email body template")); } return(SendMessageResult.MessageIsNullOrEmpty($"The email body is null or empty")); } //Send email sendEmailOptions = new SendEmailOptions() { Category = emailCategory, Content = contentResolveResult.Item3, Subject = titleResolveResult.Item3, Asynchronously = asynchronously, Emails = emails }; sendEmailOptions.AddWorkId(message.WorkId); sendEmailOptions.AddTemplateMessageId(message.Id); return(SendMessageResult.SendSuccess()); }