Пример #1
0
 /// <summary>
 /// Helper function
 /// </summary>
 public static Email FromEntity(EmailForSave e, int tenantId)
 {
     return(new Email(e.ToEmail)
     {
         EmailId = e.Id,
         Subject = e.Subject,
         Body = e.Body,
         TenantId = tenantId
     });
 }
Пример #2
0
        /// <summary>
        /// Helper function.
        /// </summary>
        public static (EmailForSave result, IEnumerable <(string name, byte[] content)> blobs) ToEntity(EmailToSend emailToSend)
        {
            var blobCount = 1 + emailToSend.Attachments.Count(); // To make sliiightly faster
            var blobs     = new List <(string name, byte[] content)>(blobCount);

            string bodyBlobId = null;

            if (!string.IsNullOrWhiteSpace(emailToSend.Body))
            {
                bodyBlobId = Guid.NewGuid().ToString();
                var bodyBlobName    = EmailUtil.EmailBodyBlobName(bodyBlobId);
                var bodyBlobContent = Encoding.UTF8.GetBytes(emailToSend.Body);

                blobs.Add((bodyBlobName, bodyBlobContent));
            }

            var emailForSave = new EmailForSave
            {
                To          = string.Join(';', emailToSend.To ?? new List <string>()),
                Cc          = string.Join(';', emailToSend.Cc ?? new List <string>()),
                Bcc         = string.Join(';', emailToSend.Bcc ?? new List <string>()),
                Subject     = emailToSend.Subject,
                BodyBlobId  = bodyBlobId,
                Id          = emailToSend.EmailId,
                State       = EmailState.Scheduled,
                Attachments = new List <EmailAttachmentForSave>()
            };

            if (emailToSend.Attachments != null)
            {
                foreach (var att in emailToSend.Attachments)
                {
                    // If there is no content, then don't add the attachment
                    var    contentBlobContent = att.Contents;
                    string contentBlobId      = null;

                    if (contentBlobContent != null && contentBlobContent.Length > 0)
                    {
                        contentBlobId = Guid.NewGuid().ToString();
                        var contentBlobName = EmailUtil.EmailAttachmentBlobName(contentBlobId);
                        blobs.Add((contentBlobName, contentBlobContent));
                    }

                    emailForSave.Attachments.Add(new EmailAttachmentForSave
                    {
                        Name          = att.Name,
                        ContentBlobId = contentBlobId
                    });
                }
            }

            return(emailForSave, blobs);
        }