Пример #1
0
        public async Task <FormElementActionResponse> PerformElementActionAsync(long tenantId, long elementId, FormElementActionRequest request, IPageContext context)
        {
            // Get form settings, domain and current page details
            FormElementSettings settings = await _elementRepository.ReadElementSettingsAsync(tenantId, elementId);

            Page page = await _pageService.ReadPageAsync(tenantId, context.PageId);

            WebDomain domain = await _domainService.ReadDomainByRedirectUrlAsync(tenantId, null);

            Tenant tenant = await _tenantService.ReadTenantAsync(tenantId);

            // Construct email
            IEnumerable <FormFieldLabelValue> labelValues = GetFormFieldLabelValues(settings, request);
            EmailContent content = GetEmailContent(page, labelValues);
            Email        email   = GetEmail(tenant, domain, page, settings, content);

            // Send finished email
            _emailService.Send(email);

            // Return response
            return(new FormElementActionResponse
            {
                Message = settings.SubmittedMessage
            });
        }
Пример #2
0
        private Email GetEmail(Tenant tenant, WebDomain domain, Page page, FormElementSettings settings, EmailContent content)
        {
            // Get to recipients
            IEnumerable <EmailAddress> toAddresses = GetEmailAddresses(new string[] { "\r\n", "\n" }, settings.RecipientEmail);
            IEnumerable <EmailAddress> configurationToAddresses = _emailService.ListToEmailAddresses();

            if (configurationToAddresses != null)
            {
                toAddresses.Concat(configurationToAddresses);
            }

            // Get from (and reply to) email address
            string       host             = GetHost(domain.Url);
            EmailAddress fromEmailAddress = new EmailAddress
            {
                Email       = $"donotreply@{host}",
                DisplayName = tenant.Name
            };

            // Return email to send
            return(new Email
            {
                BccAddresses = _emailService.ListBccEmailAddresses(),
                Content = content,
                FromAddress = fromEmailAddress,
                ReplyToAddress = fromEmailAddress,
                ToAddresses = toAddresses,
            });
        }
Пример #3
0
 private IEnumerable <FormFieldLabelValue> GetFormFieldLabelValues(FormElementSettings settings, FormElementActionRequest request)
 {
     foreach (FormField field in settings.Fields)
     {
         FormFieldValue value = request.Fields.Where(f => f.FormFieldId == field.FormFieldId).FirstOrDefault();
         if (value != null)
         {
             yield return(new FormFieldLabelValue
             {
                 Label = field.Label,
                 Value = value.Value
             });
         }
     }
 }
Пример #4
0
        public async Task <IElementView <FormElementSettings, object> > ReadElementViewAsync(long tenantId, long elementId, IPageContext context)
        {
            FormElementSettings settings = await _elementRepository.ReadElementSettingsAsync(tenantId, elementId);

            if (settings == null)
            {
                return(null);
            }

            return(new ElementView <FormElementSettings, object>
            {
                Settings = settings,
                Content = null
            });
        }