public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { var filters = GetFilters(); var values = new Dictionary <string, string>(); bool allowEmail = true; foreach (var filter in filters) { var rf = record.RecordFields[new Guid(filter.Field)]; allowEmail &= (rf.ValuesAsString(true) == filter.Value); if (!allowEmail) { break; } } if (Negate == true.ToString()) { allowEmail = !allowEmail; } if (allowEmail) { return(base.Execute(record, e)); } return(WorkflowExecutionStatus.Cancelled); }
private void RaiseRecordEvent(RecordEventArgs e) { if (Record != null) { Record(this, e); } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { // TODO: Check password matching and other sanitation and validation var member = new MemberCreationModel { Username = record.GetValue <string>("username"), DisplayName = record.GetValue <string>("username"), Email = record.GetValue <string>("email"), Password = record.GetValue <string>("password"), MemberTypeAlias = "Member" }; try { var memberHelper = new MemberHelper(Current.Services.MemberService); memberHelper.Create(member); } catch (Exception) { return(WorkflowExecutionStatus.Failed); } return(WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { var values = JsonHelper.Deserialize <MappingDto>(Mappings); foreach (var mapping in values.Mappings) { switch (mapping.Alias) { case MappingAliases.JustGiving.EventId: break; } } const string Username = "******"; const string Password = "******"; var page = new PageRequestDto(); if (!JustGivingService.ValidateCredentials(Username, Password)) { return(WorkflowExecutionStatus.Failed); } var pageUrl = CreatePage(Username, Password, page); return(string.IsNullOrEmpty(pageUrl) ? WorkflowExecutionStatus.Failed : WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { try { var data = ParseEmailAndMergeFields(record, this.Fields); if (string.IsNullOrEmpty(data.Item1)) { throw new Exception("Email is missing"); } Task.Run(async() => { await SubscribeMember(data.Item1, data.Item2); var tagNames = ParseTags(this.Tags); if (tagNames.Count() > 0) { await TagMember(data.Item1, tagNames); } }); return(WorkflowExecutionStatus.Completed); } catch (Exception ex) { Umbraco.Core.Logging.LogHelper.Error <string>("error : UFMailchimp FlowType", ex); return(WorkflowExecutionStatus.Failed); } }
public void Constructor_RecordIsProvided_RecordPropertyIsSet() { var recordIndex = 1; var record = new object(); var recordEventArgs = new RecordEventArgs(recordIndex, record); Assert.AreEqual(recordIndex, recordEventArgs.RecordIndex); Assert.AreEqual(record, recordEventArgs.Record); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { //Tokenise message with values in form var message = string.Format("Someone has posted the form '{0}' at {1}{2}", e.Form.Name, record.Created.ToString("dd/MM/yy @ HH:mm:ss"), Environment.NewLine); //Loop over fields & add to our message foreach (var field in record.RecordFields) { //Record field item var fieldItem = field.Value; var fieldName = fieldItem.Field.Caption; var fieldValue = fieldItem.ValuesAsString(); //Add the field name & value to the message string message += string.Format("{0}: {1}{2}", fieldName, fieldValue, Environment.NewLine); } //Ensure Channel starts with # if (!Channel.StartsWith("#")) { Channel = string.Format("#{0}", Channel); } using (var client = new WebClient()) { //Set the form data values var values = new NameValueCollection(); values.Add("channel", Channel); values.Add("token", Token); values.Add("username", Username); values.Add("icon_url", AvatarUrl); values.Add("text", message); try { //Post the data to Slack API var data = client.UploadValues("https://slack.com/api/chat.postMessage", "POST", values); //Try & decode the JSOn string back from Slack API var response = client.Encoding.GetString(data); //Log the response from Slack Umbraco.Core.Logging.LogHelper.Debug<SlackContourWorkflow>("Slack.Contour - Return API Value:" + response); //All is OK return as completed return WorkflowExecutionStatus.Completed; } catch (WebException ex) { //Log the exception/error Umbraco.Core.Logging.LogHelper.Error<SlackContourWorkflow>("Error in Slack.Contour", ex); //Notify Contour that Workflow Failed return WorkflowExecutionStatus.Failed; } } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { using (RecordService rs = new RecordService(record)) { rs.Delete(); } return(WorkflowExecutionStatus.Completed); }
private void StatusChangedHandler_RecordAdded(object sender, RecordEventArgs e) { if (InvokeRequired) { Invoke(new EventHandler <RecordEventArgs>(StatusChangedHandler_RecordAdded), new object[] { sender, e }); } else { AddRecord(e.Record, true); } }
/// <summary> /// Called bu Umbraco Forms to execute the workflow. /// </summary> /// <param name="record">The record.</param> /// <param name="e">The <see cref="RecordEventArgs"/> instance containing the event data.</param> /// <returns></returns> public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { try { if (record == null) { return(WorkflowExecutionStatus.Failed); } if (e == null) { return(WorkflowExecutionStatus.Failed); } // Look for a field with the well-known alias "formEntryID" and insert the unique ids in it var updateRecord = false; foreach (var field in record.RecordFields) { if (field.Value.Alias.ToUpperInvariant() == "FORMENTRYID") { field.Value.Values.Clear(); field.Value.Values.Add(e.Form.Id.ToString()); field.Value.Values.Add(record.UniqueId.ToString()); updateRecord = true; break; } } // Update the record with the id if (updateRecord) { using (RecordStorage recordStorage = new RecordStorage()) { // (note recordStorage.UpdateRecord() doesn't work for the first workflow - see http://issues.umbraco.org/issue/CON-1482) record.RecordData = record.GenerateRecordDataAsJson(); if (record.Id > 0) { record = recordStorage.UpdateRecord(record, e.Form); } else { record = recordStorage.InsertRecord(record, e.Form); } } } } catch (Exception exception) { LogHelper.Error <SaveIdAsFieldWorkflow>(exception.Message, exception); return(WorkflowExecutionStatus.Failed); } return(WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { try { // - get the email value and subscribe string email = record.GetRecordField(EmailFieldName).ValuesAsString(); if (Helpers.Net.IsValidEmail(email)) { IMemberService members = ApplicationContext.Current.Services.MemberService; IMember member = null; // -- create user (if not exists) int foundrecords = 0; members.FindByEmail(email, 1, 1, out foundrecords, Umbraco.Core.Persistence.Querying.StringPropertyMatchType.Exact); if (foundrecords == 0) { // - add member with random password! member = members.CreateWithIdentity(email, email, Guid.NewGuid().ToString(), MemberType); // - generate tracking token if there is a prop on the member for it if (member.HasProperty("trackingToken")) { member.SetValue("trackingToken", Helpers.Tokens.GenerateTrackingToken(email)); members.Save(member); } } // - add to group member = members.GetByEmail(email); MemberGroups = MemberGroups.TrimEnd(";") + ";"; foreach (string group in MemberGroups.Split(';')) { if (!string.IsNullOrWhiteSpace(group)) { //Umbraco.Core.Logging.LogHelper.Info(this.GetType(), string.Format("ASSIGN ROLE (member.Id: '{0}', group: '{1}')", member.Id, group)); members.AssignRole(member.Id, group); members.Save(member); } } } // - all good return(WorkflowExecutionStatus.Completed); } catch (Exception ex) { // - that didn't work out: log it and bubble up failed execution Umbraco.Core.Logging.LogHelper.WarnWithException(this.GetType(), string.Format("Unable add member (EmailFieldName: '{1}', MemberType: '{2}', MemberGroups: '{3}'): {0}", ex.Message, EmailFieldName, MemberType, MemberGroups), ex); return(WorkflowExecutionStatus.Failed); } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { // first we log it Umbraco.Core.Logging.LogHelper.Info(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "the IP " + record.IP + " has submitted a record"); // we can then iterate through the fields var refundApplication = new RefundApplication(); foreach (RecordField rf in record.RecordFields.Values) { // and we can then do something with the collection of values on each field List<object> vals = rf.Values; switch (rf.Alias) { case "title": refundApplication.Title = (string)rf.Values.FirstOrDefault(); break; case "irdNumber": refundApplication.IRDNumber = (string)rf.Values.FirstOrDefault(); break; case "firstName": refundApplication.FirstName = (string)rf.Values.FirstOrDefault(); break; case "lastName": refundApplication.LastName = (string)rf.Values.FirstOrDefault(); break; case "emailAddress": refundApplication.Email = (string)rf.Values.FirstOrDefault(); break; } UpdateRecord(refundApplication); // or just get it as a string //rf.ValuesAsString(); } //// If we altered a field, we can save it using the record storage //RecordStorage store = new RecordStorage(); //store.UpdateRecord(record, e.Form); //store.Dispose(); //// we then invoke the recordservice which handles all record states //and make the service delete the record. //RecordService rs = new RecordService(); //rs.Delete(record, e.Form); ////rs.Dispose(record, e.Form); return WorkflowExecutionStatus.Completed; }
public void StatusProvider_Record(object sender, RecordEventArgs e) { foreach (IStatusChangedHandler subscriber in _subscribers.ToList()) { try { subscriber.Record(new RecordData(e.Record.ID, e.Record.Time, EnumConverter.ConvertEnumValue <RecordStatus, RecordStatusData>(e.Record.Status), e.Record.Folder, e.Record.SFVName, e.Record.RARName, e.Record.RARCount, e.Record.RARSize)); } catch { _subscribers.Remove(subscriber); } } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { if (this.DoNotDeleteFilesOnSubmit != true.ToString()) { List<string> files = new List<string>(); // Retrieve the file locations foreach (var field in e.Record.RecordFields.Where(x => listOfUploadTypes.Contains(x.Value.Field.FieldTypeId))) files.AddRange(field.Value.Values.Select(x => HostingEnvironment.MapPath(x.ToString()))); // We will fail trying to delete the files if they are send as attachments in the mail (file in use exception) // Start a background task that will delete the files after x amount of seconds Task.Run(() => DeleteFilesWithDelay(files)); } // Clear the entry data and replace with a "-" foreach (var field in e.Record.RecordFields) { // Determine by datatype which nullable value we should use switch (field.Value.DataType) { case FieldDataType.Integer: field.Value.Values = new List<object>() { 0 }; break; case FieldDataType.DateTime: field.Value.Values = new List<object>() { new DateTime(1900, 01, 01) }; // cannot use minvalue :/ break; case FieldDataType.Bit: field.Value.Values = new List<object>() { false }; break; case FieldDataType.String: case FieldDataType.LongString: default: field.Value.Values = new List<object>() { "-" }; break; } } //The re-generate the record data e.Record.GenerateRecordDataAsJson(); // Set the state as deleted, this throws an exception if set to deleted, disabled for now //record.State = Umbraco.Forms.Core.Enums.FormState.Deleted; // Set the workflow status as completed return WorkflowExecutionStatus.Completed; }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { try { if (string.IsNullOrEmpty(BrontoAppSettings.SoapApiToken) || string.IsNullOrEmpty(ListAndFieldMapping)) { return(WorkflowExecutionStatus.NotConfigured); } var parseResult = ParseFormToBronto.Contact(record, ListAndFieldMapping); if (parseResult.IsValid()) // i.e. the required bronto contact fields are present { // bronto login var login = LoginSession.Create(BrontoAppSettings.SoapApiToken); var contactsApi = new Contacts(login); var result = contactsApi.Add(parseResult.contact); // Add contact if (result.Items.Count > 0) { if (!result.Items[0].IsError) { return(WorkflowExecutionStatus.Completed); } else { Umbraco.Core.Logging.LogHelper.Error <BrontoAddSignupUserWorkflow>("Error in Bronto Workflow", new Exception(string.Format("Add Contact: Error: {0} for contact: {1}", result.Items[0].ErrorString, parseResult.ContactToString()))); } } else { Umbraco.Core.Logging.LogHelper.Error <BrontoAddSignupUserWorkflow>("Error in Bronto Workflow", new Exception(string.Format("Add Contact: No items in response: {0}", parseResult.ContactToString()))); } } else { Umbraco.Core.Logging.LogHelper.Error <BrontoAddSignupUserWorkflow>("Error in Bronto Workflow", new Exception(string.Format("Parse Contact Error: {0}", parseResult.ContactToString()))); } } catch (Exception ex) { Umbraco.Core.Logging.LogHelper.Error <BrontoAddSignupUserWorkflow>("Error in Bronto Workflow for Forms", ex); } return(WorkflowExecutionStatus.Failed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { var payload = new Payload() { Content = ContentData }; var payloadJson = JsonConvert.SerializeObject(payload); using (var client = new WebClient()) { client.Headers.Add("Content-Type", "application/json"); client.UploadString(DiscordWebhookUrl, "POST", payloadJson); } return(WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { var executeResult = CodeFilesUtil.RenderPartial(CodeFile, record); switch (executeResult.Trim()) { case "Success": return(WorkflowExecutionStatus.Completed); case "Failed": return(WorkflowExecutionStatus.Failed); case "Cancelled": default: return(WorkflowExecutionStatus.Cancelled); } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { // Access the form via the event args and update the target page or content. if (string.IsNullOrWhiteSpace(Redirection)) { return(WorkflowExecutionStatus.NotConfigured); } var form = e.Form; var redirectionSettings = FieldRedirection.FromSettings(Redirection); if (redirectionSettings != null) { // Change the form's GoToPageOnSubmit parameter depending on the model. // Keep checking the validity as we go down the line. var sourceField = form.AllFields.FirstOrDefault(f => f.Id == redirectionSettings.Source); if (sourceField != null) { object sourceValue = null; if (record.RecordFields.ContainsKey(sourceField.Id)) { sourceValue = record.RecordFields[sourceField.Id].Values.FirstOrDefault(); } if (sourceValue != null) { var target = redirectionSettings.Targets.FirstOrDefault(t => t.Result == sourceValue.ToString()); if (target != null) { var umbraco = new UmbracoHelper(UmbracoContext.Current); var node = umbraco.TypedContent(target.Node); if (node != null && node.Id > -1) { // NOTE: This will actually update the form workflow definition loaded into memory (but not persisted to the filesystem)! form.GoToPageOnSubmit = node.Id; } } } } } return(WorkflowExecutionStatus.Completed); }
/// <summary> /// Subscribes the user to the newsletter. /// </summary> public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { // Variables. string email = null; string instancePart = "s1".InvariantEquals(ExactTargetInstance) ? null : "." + ExactTargetInstance; string url = string.Format(ExactTargetSubscribeUrl, instancePart); // Gather field values. foreach (var recordField in record.RecordFields.Values) { object recordValue = recordField.Values.FirstOrDefault(); string strRecordValue = ((recordValue as string) ?? string.Empty).TrimEnd(); switch ((recordField.Field.Caption ?? string.Empty).ToLower()) { case "email": email = strRecordValue; break; default: // Ignore the other fields. break; } } // Put data into key/value list. List<StringPair> formData = new List<StringPair>() { new StringPair("MID", ExactTargetMemberId), new StringPair("lid", ExactTargetListId), new StringPair("SubAction", "sub_add_update"), new StringPair("Email Address", email) }; // Send form. ActionUtility.SafeThread(() => { var startTime = DateTime.Now; var result = NetUtility.GetPostResponse(url, formData); var deltaTime = DateTime.Now.Subtract(startTime).TotalMilliseconds.ToString(); LogHelper.Info(typeof(SubscribeToExactTargetNewsletter), () => string.Format(ExactTargetProfileMessage, deltaTime)); }, ex => { LogHelper.Error(typeof(SubscribeToExactTargetNewsletter), ErrorPostSubmit, ex); }); // Indicate success. return WorkflowExecutionStatus.Completed; }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { Dictionary<Guid, RecordField> dictionary = record.RecordFields; // Get the email KeyValuePair<Guid, RecordField> subscriberEmailField = dictionary.SingleOrDefault(d => d.Key == new Guid(SubscriberEmail)); if (!subscriberEmailField.Equals(default(KeyValuePair<Guid, RecordField>))) { string email = subscriberEmailField.Value.ValuesAsString(); if (!string.IsNullOrEmpty(email)) { // We got an email, lets continue // Get the lists KeyValuePair<Guid, RecordField> subscriberListsField = dictionary.SingleOrDefault(d => d.Key == new Guid(SubscriberLists)); if (!subscriberListsField.Equals(default(KeyValuePair<Guid, RecordField>))) { List<object> selectedLists = subscriberListsField.Value.Values; if (selectedLists.Count > 0) { // The user has selected one or more lists // Lets continue // Get the name - it's optional string name = string.Empty; KeyValuePair<Guid, RecordField> subscriberNameField = dictionary.SingleOrDefault(d => d.Key == new Guid(SubscriberName)); if (!subscriberNameField.Equals(default(KeyValuePair<Guid, RecordField>))) { name = subscriberNameField.Value.ValuesAsString(); } Api api = new Api(); foreach (object o in selectedLists) { string listId = (string) o; if (!string.IsNullOrEmpty(listId)) { api.AddSubscriber(email, name, listId); } } } } } } return WorkflowExecutionStatus.Completed; }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { Dictionary <Guid, RecordField> dictionary = record.RecordFields; // Get the email KeyValuePair <Guid, RecordField> subscriberEmailField = dictionary.SingleOrDefault(d => d.Key == new Guid(SubscriberEmail)); if (!subscriberEmailField.Equals(default(KeyValuePair <Guid, RecordField>))) { string email = subscriberEmailField.Value.ValuesAsString(); if (!string.IsNullOrEmpty(email)) { // We got an email, lets continue // Get the lists KeyValuePair <Guid, RecordField> subscriberListsField = dictionary.SingleOrDefault(d => d.Key == new Guid(SubscriberLists)); if (!subscriberListsField.Equals(default(KeyValuePair <Guid, RecordField>))) { List <object> selectedLists = subscriberListsField.Value.Values; if (selectedLists.Count > 0) { // The user has selected one or more lists // Lets continue // Get the name - it's optional string name = string.Empty; KeyValuePair <Guid, RecordField> subscriberNameField = dictionary.SingleOrDefault(d => d.Key == new Guid(SubscriberName)); if (!subscriberNameField.Equals(default(KeyValuePair <Guid, RecordField>))) { name = subscriberNameField.Value.ValuesAsString(); } Api api = new Api(); foreach (object o in selectedLists) { string listId = (string)o; if (!string.IsNullOrEmpty(listId)) { api.AddSubscriber(email, name, listId); } } } } } } return(WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { try { if (ValidateSettings().Any() || string.IsNullOrWhiteSpace(CampaignMonitorConfiguration.ApiKey) || string.IsNullOrWhiteSpace(CampaignMonitorConfiguration.ClientId)) { return(WorkflowExecutionStatus.NotConfigured); } var listMapping = JsonConvert.DeserializeObject <ListMappingModel>(ListMapping); var subscribeString = GetMapAsString(listMapping, record, "Subscribe"); var subscribe = !string.IsNullOrWhiteSpace(subscribeString) && subscribeString != "False"; if (!subscribe) { return(WorkflowExecutionStatus.Completed); } var emailAddress = GetMapAsString(listMapping, record, "Email Address"); if (string.IsNullOrWhiteSpace(emailAddress)) { return(WorkflowExecutionStatus.Completed); } var name = GetMapAsString(listMapping, record, "Name"); var lastName = GetMapAsString(listMapping, record, "Lastname"); if (!string.IsNullOrWhiteSpace(lastName)) { name += " " + lastName; } var auth = new ApiKeyAuthenticationDetails(CampaignMonitorConfiguration.ApiKey); var subscriber = new Subscriber(auth, listMapping.ListId); subscriber.Add(emailAddress, name, listMapping.Mappings. Where(m => m.ListField.StartsWith("[")).Select(m => { return(new SubscriberCustomField { Key = m.ListField, Value = GetFieldValue(record, m) }); }).ToList(), subscribe); return(WorkflowExecutionStatus.Completed); } catch (Exception ex) { LogHelper.Error <PushToMarketing>("Failed to send users record to marketing", ex); return(WorkflowExecutionStatus.Failed); } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { try { var template = $"~/Views/Partials/{TemplateName}"; var emailBody = File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath(template)) .Replace("[[SUBJECT]]", Subject) .Replace("[[HEADING]]", Heading) .Replace("[[BODY]]", Message); _smtpService.SendEmail(emailBody, ToEmail, FromEmail, FromName, Subject, ReplyTo, Bcc, Cc); return(WorkflowExecutionStatus.Completed); } catch (Exception ex) { _logger.Error(typeof(CustomEmailWorkflow), ex); return(WorkflowExecutionStatus.Failed); } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { try { // - get the email value and subscribe string email = record.GetRecordField(EmailFieldName).ValuesAsString(); if (Api.IsValidEmail(email)) { Api.Subscribe(email, int.Parse(this.MailingListId)); } // - all good return(WorkflowExecutionStatus.Completed); } catch (Exception ex) { // - that didn't work out: log it and bubble up failed execution Umbraco.Core.Logging.LogHelper.WarnWithException(this.GetType(), string.Format("Unable to subscribe e-mail (EmailFieldName: '{1}', MailingListId: '{2}'): {0}", ex.Message, EmailFieldName, MailingListId), ex); return(WorkflowExecutionStatus.Failed); } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { // first we log it Current.Logger.Debug <TestWorkflow>("the IP " + record.IP + " has submitted a record"); // we can then iterate through the fields foreach (RecordField rf in record.RecordFields.Values) { // and we can then do something with the collection of values on each field List <object> vals = rf.Values; // or get it as a string rf.ValuesAsString(); } //Change the state record.State = FormState.Approved; Current.Logger.Debug <TestWorkflow>("The record with unique id {RecordId} that was submitted via the Form {FormName} with id {FormId} has been changed to {RecordState} state", record.UniqueId, e.Form.Name, e.Form.Id, "approved"); return(WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { /* * if (!string.IsNullOrEmpty(Checkboxlist)) * { * Dictionary<Guid, RecordField> dictionary = record.RecordFields; * // Get the checkboxlist field * KeyValuePair<Guid, RecordField> checkboxlistField = dictionary.SingleOrDefault(d => d.Key == new Guid(Checkboxlist)); * if (!checkboxlistField.Equals(default(KeyValuePair<Guid, RecordField>))) * { * Field field = checkboxlistField.Value.Field; * FieldType type = field.FieldType; * Guid guid = field.FieldTypeId; * if (guid.Equals(new Guid("FAB43F20-A6BF-11DE-A28F-9B5755D89593"))) * { * CheckBoxList cbl = (CheckBoxList) type; * WebControl control = cbl.Editor; * } * } * } */ return(WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { var values = JsonHelper.Deserialize<MappingDto>(Mappings); foreach (var mapping in values.Mappings) { switch (mapping.Alias) { case MappingAliases.JustGiving.EventId: break; } } const string Username = "******"; const string Password = "******"; var page = new PageRequestDto(); if (!JustGivingService.ValidateCredentials(Username, Password)) { return WorkflowExecutionStatus.Failed; } var pageUrl = CreatePage(Username, Password, page); return string.IsNullOrEmpty(pageUrl) ? WorkflowExecutionStatus.Failed : WorkflowExecutionStatus.Completed; }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { /* if (!string.IsNullOrEmpty(Checkboxlist)) { Dictionary<Guid, RecordField> dictionary = record.RecordFields; // Get the checkboxlist field KeyValuePair<Guid, RecordField> checkboxlistField = dictionary.SingleOrDefault(d => d.Key == new Guid(Checkboxlist)); if (!checkboxlistField.Equals(default(KeyValuePair<Guid, RecordField>))) { Field field = checkboxlistField.Value.Field; FieldType type = field.FieldType; Guid guid = field.FieldTypeId; if (guid.Equals(new Guid("FAB43F20-A6BF-11DE-A28F-9B5755D89593"))) { CheckBoxList cbl = (CheckBoxList) type; WebControl control = cbl.Editor; } } } */ return WorkflowExecutionStatus.Completed; }
private void recordAdded(object sender, RecordEventArgs ea) { if( recordToNode.ContainsKey(ea.Record[ParentKey] as AbstractRecord) ) { Widget parentNode = recordToNode[ea.Record[ParentKey] as AbstractRecord]; AddChildNode( parentNode, ea.Record ); } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { return WorkflowExecutionStatus.Completed; }
private void RecordAdded(object sender, RecordEventArgs e) { RaiseRecordEvent(e); }
private async void OnRecordRemoved(object sender, RecordEventArgs e) => await repository.Records.RemoveAsync(e.RecordModel.ToEntity());
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { MailAddress FromMailAddress; if (string.IsNullOrEmpty(this.FromEmail)) { var settings = UmbracoConfig.For.UmbracoSettings(); FromMailAddress = new MailAddress(settings.Content.NotificationEmailAddress); } else { string fromEmailField = this.FromEmail; string fromNameField = ""; bool fromEmailFound = false; bool fromNameFound = false; try { foreach (RecordField rf in record.RecordFields.Values) { string refinedCaption = "{" + rf.Field.Caption.ToLower().Replace(" ", "") + "}"; if (!fromEmailFound && refinedCaption == this.FromEmail.ToLower()) { fromEmailField = rf.ValuesAsString(); fromEmailFound = true; } else if (!fromNameFound && !String.IsNullOrEmpty(this.FromName) && refinedCaption == this.FromName.ToLower()) { fromNameField = rf.ValuesAsString(); fromNameFound = true; } //dont go any further to not waste time looking for something already there if (fromEmailFound && fromNameFound) { break; } } if (fromNameFound) { FromMailAddress = new MailAddress(fromEmailField, fromNameField); } else if (!string.IsNullOrEmpty(this.FromName)) { FromMailAddress = new MailAddress(fromEmailField, this.FromName); } else { FromMailAddress = new MailAddress(fromEmailField); } } catch (Exception ex) { var settings = UmbracoConfig.For.UmbracoSettings(); FromMailAddress = new MailAddress(settings.Content.NotificationEmailAddress); } } var mailMessage = new MailMessage { From = FromMailAddress, Subject = this.Subject, ReplyTo = FromMailAddress, IsBodyHtml = true, BodyEncoding = Encoding.UTF8 }; if (this.Email.Contains(";")) { foreach (string email in this.Email.Split(';')) { mailMessage.To.Add(email.Trim()); } } else { mailMessage.To.Add(this.Email); } XmlNode xml = record.ToXml(new System.Xml.XmlDocument()); // we will by default set the body to the record xml so if no xslt file is // present we atleast get the raw data. string result = xml.OuterXml; if (!string.IsNullOrEmpty(this.XsltFile)) { result = XsltHelper.TransformXML(xml, this.XsltFile, null); } mailMessage.Body = "<p>" + Message + "</p><br />" + result; var smtpClient = new SmtpClient { EnableSsl = false }; if (WebConfigurationManager.AppSettings.AllKeys.Contains("contourContribUseSsl") && WebConfigurationManager.AppSettings["contourContribUseSsl"].ToLower() == true.ToString().ToLower()) { smtpClient.EnableSsl = true; } smtpClient.Send(mailMessage); return WorkflowExecutionStatus.Completed; }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { Dictionary<Guid, RecordField> dictionary = record.RecordFields; // Get the to emails List<string> toEmails = new List<string>(); if (!string.IsNullOrEmpty(RecipientEmail)) { KeyValuePair<Guid, RecordField> subscriberEmailField = dictionary.SingleOrDefault(d => d.Key == new Guid(RecipientEmail)); if (!subscriberEmailField.Equals(default(KeyValuePair<Guid, RecordField>))) { string email = subscriberEmailField.Value.ValuesAsString().Trim().ToLower(); // Some simple validation. The validation should be in the form if (SimpleEmailValidate(email)) { toEmails.Add(email); } } } if (!string.IsNullOrEmpty(ReceiverEmails)) { string[] receiverEmails = ReceiverEmails.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string email in receiverEmails) { if (SimpleEmailValidate(email)) { toEmails.Add(email.Trim().ToLower()); } } } // Shoud we send any emails? if (toEmails.Count > 0) { System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); message.From = new System.Net.Mail.MailAddress(ReplyTo); ; message.Subject = Subject; message.Body = ParseBody(Message, dictionary, record); foreach (string email in toEmails) { message.To.Clear(); message.To.Add(email); SmtpClient client = new SmtpClient(); try { client.Send(message); } catch (Exception exception) { Log.Add(LogTypes.Error, -1, string.Format("Upac.ContourExtensions.Workflows.SendEmail could not send email to {0}", email)); Log.Add(LogTypes.Error, -1, string.Format("Upac.ContourExtensions.Workflows.SendEmail Exception\n\n {0}", exception.InnerException)); } } } return WorkflowExecutionStatus.Completed; }
public override Umbraco.Forms.Core.Enums.WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { var maps = JsonConvert.DeserializeObject <MemberMapper>(Fields); Dictionary <string, string> mappings = new Dictionary <string, string>(); string nameMapping = "NodeName"; string loginMapping = "Login"; string emailMapping = "Email"; string passwordMapping = "Password"; if (!string.IsNullOrEmpty(maps.NameStaticValue)) { nameMapping = maps.NameStaticValue; } else if (!string.IsNullOrEmpty(maps.NameField)) { nameMapping = record.RecordFields[new Guid(maps.NameField)].ValuesAsString(false); } if (!string.IsNullOrEmpty(maps.LoginStaticValue)) { loginMapping = maps.LoginStaticValue; } else if (!string.IsNullOrEmpty(maps.LoginField)) { loginMapping = record.RecordFields[new Guid(maps.LoginField)].ValuesAsString(false); } if (!string.IsNullOrEmpty(maps.EmailStaticValue)) { emailMapping = maps.EmailStaticValue; } else if (!string.IsNullOrEmpty(maps.EmailField)) { emailMapping = record.RecordFields[new Guid(maps.EmailField)].ValuesAsString(false); } if (!string.IsNullOrEmpty(maps.PasswordStaticValue)) { passwordMapping = maps.PasswordStaticValue; } else if (!string.IsNullOrEmpty(maps.PasswordField)) { passwordMapping = record.RecordFields[new Guid(maps.PasswordField)].ValuesAsString(false); } foreach (var map in maps.Properties) { if (map.HasValue()) { var val = map.StaticValue; if (!string.IsNullOrEmpty(map.Field)) { val = record.RecordFields[new Guid(map.Field)].ValuesAsString(false); } mappings.Add(map.Alias, val); } } MemberType mt = MemberType.GetByAlias(maps.MemTypeAlias); if (mt != null) { Member m = Member.MakeNew(nameMapping, loginMapping, emailMapping, mt, new umbraco.BusinessLogic.User(0)); m.Password = passwordMapping; foreach (Property p in m.getProperties) { try { if (mappings.ContainsKey(p.PropertyType.Alias)) { switch (((BaseDataType)p.PropertyType.DataTypeDefinition.DataType).DBType) { case DBTypes.Date: p.Value = DateTime.Parse(mappings[p.PropertyType.Alias]); break; case DBTypes.Integer: string v = mappings[p.PropertyType.Alias]; if (v.ToLower() == "true" || v.ToLower() == "false") { p.Value = bool.Parse(v); } else { p.Value = int.Parse(mappings[p.PropertyType.Alias]); } break; default: p.Value = mappings[p.PropertyType.Alias]; break; } } } catch (Exception ex) { LogHelper.Error <SaveAsUmbracoMember>(ex); } } m.XmlGenerate(new System.Xml.XmlDocument()); m.Save(); //store record id and member id //SettingsStorage ss = new SettingsStorage(); //ss.InsertSetting(record.Id, "SaveAsUmbracoMemberCreatedMemberID", m.Id.ToString()); //ss.Dispose(); } return(Umbraco.Forms.Core.Enums.WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { Dictionary <Guid, RecordField> dictionary = record.RecordFields; // Get the to emails List <string> toEmails = new List <string>(); if (!string.IsNullOrEmpty(RecipientEmail)) { KeyValuePair <Guid, RecordField> subscriberEmailField = dictionary.SingleOrDefault(d => d.Key == new Guid(RecipientEmail)); if (!subscriberEmailField.Equals(default(KeyValuePair <Guid, RecordField>))) { string email = subscriberEmailField.Value.ValuesAsString().Trim().ToLower(); // Some simple validation. The validation should be in the form if (SimpleEmailValidate(email)) { toEmails.Add(email); } } } if (!string.IsNullOrEmpty(ReceiverEmails)) { string[] receiverEmails = ReceiverEmails.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string email in receiverEmails) { if (SimpleEmailValidate(email)) { toEmails.Add(email.Trim().ToLower()); } } } // Shoud we send any emails? if (toEmails.Count > 0) { System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); message.From = new System.Net.Mail.MailAddress(ReplyTo);; message.Subject = Subject; message.Body = ParseBody(Message, dictionary, record); foreach (string email in toEmails) { message.To.Clear(); message.To.Add(email); SmtpClient client = new SmtpClient(); try { client.Send(message); } catch (Exception exception) { Log.Add(LogTypes.Error, -1, string.Format("Upac.ContourExtensions.Workflows.SendEmail could not send email to {0}", email)); Log.Add(LogTypes.Error, -1, string.Format("Upac.ContourExtensions.Workflows.SendEmail Exception\n\n {0}", exception.InnerException)); } } } return(WorkflowExecutionStatus.Completed); }
public override Umbraco.Forms.Core.Enums.WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { var maps = JsonConvert.DeserializeObject<MemberMapper>(Fields); Dictionary<string, string> mappings = new Dictionary<string, string>(); string nameMapping = "NodeName"; string loginMapping = "Login"; string emailMapping = "Email"; string passwordMapping = "Password"; if (!string.IsNullOrEmpty(maps.NameStaticValue)) nameMapping = maps.NameStaticValue; else if (!string.IsNullOrEmpty(maps.NameField)) nameMapping = record.RecordFields[new Guid(maps.NameField)].ValuesAsString(false); if (!string.IsNullOrEmpty(maps.LoginStaticValue)) loginMapping = maps.LoginStaticValue; else if (!string.IsNullOrEmpty(maps.LoginField)) loginMapping = record.RecordFields[new Guid(maps.LoginField)].ValuesAsString(false); if (!string.IsNullOrEmpty(maps.EmailStaticValue)) emailMapping = maps.EmailStaticValue; else if (!string.IsNullOrEmpty(maps.EmailField)) emailMapping = record.RecordFields[new Guid(maps.EmailField)].ValuesAsString(false); if (!string.IsNullOrEmpty(maps.PasswordStaticValue)) passwordMapping = maps.PasswordStaticValue; else if (!string.IsNullOrEmpty(maps.PasswordField)) passwordMapping = record.RecordFields[new Guid(maps.PasswordField)].ValuesAsString(false); foreach (var map in maps.Properties) { if (map.HasValue()) { var val = map.StaticValue; if (!string.IsNullOrEmpty(map.Field)) val = record.RecordFields[new Guid(map.Field)].ValuesAsString(false); mappings.Add(map.Alias, val); } } MemberType mt = MemberType.GetByAlias(maps.MemTypeAlias); if (mt != null) { Member m = Member.MakeNew(nameMapping, loginMapping, emailMapping, mt, new umbraco.BusinessLogic.User(0)); m.Password = passwordMapping; foreach (Property p in m.getProperties) { try { if (mappings.ContainsKey(p.PropertyType.Alias)) { switch (((BaseDataType)p.PropertyType.DataTypeDefinition.DataType).DBType) { case DBTypes.Date: p.Value = DateTime.Parse(mappings[p.PropertyType.Alias]); break; case DBTypes.Integer: string v = mappings[p.PropertyType.Alias]; if (v.ToLower() == "true" || v.ToLower() == "false") p.Value = bool.Parse(v); else p.Value = int.Parse(mappings[p.PropertyType.Alias]); break; default: p.Value = mappings[p.PropertyType.Alias]; break; } } } catch (Exception ex) { LogHelper.Error<SaveAsUmbracoMember>(ex); } } m.XmlGenerate(new System.Xml.XmlDocument()); m.Save(); //store record id and member id //SettingsStorage ss = new SettingsStorage(); //ss.InsertSetting(record.Id, "SaveAsUmbracoMemberCreatedMemberID", m.Id.ToString()); //ss.Dispose(); } return Umbraco.Forms.Core.Enums.WorkflowExecutionStatus.Completed; }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { var emailTags = new List<EmailTag>(); List<EmailTag> allTags = record .RecordFields .Values .SelectMany(ParseRecordField) .ToList(); // We voegen ook een speciale tag toe met daarin alle labels en waardes var autogeneratedForm = string.Join("<br/><br/>", allTags.Select(et => "<strong>" + et.Tag + "</strong>: " + et.Value)); // Alle losse tags emailTags.AddRange(allTags); // En de tag met daarin alle labels en waardes emailTags.Add(new EmailTag("[#formsautogenerate#]", autogeneratedForm)); bool sendAttachments = false; bool.TryParse(Attachments, out sendAttachments); emailTags.Add(new EmailTag("[#attachments#]", sendAttachments)); // Dit gaat sowieso goed, geen TryParse nodig (zie ValidateSettings) int emailId = int.Parse(Email); List<RecordField> fileUploads = record.RecordFields.Values.Where(IsFileUpload).ToList(); // Moeten we geüploadde bestanden als bijlage meesturen? // Alleen checken als we uberhaupt fileuploads in deze form hebben zitten if (fileUploads.Any() && sendAttachments) { var attachments = new List<Attachment>(); foreach (var fileUpload in fileUploads) { // De file uploads zijn van het type "multiple", // dus er kunnen meerdere bestanden worden geüpload, // stuur ze allemaal mee als bijlage foreach (var file in fileUpload.Values.Where(v => v != null).Select(v => v.ToString())) { var relativePath = file; // PerplexMail claimt dat het een relatief pad mag zijn, // maar dat werkt voor geen meter dus we gaan het wel makkelijk maken try { var absolutePath = HostingEnvironment.MapPath(relativePath); attachments.Add(new Attachment(absolutePath)); } catch (Exception) { // Voor nu negeren we een eventuele fout en gaan door met de rest } } } PerplexMail.Email.SendUmbracoEmail(emailId, emailTags, attachments); } else { PerplexMail.Email.SendUmbracoEmail(emailId, emailTags); } return WorkflowExecutionStatus.Completed; // DK @ 2016-01-28 // Wat is dit!? // Graag even wat commentaar erbij zetten want ik heb // geen flauw idee waarom deze zooi hier staat :) -> //#region Encrypt //// Update values //foreach (RecordField rf in record.RecordFields.Values) //{ // var fieldValue = rf.ValuesAsString(); // rf.Values[0] = PerplexMail.Security.Encrypt(rf.ValuesAsString()); // fieldValue = rf.ValuesAsString(); //} //// Save //RecordStorage rs = new RecordStorage(); //record.State = FormState.Approved; //rs.UpdateRecord(record, e.Form); //rs.UpdateRecordXml(record, e.Form); //#endregion }
private void DeleteRow(long id, MyProductsEdit.RecordEvents recordEvents, bool loadRoot) { var item = source.GetRecord(id); if (item != null) { var args = new RecordEventArgs(); recordEvents.RecordDeleting(args, id); if (args.Cancel) { AddErrorMessage(args.GetFullErrorMessage()); return; } if (!AccessOptions.CheckPermitDelete() || (item.Information != null && !item.Information.CanDelete)) { AddErrorMessage(Nat.Web.Controls.Properties.Resources.ENoPermitToDeleteRecord); return; } if (!item.CanDelete) { var messages = source.View.GetDeleteErrors(id, MyProductsResources.Header); if (messages.All(string.IsNullOrEmpty)) { AddErrorMessage(Nat.Web.Controls.Properties.Resources.ENoPermitToDeleteRecord); } else { AddErrorMessage(messages.Where(r => !string.IsNullOrEmpty(r))); } return; } BeforeDelete(item); var contextInfo = new DeleteRowContext <MyProduct, DBDataContext, MyProductsJournalDataSourceView.Row, long> { Row = item, Key = item.id, TableItem = item.Item, DB = source.View.DB, }; BeforeDelete(contextInfo); if (contextInfo.Cancel) { AfterDelete(false, item); AddErrorMessage(contextInfo.CancelMessage); return; } try { var delArgs = new DeleteEventArgs <long>(); contextInfo.DeleteEventArgs = delArgs; if (contextInfo.SuccessfullRowDeleted != null && !contextInfo.SuccessfullRowDeleted.Value) { AfterDelete(false, item); AddErrorMessage(contextInfo.FailedRowDeletedMessage); return; } if (!delArgs.IsDeleted) { DeleteRow(item, delArgs); } if (!delArgs.IsDeleted) { source.View.DB.MyProducts.DeleteOnSubmit(item.Item); source.View.DB.SubmitChanges(); } contextInfo.SuccessfullRowDeleted = true; AfterDelete(true, item); if (delArgs.IsDeleted) { if (delArgs.NewSelectedValue != null) { ResetSelectedIndex(delArgs.NewSelectedValue.Value); } else { EmptySelectedIndex(); } } } catch (SqlException exception) { contextInfo.SuccessfullRowDeleted = false; AfterDelete(false, item); if (exception.Number != 547) { AddErrorMessage(exception.ToString()); } else { AddErrorMessage(Nat.Web.Controls.Properties.Resources.ECanNotDeleteUseInSystem); } } store.Reload(); OnSelectedIndexChanged(EventArgs.Empty); } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { // - I'm just a kind of placeholder workflow ... return(WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { HttpContext.Current.Session["uRecord"] = record; return(WorkflowExecutionStatus.Completed); }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { MailAddress FromMailAddress; if (string.IsNullOrEmpty(this.FromEmail)) { var settings = UmbracoConfig.For.UmbracoSettings(); FromMailAddress = new MailAddress(settings.Content.NotificationEmailAddress); } else { string fromEmailField = this.FromEmail; string fromNameField = ""; bool fromEmailFound = false; bool fromNameFound = false; try { foreach (RecordField rf in record.RecordFields.Values) { string refinedCaption = "{" + rf.Field.Caption.ToLower().Replace(" ", "") + "}"; if (!fromEmailFound && refinedCaption == this.FromEmail.ToLower()) { fromEmailField = rf.ValuesAsString(); fromEmailFound = true; } else if (!fromNameFound && !String.IsNullOrEmpty(this.FromName) && refinedCaption == this.FromName.ToLower()) { fromNameField = rf.ValuesAsString(); fromNameFound = true; } //dont go any further to not waste time looking for something already there if (fromEmailFound && fromNameFound) { break; } } if (fromNameFound) { FromMailAddress = new MailAddress(fromEmailField, fromNameField); } else if (!string.IsNullOrEmpty(this.FromName)) { FromMailAddress = new MailAddress(fromEmailField, this.FromName); } else { FromMailAddress = new MailAddress(fromEmailField); } } catch (Exception ex) { var settings = UmbracoConfig.For.UmbracoSettings(); FromMailAddress = new MailAddress(settings.Content.NotificationEmailAddress); } } var mailMessage = new MailMessage { From = FromMailAddress, Subject = this.Subject, ReplyTo = FromMailAddress, IsBodyHtml = true, BodyEncoding = Encoding.UTF8 }; if (this.Email.Contains(";")) { foreach (string email in this.Email.Split(';')) { mailMessage.To.Add(email.Trim()); } } else { mailMessage.To.Add(this.Email); } XmlNode xml = record.ToXml(new System.Xml.XmlDocument()); // we will by default set the body to the record xml so if no xslt file is // present we atleast get the raw data. string result = xml.OuterXml; if (!string.IsNullOrEmpty(this.XsltFile)) { result = XsltHelper.TransformXML(xml, this.XsltFile, null); } mailMessage.Body = "<p>" + Message + "</p><br />" + result; var smtpClient = new SmtpClient { EnableSsl = false }; if (WebConfigurationManager.AppSettings.AllKeys.Contains("contourContribUseSsl") && WebConfigurationManager.AppSettings["contourContribUseSsl"].ToLower() == true.ToString().ToLower()) { smtpClient.EnableSsl = true; } smtpClient.Send(mailMessage); return(WorkflowExecutionStatus.Completed); }
private void recordRemoved(object sender, RecordEventArgs ea) { if( recordToNode.ContainsKey(ea.Record) ) { recordToNode[ea.Record].Remove(); } }
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { var memberTypeService = Current.Services.MemberTypeService; var memberService = Current.Services.MemberService; var dataTypeService = Current.Services.DataTypeService; //var membershipHelper = Current. new MembershipHelper() var maps = JsonConvert.DeserializeObject <MemberMapper>(Fields); Dictionary <string, string> mappings = new Dictionary <string, string>(); string nameMapping = "NodeName"; string usernameMapping = "Login (Email)"; string emailMapping = "Email"; string passwordMapping = "Password"; var mrData = new MemberRecordResult(); mrData.FormRecord = record; mrData.Errors = new Dictionary <Umbraco8FormsMembersHelper.SaveError, string>(); //Get Form Values for Member if (!string.IsNullOrEmpty(maps.NameStaticValue)) { nameMapping = maps.NameStaticValue; } else if (!string.IsNullOrEmpty(maps.NameField)) { nameMapping = record.RecordFields[new Guid(maps.NameField)].ValuesAsString(false); } if (!string.IsNullOrEmpty(maps.LoginStaticValue)) { usernameMapping = maps.LoginStaticValue; } else if (!string.IsNullOrEmpty(maps.LoginField)) { usernameMapping = record.RecordFields[new Guid(maps.LoginField)].ValuesAsString(false); } if (!string.IsNullOrEmpty(maps.EmailStaticValue)) { emailMapping = maps.EmailStaticValue; } else if (!string.IsNullOrEmpty(maps.EmailField)) { emailMapping = record.RecordFields[new Guid(maps.EmailField)].ValuesAsString(false); } if (!string.IsNullOrEmpty(maps.PasswordStaticValue)) { passwordMapping = maps.PasswordStaticValue; } else if (!string.IsNullOrEmpty(maps.PasswordField)) { passwordMapping = record.RecordFields[new Guid(maps.PasswordField)].ValuesAsString(false); } foreach (var map in maps.Properties) { if (map.HasValue()) { var val = map.StaticValue; if (!string.IsNullOrEmpty(map.Field)) { val = record.RecordFields[new Guid(map.Field)].ValuesAsString(false); } mappings.Add(map.Alias, val); } } if (Umbraco8FormsMembersHelper.MemberExists(memberService, emailMapping)) { //Provided email is already registered Current.Logger.Warn <SaveAsUmbracoMember>( "New member '{MemberName}' cannot be created - email '{MemberEmail}' is already registered", nameMapping, emailMapping); e.Form.MessageOnSubmit = "Oops! There was a problem registering you."; e.Form.MessageOnSubmit += "\nThat email address is already registered."; mrData.Errors.Add(Umbraco8FormsMembersHelper.SaveError.EmailAlreadyRegistered, $"The email address '{emailMapping}' is already registered."); //Save Result & Return mrData.WorkflowResult = WorkflowExecutionStatus.Failed; SaveResultData(mrData); return(WorkflowExecutionStatus.Failed); } // Helper.EmailValidate(email: emailMapping) MemberType mt = (MemberType)memberTypeService.Get(maps.MemTypeAlias); if (mt != null) { IMember m = null; int memberId; try { m = memberService.CreateMemberWithIdentity(usernameMapping, emailMapping, nameMapping, mt); memberService.SavePassword(m, passwordMapping); memberId = m.Id; mrData.NewMemberName = m.Name; mrData.NewMemberUserName = m.Username; mrData.NewMemberId = memberId; } catch (Exception ex) { Current.Logger.Error <SaveAsUmbracoMember>(ex, "Error while creating new member '{MemberName}' with email '{MemberEmail}'", nameMapping, emailMapping); e.Form.MessageOnSubmit = "Oops! There was a problem registering you."; mrData.Errors.Add(Umbraco8FormsMembersHelper.SaveError.CreateMemberError, ex.Message); if (ex.ToString().StartsWith("System.Web.Security.MembershipPasswordException")) { if (m != null) { memberService.Delete(m); } e.Form.MessageOnSubmit += "\nYour password didn't meet requirements."; mrData.Errors.Add(Umbraco8FormsMembersHelper.SaveError.InvalidPassword, $"Your password didn't meet requirements."); } //Save Result & Return mrData.WorkflowResult = WorkflowExecutionStatus.Failed; SaveResultData(mrData); return(WorkflowExecutionStatus.Failed); } try { //Add to Groups, if provided //if (this.MultipleMemberGroups.Any()) //{ // foreach (var group in this.MultipleMemberGroups) // { // memberService.AssignRole(memberId, group); // } //} if (!string.IsNullOrEmpty(this.MemberGroup)) { memberService.AssignRole(memberId, this.MemberGroup); } } catch (Exception ex) { Current.Logger.Error <SaveAsUmbracoMember>(ex, "Error while assigning group '{MemberGroup}' to new member '{MemberName}' with email '{MemberEmail}'", MemberGroup, nameMapping, emailMapping); mrData.Errors.Add(Umbraco8FormsMembersHelper.SaveError.UnableToAddtoMemberGroup, ex.Message); } foreach (Property p in m.Properties) { try { if (mappings.ContainsKey(p.PropertyType.Alias)) { var dataType = dataTypeService.GetDataType(p.PropertyType.DataTypeKey); var formValue = mappings[p.PropertyType.Alias]; switch (dataType.DatabaseType) { case ValueStorageType.Date: DateTime dateValue; var isDate = DateTime.TryParse(formValue, out dateValue); if (isDate) { p.SetValue(dateValue); } break; case ValueStorageType.Integer: if (formValue.ToLower() == "true" || formValue.ToLower() == "false") { p.SetValue(bool.Parse(formValue)); } else { p.SetValue(int.Parse(formValue)); } break; //case ValueStorageType.Ntext: // break; //case ValueStorageType.Nvarchar: // break; //case ValueStorageType.Decimal: // break; default: p.SetValue(formValue); break; } } } catch (Exception ex) { Current.Logger.Error <SaveAsUmbracoMember>(ex, "Error while adding custom property data to new member '{MemberName}' with email '{MemberEmail}'", nameMapping, emailMapping); mrData.Errors.Add(Umbraco8FormsMembersHelper.SaveError.CustomPropertyError, $"{p.Alias} - {ex.Message}"); } } memberService.Save(m); memberService.DisposeIfDisposable(); if (this.LogInMemberAfterRegister == true.ToString()) { //membershipHelper.Login("username", "password"); FormsAuthentication.SetAuthCookie(m.Username, false); } Current.Logger.Info <SaveAsUmbracoMember>( "Successfully created new member #{MemberId} '{MemberName}' with email '{MemberEmail}'", memberId, nameMapping, emailMapping); //Webapi? //Figure out why this causes a SQL Lock problem //if (PostToUrl != "") //{ // var useASync = // false; //TODO: Figure out why the Async code results in NULL data arriving at the POST Url // try // { // var siteDomain = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); // if (useASync) // { // var t = Task.Run(() => DoPostToUrlAsync(siteDomain, PostToUrl, mrData)); // t.Wait(); // Current.Logger.Info<SaveAsUmbracoMember>( // "POST Url '{ApiUrl}' for member '{MemberName}' Result = '{ApiResponse}'", // PostToUrl, nameMapping, t.Result); // } // else // { // var result = DoPostToUrl(siteDomain, PostToUrl, mrData); // Current.Logger.Info<SaveAsUmbracoMember>( // "POST Url '{ApiUrl}' for member '{MemberName}' Result = '{ApiResponse}'", // PostToUrl, nameMapping, result); // } // } // catch (Exception exception) // { // var msg = $"Error while posting to url '{PostToUrl}'"; // Current.Logger.Error<SaveAsUmbracoMember>(exception, msg); // } //} } //Save Result & Return mrData.WorkflowResult = WorkflowExecutionStatus.Completed; SaveResultData(mrData); return(WorkflowExecutionStatus.Completed); }
/// <summary> /// Executes the workflow. /// </summary> /// <param name="record">The record to execute the workflow on.</param> /// <returns>The execution status.</returns> public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e) { // Variables. var result = WorkflowExecutionStatus.Completed; // Catch exceptions. try { // Variables. var matchAll = GetMatchAll(); var values = ParseFieldValues(FieldValues); var matchedAny = false; var matchedAll = true; // Check each field configured in workflow. foreach (var value in values) { // Find field matching configured field. var fields = record.RecordFields.Where(x => x.Value.Field.Id == value.Item1); if (fields.Any()) { // Variables. var pair = fields.First(); var field = pair.Value.Field; var fieldField = pair.Value.Field; var prevalue = pair.Value.ValuesAsString(); field.PreValueSource.Type.LoadSettings(field.PreValueSource); var strValue = field.PreValueSource.Type.GetPreValues(field) .Where(x => (x.Id ?? string.Empty).ToString() == prevalue) .Select(x => x.Value).FirstOrDefault(); strValue = strValue ?? prevalue; // Did the field value match the configured value? if (strValue != null && value.Item2.InvariantEquals(strValue)) { matchedAny = true; } else { matchedAll = false; } } else { // Found a field that didn't match. matchedAll = false; } } // Were there matches? if (matchedAll || !matchAll && matchedAny) { // Variables. var lineFormat = @"{0}: ""{1}"""; var lines = new List<string>(); if (!string.IsNullOrWhiteSpace(Message)) { lines.Add(Message); } foreach (var field in record.RecordFields) { var caption = field.Value.Field.Caption; var value = field.Value.ValuesAsString(); lines.Add(string.Format(lineFormat, caption, value)); } var body = string.Join(Environment.NewLine, lines.ToArray()); // Send email. UmbracoLibrary.SendMail(SenderAddress, RecipientAddress, Subject, body, false); } } catch (Exception ex) { // Log error. var message = "Error while executing SendMailWhenFieldsMatch workflow."; LogHelper.Error<SendMailWhenFieldsMatch>(message, ex); result = WorkflowExecutionStatus.Failed; } // Return execution result. return result; }