Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        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());
        }