protected override bool Execute(string data, FormSubmitContext formSubmitContext) { try { var userName = GetFormValue(formSubmitContext, "username"); var email = GetFormValue(formSubmitContext, "email"); var password = GetFormValue(formSubmitContext, "password"); var firstName = GetFormValue(formSubmitContext, "firstname"); var lastName = GetFormValue(formSubmitContext, "lastname"); var fullyQualifiedUserName = $"extranet\\{userName}"; if (!User.Exists(fullyQualifiedUserName)) { Membership.CreateUser(fullyQualifiedUserName, password, email); // Edit the profile information var user = User.FromName(fullyQualifiedUserName, true); var userProfile = user.Profile; userProfile.FullName = $"{firstName} {lastName}"; userProfile.Save(); } else { Sitecore.Diagnostics.Log.Error("User exist", this); return(false); } } catch (MembershipCreateUserException ex) { Sitecore.Diagnostics.Log.Error("Message", ex, this); } return(true); }
protected override bool Execute(T data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); if (data.FieldEmailAddressId == Guid.Empty) { Logger.LogError("Field email address couldn't be empty!"); return(false); } try { if (!formSubmitContext.HasErrors) { ProcessContact(data, formSubmitContext.Fields); } else { Logger.LogWarn($"Form {formSubmitContext.FormId} submitted with errors: {string.Join(", ", formSubmitContext.Errors.Select(t => t.ErrorMessage))}."); } return(true); } catch (Exception ex) { Logger.LogError(ex.Message, ex); return(false); } }
/// <summary> /// Executes the action with the specified <paramref name="data" />. /// </summary> /// <param name="data">The data.</param> /// <param name="formSubmitContext">The form submit context.</param> /// <returns> /// <c>true</c> if the action is executed correctly; otherwise <c>false</c> /// </returns> protected override bool Execute(string data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); if (!formSubmitContext.HasErrors) { var repository = ServiceLocator.ServiceProvider.GetService(typeof(ITeamsRepository)) as ITeamsRepository; var settings = repository.GetSubmitionSettings(); if (settings != null && settings.EmailNotification) { try { Sitecore.MainUtil.SendMail( new System.Net.Mail.MailMessage( settings.EmailFrom, settings.EmailTo, settings.EmailSubject, settings.EmailMessage )); } catch (Exception ex) { Log.Error($"Form {formSubmitContext.FormId} email notification failed.", ex, this); } } } else { Log.Error($"Form {formSubmitContext.FormId} submitted with errors: {string.Join(", ", formSubmitContext.Errors.Select(t => t.ErrorMessage))}.", this); return(false); } return(true); }
protected override bool Execute(RegisterUserData data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(data, nameof(data)); Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); var fields = GetFormFields(data, formSubmitContext); Assert.IsNotNull(fields, nameof(fields)); if (EmailOrPasswordFieldsIsNull(fields)) { return(AbortForm(formSubmitContext)); } var values = fields.GetFieldValues(); if (EmailOrPasswordsIsNull(values)) { return(AbortForm(formSubmitContext)); } // Fall back: If profile id is not provided - we set default: data.ProfileId = "{AE4C4969-5B7E-4B4E-9042-B2D8701CE214}"; var result = Register(values.Email, values.Password, values.FullName, data.ProfileId); if (!result) { return(AbortForm(formSubmitContext)); } return(true); }
/// <summary> /// Gelper method for getting the value from form parameter /// </summary> /// <param name="fieldName"></param> /// <param name="formSubmitContext"></param> /// <returns></returns> //private string GetValue(string fieldName, FormSubmitContext formSubmitContext) //{ // string val = string.Empty; // //var postedFormData = formSubmitContext.PostedFormData; // var field = formSubmitContext.Fields.FirstOrDefault(f => f.Name.Equals(fieldName)); // if (field != null) // { // var property = field.GetType().GetProperty("Value"); // if (property != null) // { // var postedVal = property.GetValue(field); // val = postedVal != null ? postedVal.ToString() : string.Empty; // } // } // return val; //} protected string GetValue(string fieldName, FormSubmitContext formSubmitContext) { IViewModel postedField = formSubmitContext.Fields.FirstOrDefault(f => f.Name.Equals(fieldName)); Assert.ArgumentNotNull((object)postedField, "postedField"); IValueField valueField = postedField as IValueField; PropertyInfo property = postedField.GetType().GetProperty("Value"); object obj; if (property == null) { obj = (object)null; } else { IViewModel viewModel = postedField; obj = property.GetValue((object)viewModel); } object postedValue = obj; if (postedValue == null) { return(string.Empty); } string parsedValue = ParseFieldValue(postedValue); return(parsedValue); }
protected override bool Execute(RegisterUserData data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(data, nameof(data)); Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); var fields = GetFormFields(data, formSubmitContext); Assert.IsNotNull(fields, nameof(fields)); if (EmailOrPasswordFieldsIsNull(fields)) { return(AbortForm(formSubmitContext)); } var values = fields.GetFieldValues(); if (EmailOrPasswordsIsNull(values)) { return(AbortForm(formSubmitContext)); } var result = Register(values.Email, values.Password, values.FullName, data.ProfileId); if (!result) { return(AbortForm(formSubmitContext)); } return(true); }
protected override bool Execute(LoginUserData data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(data, nameof(data)); Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); var fields = GetFormFields(data, formSubmitContext); Assert.IsNotNull(fields, nameof(fields)); if (UsernameOrPasswordFieldIsNull(fields)) { return(AbortForm(formSubmitContext)); } var values = fields.GetFieldValues(); if (UsernameOrPasswordValueIsNull(values)) { return(AbortForm(formSubmitContext)); } var user = Login(values.Username, values.Password); if (user == null) { return(AbortForm(formSubmitContext)); } var id = Context.User.GetUserGuid(); formSubmitContext.RedirectOnSuccess = true; formSubmitContext.RedirectUrl = "/Home"; return(true); }
protected override bool Execute(string data, FormSubmitContext formSubmitContext) { var shortname = ((StringInputViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "ShortName")).Value; var title = ((StringInputViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "Title")).Value; var description = ((StringInputViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "Description")).Value; using (new SecurityDisabler()) { var item = _rootItem.Add(shortname, _templateId); var membersListId = _xconnectService.CreateList($"{shortname} Members"); var organizersListId = _xconnectService.CreateList($"{shortname} Organizers"); item.Editing.BeginEdit(); item["Title"] = title; item["Description"] = description; item["Members"] = new ID(membersListId).ToString(); item["Organizers"] = new ID(organizersListId).ToString(); item.Editing.AcceptChanges(); var email = Sitecore.Analytics.Tracker.Current.Contact.Identifiers.FirstOrDefault(i => i.Source == Constants.XConnectSourceName)?.Identifier; _xconnectService.SubscribeContact(email, new List <Guid> { membersListId, organizersListId }); } return(true); }
protected override bool Execute(string data, FormSubmitContext formSubmitContext) { var itemId = ((StringInputViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "ItemId")).Value; var host = ((StringInputViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "Host")).Value; var title = ((StringInputViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "Title")).Value; var description = ((MultipleLineTextViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "Description")).Value; var date = ((DateViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "Date")).Value; var address = ((MultipleLineTextViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "Address")).Value; using (new SecurityDisabler()) { var rootItem = _database.GetItem(itemId); var item = rootItem.Add(title, _templateId); var attendeesListId = _xconnectService.CreateList($"{item.Name} - {title} Attendees"); item.Editing.BeginEdit(); item["Host"] = host; item["Title"] = title; item["Description"] = description; item["Date"] = Sitecore.DateUtil.ToIsoDate(date.Value); item["Address"] = address; item["Attendees"] = new ID(attendeesListId).ToString(); item.Editing.AcceptChanges(); var email = Sitecore.Analytics.Tracker.Current.Contact.Identifiers.FirstOrDefault(i => i.Source == Constants.XConnectSourceName)?.Identifier; _xconnectService.SubscribeContact(email, new List <Guid> { attendeesListId }); } return(true); }
protected override bool Execute(string data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); Logout(); return(true); }
protected override bool Execute(SubscribeToListData data, FormSubmitContext formSubmitContext) { if (data.ListId == Guid.Empty) { logger.LogWarn("No list was configured."); return(true); //we will not crash on this } var contactId = xDbService.GetCurrentContactId(); if (contactId == null) { logger.LogDebug("The current contact is not yet identified and present in xDB. Please use the identify contact action first."); return(false); } if (data.CheckedRequirementFieldId.HasValue) { var checkedRequirementField = GetFieldById(data.CheckedRequirementFieldId.Value, formSubmitContext.Fields); if (!IsChecked(checkedRequirementField)) { return(true); } } var subscriptionService = ServiceLocator.ServiceProvider.GetService <ISubscriptionService>(); subscriptionService.Subscribe(data.ListId, contactId.Value); return(true); }
protected override bool Execute(T data, FormSubmitContext formSubmitContext) { if (data.MessageId == Guid.Empty) { logger.LogWarn("Empty message id"); return(false); } var toContacts = GetToContacts(data, formSubmitContext); if (toContacts == null || toContacts.Count == 0) { return(false); } try { var customTokens = BuildCustomTokens(data, formSubmitContext); foreach (var to in toContacts) { SendMail(to, customTokens, data.MessageId); } } catch (Exception ex) { logger.LogError(ex.Message, ex); return(false); } return(true); }
protected override bool Execute(SyncToSalesforceCrmActionData data, FormSubmitContext formSubmitContext) { var idenvals = Tracker.Current.Session.Contact.Identifiers; var test = idenvals.FirstOrDefault(x => x.Identifier.ToString() == "extranet"); return(syncToSalesforceCrm.Sync()); }
protected override bool Execute(ContactFormData data, FormSubmitContext formSubmitContext) { var fields = GetFormFields(data, formSubmitContext); var values = fields.GetFieldValues(); return(true); }
protected override bool Execute(string data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); return(Execute(formSubmitContext.Fields)); }
public void ReplaceTokens_FromFormData() { var submitActionDataMock = Substitute.For <ISubmitActionData>(); var formData = new FormSubmitContext("fakeButton"); var today = DateTime.Today; formData.Fields = new List <IViewModel> { new StringInputViewModel { Name = "Text", Value = "Sample Simple Text" }, new StringInputViewModel { Name = "Text2", Value = "" }, new StringInputViewModel { Name = "Text3", Value = null }, new NumberViewModel { Name = "Number", Value = 1.55 }, new ListBoxViewModel { Name = "Single List", Value = new List <string> { "Value 1" } }, new ListBoxViewModel { Name = "Multiple List", Value = new List <string> { "Value 1", "Value 2" } }, new DropDownListViewModel { Name = "Dropdown", Value = new List <string> { "Value 1" } }, new CheckBoxViewModel { Name = "Checkbox", Value = true }, new CheckBoxListViewModel { Name = "Checkbox List", Value = new List <string> { "Check 1", "Check 3" } }, new DateViewModel { Name = "Date", Value = today } }; var tokenText = "[Text]; [Text2]; [Text3]; [Number]; [Single List]; [Multiple List]; [Dropdown]; [Checkbox]; [Checkbox List]; [Date]; This should not be replaced."; var expectedText = $"Sample Simple Text; ; ; 1.55; Value 1; Value 1, Value 2; Value 1; True; Check 1, Check 3; {today}; This should not be replaced."; var invokeObj = new InvokeSendEmailAction(submitActionDataMock); var replacedText = invokeObj.InvokeReplaceTokens(tokenText, formData.Fields); Assert.Equal(expectedText, replacedText); }
private ContactFormFields GetFormFields(ContactFormData data, FormSubmitContext formSubmitContext) { return(new ContactFormFields { Email = FieldHelper.GetFieldById(data.EmailFieldId, formSubmitContext.Fields), Question = FieldHelper.GetFieldById(data.QuestionFieldId, formSubmitContext.Fields) }); }
protected override bool Execute(string data, FormSubmitContext formSubmitContext) { var itemId = ((StringInputViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "ItemId")).Value; formSubmitContext.RedirectUrl = Sitecore.Links.LinkManager.GetItemUrl(Sitecore.Context.Database.GetItem(itemId)); formSubmitContext.RedirectOnSuccess = true; return(true); }
protected override bool Execute(string data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); // create a new team using the data? return(ExecuteMigrate(formSubmitContext.Fields)); }
protected override bool Execute(ExecuteIoTMethodData data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(data, nameof(data)); Assert.ArgumentNotNull(data.DeviceId, nameof(data.DeviceId)); Assert.ArgumentNotNull(data.MethodId, nameof(data.MethodId)); Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); // Method not selected if (data.MethodId == Guid.Empty) { Log.Error($"[ExecuteIoTMethod] Form Submit Action failed - IoTMethod is not selected", this); return(false); } // Payload var payload = string.Empty; if (data.PayloadFieldId.HasValue && data.PayloadFieldId.Value != Guid.Empty) { payload = GetPayloadFromFieldId(formSubmitContext, data.PayloadFieldId.Value); } else if (!string.IsNullOrEmpty(data.PayloadString)) { payload = GetPayloadFromString(formSubmitContext, data.PayloadString); } // Call IoTMethod try { var device = _hubRepository.GetDevice(new ID(data.DeviceId)); if (device == null) { Log.Error($"[ExecuteIoTMethod] Form Submit Action failed - IoTDevice '{data.DeviceId}' does not exists", this); return(false); } var method = _hubRepository.GetMethod(new ID(data.MethodId)); if (method == null) { Log.Error($"[ExecuteIoTMethod] Form Submit Action failed - IoTMethod '{data.MethodId}' does not exists", this); return(false); } var response = method.Invoke(device, payload); Log.Info( $"[ExecuteIoTMethod] Called IoTMethod '{data.MethodId}' at the IoTDevice '{data.DeviceId}' with payload '{payload}' - Return: '{response.RawMessage}'", this); } catch (Exception e) { Log.Error( $"[ExecuteIoTMethod] Form Submit Action failed - Error calling IoTMethod '{data.MethodId}' at the IoTDevice '{data.DeviceId}'", e, this); return(false); } return(true); }
protected override bool Execute(SendEmailModel data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(formSubmitContext, "formSubmitContext"); var fromValue = ReplaceTokens(data.From, formSubmitContext.Fields); var toValue = ReplaceTokens(data.To, formSubmitContext.Fields); var ccValue = ReplaceTokens(data.Cc, formSubmitContext.Fields); var bccValue = ReplaceTokens(data.Bcc, formSubmitContext.Fields); var subjectValue = ReplaceTokens(data.Subject, formSubmitContext.Fields); var messageValue = ReplaceTokens(data.Message, formSubmitContext.Fields); if (string.IsNullOrWhiteSpace(fromValue)) { Logger?.LogError("Send Email Action Error: No FROM address specified."); return(false); } MailMessage mailMessage; try { mailMessage = new MailMessage { From = new MailAddress(fromValue), Subject = !string.IsNullOrWhiteSpace(subjectValue) ? subjectValue : "(No subject)", Body = messageValue, IsBodyHtml = data.IsHtml }; } catch (FormatException ex) { Logger?.LogError($"Send Email Action Error: {fromValue} in the FROM field is not a valid email address.", ex, this); return(false); } if (!AddEmailAddresses(toValue, "To", mailMessage)) { Logger?.LogError("Send Email Action Error: No TO address(es) specified."); return(false); } AddEmailAddresses(ccValue, "CC", mailMessage); AddEmailAddresses(bccValue, "Bcc", mailMessage); try { var customSmtp = ParseSmtpSettings(data.CustomSmtpConfig); var smtpClient = GetSmtpClient(customSmtp); smtpClient.Send(mailMessage); return(true); } catch (Exception ex) { Logger?.LogError($"Send Email Action Error: {ex.Message}", ex, this); return(false); } }
public IList <ContactIdentifier> GetContacts(SendEmailExtendedData data, FormSubmitContext formSubmitContext) { if (string.IsNullOrEmpty(data.FixedEmailAddress)) { logger.LogWarn("To address is empty"); return(new List <ContactIdentifier>()); } return(data.FixedEmailAddress.Split(';').Where(x => !string.IsNullOrEmpty(x)).Select(GetContactIdentifier).ToList()); }
private string GetPayloadFromString(FormSubmitContext formSubmitContext, string dataPayloadString) { foreach (var field in formSubmitContext.Fields) { var fieldName = field.Name; var fieldValue = field.GetValue(); dataPayloadString = dataPayloadString.Replace($"[{fieldName}]", fieldValue); } return(dataPayloadString); }
protected override bool Execute(ShowFormPageData data, FormSubmitContext formSubmitContext) { if (data.FormPageId == null || data.FormPageId == Guid.Empty) { logger.LogWarn("Empty FormPageId"); return(true); //we will not crash on this } ShowFormPageContext.FormPage = data.FormPageId; return(true); }
private string GetFieldValue(FormSubmitContext formSubmitContext, string fieldId) { var field = GetFieldByIdFromSubmitContext(formSubmitContext, fieldId); if (field == null) { return(string.Empty); } return(formsFieldValueResolver.GetStringFieldValue(field) ?? string.Empty); }
protected override bool Execute(string data, FormSubmitContext formSubmitContext) { var userGroupId = Guid.Parse(((StringInputViewModel)formSubmitContext.Fields.FirstOrDefault(f => f.Name == "ListId")).Value); var email = Sitecore.Analytics.Tracker.Current.Contact.Identifiers.FirstOrDefault(i => i.Source == Constants.XConnectSourceName)?.Identifier; _xconnectService.Unsubscribe(email, userGroupId); //it was simply too fast... without the sleeps, xconnect returned the old values when the page reloaded. But hey, who doesn't need a break? System.Threading.Thread.Sleep(2000); return(true); }
protected override bool Execute(IdentifyContactActionData data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(formSubmitContext, "formSubmitContext"); if (data == null || !(data.ReferenceId != Guid.Empty)) { // submit action was not configured properly Log.Error(string.Format("IdentifyContactAction failed: Submit action settings were not configured properly for form {0}.", formSubmitContext.FormId), this); return(false); } //todo: use the data.ReferenceId to retrieve mapping of fields to contact facets var item = Context.Database.GetItem(new ID(data.ReferenceId)); if (item == null || !item.IsDerived(Templates.ContactIdentificationActionSettings.ID)) { // submit action was not configured properly Log.Error(string.Format("IdentifyContactAction failed: Submit action settings for form {0} point to an invalid item.", formSubmitContext.FormId), this); return(false); } ContactFacetData contactFacetData = new ContactFacetData(); foreach (var field in formSubmitContext.Fields) { if (field != null) { var mapSettingsItem = item.Children.FirstOrDefault(x => x[Templates.ContactIdentificationActionMapping.Fields.FacetValue].ToLower() == field.Name.ToLower()); if (mapSettingsItem != null) { Item facetItem; using (new SecurityDisabler()) { facetItem = Sitecore.Configuration.Factory.GetDatabase("core").GetItem(mapSettingsItem[Templates.ContactIdentificationActionMapping.Fields.FacetKey]); } if (facetItem != null) { contactFacetData[facetItem.Name] = field.GetValue(); } } } } if (!string.IsNullOrEmpty(contactFacetData.EmailAddress)) { _trackerService.IdentifyContact(Context.Site.Domain.Name, contactFacetData.EmailAddress); } _contactFacetService.UpdateContactFacets(contactFacetData); return(true); }
/// <summary> /// Replace keywords from the form input data /// </summary> /// <param name="original"></param> /// <param name="formSubmitContext"></param> /// <returns></returns> protected string ReplaceKeywords(string original, FormSubmitContext formSubmitContext) { var returnString = original; foreach (var viewModel in formSubmitContext.Fields) { if (returnString.Contains("{" + viewModel.Name + "}")) { var type = viewModel.GetType(); string valueToReplace = string.Empty; // InputViewModel<string> types if (type.IsSubclassOf(typeof(InputViewModel <string>))) { var field = (InputViewModel <string>)viewModel; valueToReplace = field.Value ?? string.Empty;; } // InputViewModel<List<string>> types else if (type.IsSubclassOf(typeof(InputViewModel <List <string> >))) { var field = (InputViewModel <List <string> >)viewModel; valueToReplace = (field.Value != null) ? string.Join(", ", field.Value) : string.Empty; } // InputViewModel<bool> types else if (type.IsSubclassOf(typeof(InputViewModel <bool>))) { var field = (InputViewModel <bool>)viewModel; valueToReplace = field.Value.ToString(); } // InputViewModel<DateTime?> types else if (type.IsSubclassOf(typeof(InputViewModel <DateTime?>))) { var field = (InputViewModel <DateTime?>)viewModel; valueToReplace = field.Value?.ToString() ?? string.Empty; } // InputViewModel<DateTime> types else if (type.IsSubclassOf(typeof(InputViewModel <DateTime>))) { var field = (InputViewModel <DateTime>)viewModel; valueToReplace = field.Value.ToString(); } // InputViewModel<double?> types else if (type.IsSubclassOf(typeof(InputViewModel <double?>))) { var field = (InputViewModel <double?>)viewModel; valueToReplace = field.Value?.ToString() ?? string.Empty; } returnString = returnString.Replace("{" + viewModel.Name + "}", valueToReplace); } } return(returnString); }
private LoginUserFormFields GetFormFields(LoginUserData data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(data, nameof(data)); Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); return(new LoginUserFormFields { Username = FieldHelper.GetFieldById(data.UserNameFieldId, formSubmitContext.Fields), Password = FieldHelper.GetFieldById(data.PasswordFieldId, formSubmitContext.Fields) }); }
private PackageFormFields GetFormFields(UploadPackageData data, FormSubmitContext formSubmitContext) { Assert.ArgumentNotNull(data, nameof(data)); Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext)); return(new PackageFormFields { PackageName = FieldHelper.GetFieldById(data.PackageNameFieldId, formSubmitContext.Fields), PackageIdentifier = FieldHelper.GetFieldById(data.PackageIdentifierFieldId, formSubmitContext.Fields), File = FieldHelper.GetFieldById(data.FileFieldId, formSubmitContext.Fields) }); }