Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 private void RaiseRecordEvent(RecordEventArgs e)
 {
     if (Record != null)
     {
         Record(this, e);
     }
 }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 9
0
 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);
        }
Exemplo n.º 11
0
        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);
            }
        }
Exemplo n.º 12
0
        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;
        }
Exemplo n.º 13
0
 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;   
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
            }
        }
Exemplo n.º 18
0
        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;

		}
Exemplo n.º 20
0
        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;
        }
Exemplo n.º 21
0
        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);
     }
 }
Exemplo n.º 23
0
        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);
            }
        }
Exemplo n.º 24
0
        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);
            }
        }
Exemplo n.º 25
0
        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);
        }
Exemplo n.º 26
0
 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;
 }
Exemplo n.º 29
0
 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 );
     }
 }
Exemplo n.º 30
0
 public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e)
 {
     return WorkflowExecutionStatus.Completed;
 }
Exemplo n.º 31
0
 private void RecordAdded(object sender, RecordEventArgs e)
 {
     RaiseRecordEvent(e);
 }
 private async void OnRecordRemoved(object sender, RecordEventArgs e) =>
 await repository.Records.RemoveAsync(e.RecordModel.ToEntity());
Exemplo n.º 33
0
        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;
        }
Exemplo n.º 34
0
        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;
        }
Exemplo n.º 35
0
        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);
        }
Exemplo n.º 36
0
        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);
            }
        }
Exemplo n.º 40
0
 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);
        }
Exemplo n.º 42
0
        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);
        }
Exemplo n.º 43
0
 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;

		}