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 }); }
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 }); } } }