示例#1
0
 public bool Validate(FormField field, FormDataItem data, out string message)
 {
     message = string.Empty;
     if (field.Name == "ValidCode" && data.FieldValue.IsNotNullAndWhiteSpace())
     {
         string code = _validate.GetCode();
         if (!code.Equals(data.FieldValue, StringComparison.InvariantCultureIgnoreCase))
         {
             message = _localize.Get("{0}不正确").FormatWith(field.DisplayName);
             return(false);
         }
     }
     return(true);
 }
示例#2
0
        public ServiceResult <FormField> SaveForm(IFormCollection formCollection, string formId)
        {
            var form     = _formService.Get(formId);
            var formData = new FormData {
                FormId = formId, Datas = new List <FormDataItem>()
            };
            Regex regex = new Regex(@"(\w+)\[(\d+)\]");

            foreach (var item in formCollection.Keys)
            {
                string id = regex.Replace(item, evaluator =>
                {
                    return(evaluator.Groups[1].Value);
                });
                var field = form.FormFields.FirstOrDefault(m => m.ID == id);
                if (field != null)
                {
                    string       value    = formCollection[item];
                    FormDataItem dataitem = new FormDataItem {
                        FieldId = field.ID, FieldValue = value, FieldText = field.DisplayName
                    };
                    if (field.FieldOptions != null)
                    {
                        var option = field.FieldOptions.FirstOrDefault(o => o.Value == value);
                        if (option != null)
                        {
                            dataitem.OptionValue = option.Value;
                            dataitem.FieldValue  = option.DisplayText;
                        }
                    }
                    foreach (var validator in _formDataValidators)
                    {
                        string message;
                        if (!validator.Validate(field, dataitem, out message))
                        {
                            var result = new ServiceResult <FormField>();
                            result.RuleViolations.Add(new RuleViolation(field.DisplayName, message));
                            return(result);
                        }
                    }
                    formData.Datas.Add(dataitem);
                }
            }
            if (formData.Datas.Any())
            {
                formData.Title = formData.Datas.FirstOrDefault().FieldValue;
            }
            Add(formData);
            return(new ServiceResult <FormField>());
        }
        public bool Validate(FormField field, FormDataItem data, out string message)
        {
            message = string.Empty;
            if (field.Name == "SingleLine" && data.FieldValue.IsNotNullAndWhiteSpace() && data.FieldValue.Length > 200)
            {
                message = _localize.Get("{0} length should be less than {1}").FormatWith(field.DisplayName, 200);
                return(false);
            }
            else if (field.Name == "Paragraph" && data.FieldValue.IsNotNullAndWhiteSpace() && data.FieldValue.Length > 1000)
            {
                message = _localize.Get("{0} length should be less than {1}").FormatWith(field.DisplayName, 1000);
                return(false);
            }

            return(true);
        }
        public bool Validate(FormField field, FormDataItem data, out string message)
        {
            message = string.Empty;
            if (field.Name == "SingleLine" && data.FieldValue.IsNotNullAndWhiteSpace() && data.FieldValue.Length > 200)
            {
                message = $"{field.DisplayName}的长度应小于200";
                return(false);
            }
            else if (field.Name == "Paragraph" && data.FieldValue.IsNotNullAndWhiteSpace() && data.FieldValue.Length > 1000)
            {
                message = $"{field.DisplayName}的长度应小于1000";
                return(false);
            }

            return(true);
        }
 public bool Validate(FormField field, FormDataItem data, out string message)
 {
     message = string.Empty;
     if (field.Name == "Phone" && data.FieldValue.IsNotNullAndWhiteSpace())
     {
         if (Regex.IsMatch(data.FieldValue, RegularExpression.ChinesePhone) || Regex.IsMatch(data.FieldValue, RegularExpression.ChineseMobile))
         {
             return(true);
         }
         else
         {
             message = _localize.Get("Invalid value for {0}.").FormatWith(field.DisplayName);
             return(false);
         }
     }
     return(true);
 }
示例#6
0
        public ServiceResult <FormData> SaveForm(IFormCollection formCollection, string formId)
        {
            var result = new ServiceResult <FormData>();
            var form   = _formService.Get(formId);

            if (form == null)
            {
                result.RuleViolations.Add(new RuleViolation("Form", "Form not found!"));
                return(result);
            }
            var formData = new FormData {
                FormId = formId, Datas = new List <FormDataItem>(), Form = form
            };
            Regex regex = new Regex(@"(\w+)\[(\d+)\]");

            foreach (var item in formCollection.Keys)
            {
                string id = regex.Replace(item, evaluator =>
                {
                    return(evaluator.Groups[1].Value);
                });
                var field = form.FormFields.FirstOrDefault(m => m.ID == id);
                if (field != null)
                {
                    string       value    = formCollection[item];
                    FormDataItem dataitem = new FormDataItem {
                        FieldId = field.ID, FieldValue = value, FieldText = field.DisplayName
                    };
                    if (field.FieldOptions != null)
                    {
                        var option = field.FieldOptions.FirstOrDefault(o => o.Value == value);
                        if (option != null)
                        {
                            dataitem.OptionValue = option.Value;
                            dataitem.FieldValue  = option.DisplayText;
                        }
                    }
                    foreach (var validator in _formDataValidators)
                    {
                        if (!validator.Validate(field, dataitem, out string message))
                        {
                            result.RuleViolations.Add(new RuleViolation(field.DisplayName, message));
                            return(result);
                        }
                    }
                    formData.Datas.Add(dataitem);
                }
            }
            if (formData.Datas.Any())
            {
                formData.Title = formData.Datas.FirstOrDefault().FieldValue;
            }
            result = Add(formData);
            if (!result.HasViolation && form.NotificationReceiver.IsNotNullAndWhiteSpace())
            {
                _notificationManager.Send(new RazorEmailNotice
                {
                    Subject      = _localize.Get("New form data"),
                    To           = form.NotificationReceiver.Split(new char[] { '\r', '\n', ',', ';' }, StringSplitOptions.RemoveEmptyEntries),
                    Model        = Get(formData.ID),
                    TemplatePath = "~/wwwroot/Plugins/ZKEACMS.FormGenerator/EmailTemplates/FormDataNotification.cshtml"
                });
            }
            return(result);
        }
示例#7
0
        public ServiceResult <FormData> SaveForm(IFormCollection formCollection, string formId)
        {
            var result = new ServiceResult <FormData>();
            var form   = _formService.Get(formId);

            if (form == null)
            {
                result.RuleViolations.Add(new RuleViolation("Form", "Form not found!"));
                return(result);
            }
            var formData = new FormData {
                FormId = formId, Datas = new List <FormDataItem>(), Form = form
            };

            foreach (var item in formCollection.Keys)
            {
                string id = _nameRegex.Replace(item, evaluator =>
                {
                    return(evaluator.Groups[1].Value);
                });
                var field = form.FormFields.FirstOrDefault(m => m.ID == id);
                if (field != null)
                {
                    string       value    = formCollection[item];
                    FormDataItem dataitem = new FormDataItem {
                        FieldId = field.ID, FieldValue = value, FieldText = field.DisplayName
                    };
                    if (field.FieldOptions != null)
                    {
                        var option = field.FieldOptions.FirstOrDefault(o => o.Value == value);
                        if (option != null)
                        {
                            dataitem.OptionValue = option.Value;
                            dataitem.FieldValue  = option.DisplayText;
                        }
                    }
                    foreach (var validator in _formDataValidators)
                    {
                        if (!validator.Validate(field, dataitem, out string message))
                        {
                            result.RuleViolations.Add(new RuleViolation(item, message));
                        }
                    }
                    formData.Datas.Add(dataitem);
                }
            }
            MergeDataToForm(formData);
            result.Result = formData;
            if (result.HasViolation)
            {
                return(result);
            }
            if (formData.Datas.Any())
            {
                formData.Title = formData.Datas.FirstOrDefault().FieldValue;
            }
            result = Add(formData);
            if (!result.HasViolation)
            {
                FormData data = Get(formData.ID);
                _eventManager.Trigger(Events.OnFormDataSubmitted, data);
            }
            return(result);
        }
示例#8
0
        internal void AddData(string key, object data)
        {
            var item = new FormDataItem(key, data);

            formData.AddLast(item);
        }
示例#9
0
 internal void AddData(string key, object data)
 {
     var item = new FormDataItem(key, data);
     formData.AddLast(item);
 }