Exemplo n.º 1
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 public FormsController(IFormPersistence formPersistence, IEntityPersistence entityPersistence, IValidationPersistence validationPersistence, IConfiguredFormPersistence configuredFormPersistence, IEntityHelper entityHelper, FormFieldTypeCollection formFieldTypeCollection, FormHandlerTypeCollection formHandlerTypeCollection)
 {
     Persistence               = formPersistence;
     Entities                  = entityPersistence;
     Validations               = validationPersistence;
     ConFormPersistence        = configuredFormPersistence;
     EntityHelper              = entityHelper;
     FormHandlerTypeCollection = formHandlerTypeCollection;
     FormFieldTypeCollection   = formFieldTypeCollection;
 }
Exemplo n.º 2
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 public FormsController(IConfigurationManager configurationManager, IFormPersistence formPersistence,
                        ILayoutPersistence layoutPersistence, IEntityPersistence entityPersistence,
                        IValidationPersistence validationPersistence, IConfiguredFormPersistence configuredFormPersistence,
                        IEntityHelper entityHelper, FormFieldTypeCollection formFieldTypeCollection,
                        FormHandlerTypeCollection formHandlerTypeCollection)
 {
     Config                    = configurationManager;
     Persistence               = formPersistence;
     LayoutPersistence         = layoutPersistence;
     Entities                  = entityPersistence;
     Validations               = validationPersistence;
     ConFormPersistence        = configuredFormPersistence;
     EntityHelper              = entityHelper;
     FormHandlerTypeCollection = formHandlerTypeCollection;
     FormFieldTypeCollection   = formFieldTypeCollection;
 }
Exemplo n.º 3
0
        public object PersistForm(PersistFormRequest request)
        {
            // Variables.
            var result      = default(object);
            var formsRootId = GuidHelper.GetGuid(FormConstants.Id);
            var parentId    = GuidHelper.GetGuid(request.ParentId);


            // Catch all errors.
            try
            {
                // Parse or create the form ID.
                var formId = string.IsNullOrWhiteSpace(request.FormId)
                    ? Guid.NewGuid()
                    : GuidHelper.GetGuid(request.FormId);


                // Get the fields.
                var fields = request.Fields.MakeSafe()
                             .Select(x =>
                {
                    var fieldType         = Type.GetType(x.TypeFullName);
                    var fieldTypeInstance = FormFieldTypeCollection.FirstOrDefault(y => y.GetType() == fieldType);

                    var field = new FormField(fieldTypeInstance)
                    {
                        Id =
                            string.IsNullOrWhiteSpace(x.Id)
                                                    ? Guid.NewGuid()
                                                    : GuidHelper.GetGuid(x.Id),
                        Alias       = x.Alias,
                        Name        = x.Name,
                        Label       = x.Label,
                        Category    = x.Category,
                        Validations =
                            x.Validations.MakeSafe()
                            .Select(y => GuidHelper.GetGuid(y)).ToArray(),
                        FieldConfiguration =
                            JsonHelper.Serialize(x.Configuration)
                    };
                    return(field);
                })
                             .ToArray();


                // Get the handlers.
                var handlers = request.Handlers.MakeSafe().Select(x =>
                {
                    var handlerType         = Type.GetType(x.TypeFullName);
                    var handlerTypeInstance = FormHandlerTypeCollection.FirstOrDefault(y => y.GetType() == handlerType);

                    var handler = new FormHandler(handlerTypeInstance)
                    {
                        Id = string.IsNullOrWhiteSpace(x.Id)
                                                   ? Guid.NewGuid()
                                                   : GuidHelper.GetGuid(x.Id),
                        Alias   = x.Alias,
                        Name    = x.Name,
                        Enabled = x.Enabled,
                        HandlerConfiguration =
                            JsonHelper.Serialize(x.Configuration)
                    };

                    return(handler);
                }).ToArray();


                // Get the ID path.
                var parent = parentId == Guid.Empty ? null : Entities.Retrieve(parentId);
                var path   = parent == null
                    ? new[] { formsRootId, formId }
                    : parent.Path.Concat(new[] { formId }).ToArray();


                // Create the form.
                var form = new Form()
                {
                    Id       = formId,
                    Path     = path,
                    Alias    = request.Alias,
                    Name     = request.Name,
                    Fields   = fields,
                    Handlers = handlers
                };


                // Persist the form.
                Persistence.Persist(form);


                // Success.
                result = new
                {
                    Success = true,
                    FormId  = GuidHelper.GetString(formId)
                };
            }
            catch (Exception ex)
            {
                // Error.
                Logger.Error <FormsController>(ex, PersistFormError);
                result = new
                {
                    Success = false,
                    Reason  = UnhandledError
                };
            }


            // Return the result.
            return(result);
        }
Exemplo n.º 4
0
        public object PersistForm(PersistFormRequest request)
        {
            // Variables.
            var result      = default(object);
            var formsRootId = GuidHelper.GetGuid(FormConstants.Id);
            var parentId    = GuidHelper.GetGuid(request.ParentId);


            // Catch all errors.
            try
            {
                // Parse or create the form ID.
                var isNew  = string.IsNullOrWhiteSpace(request.FormId);
                var formId = isNew
                    ? Guid.NewGuid()
                    : GuidHelper.GetGuid(request.FormId);


                // Get the fields.
                var fields = request.Fields.MakeSafe()
                             .Select(x =>
                {
                    var fieldType         = Type.GetType(x.TypeFullName);
                    var fieldTypeInstance = FormFieldTypeCollection
                                            .FirstOrDefault(y => y.GetType() == fieldType);

                    var field = new FormField(fieldTypeInstance)
                    {
                        Id = string.IsNullOrWhiteSpace(x.Id)
                                ? Guid.NewGuid()
                                : GuidHelper.GetGuid(x.Id),
                        Alias       = x.Alias,
                        Name        = x.Name,
                        Label       = x.Label,
                        Category    = x.Category,
                        Validations = x.Validations.MakeSafe()
                                      .Select(y => GuidHelper.GetGuid(y)).ToArray(),
                        FieldConfiguration = JsonHelper.Serialize(x.Configuration)
                    };
                    return(field);
                })
                             .ToArray();


                // Get the handlers.
                var handlers = request.Handlers.MakeSafe().Select(x =>
                {
                    var handlerType         = Type.GetType(x.TypeFullName);
                    var handlerTypeInstance = FormHandlerTypeCollection
                                              .FirstOrDefault(y => y.GetType() == handlerType);

                    var handler = new FormHandler(handlerTypeInstance)
                    {
                        Id = string.IsNullOrWhiteSpace(x.Id)
                            ? Guid.NewGuid()
                            : GuidHelper.GetGuid(x.Id),
                        Alias   = x.Alias,
                        Name    = x.Name,
                        Enabled = x.Enabled,
                        HandlerConfiguration = JsonHelper.Serialize(x.Configuration)
                    };

                    return(handler);
                }).ToArray();


                // Get the ID path.
                var parent = parentId == Guid.Empty ? null : Entities.Retrieve(parentId);
                var path   = parent == null
                    ? new[] { formsRootId, formId }
                    : parent.Path.Concat(new[] { formId }).ToArray();


                // Create the form.
                var form = new Form()
                {
                    Id       = formId,
                    Path     = path,
                    Alias    = request.Alias,
                    Name     = request.Name,
                    Fields   = fields,
                    Handlers = handlers
                };


                // Persist the form.
                Persistence.Persist(form);


                // For new forms, automatically create a layout and a form configuration.
                var layoutNamePrefix  = "Layout for ";
                var layoutNameSuffix  = " (Autogenerated)";
                var layoutAliasPrefix = "layout_";
                var layoutAliasSuffix = "_autogenerated";
                var autoLayoutData    = JsonHelper.Serialize(new
                {
                    rows = new[]
                    {
                        new
                        {
                            cells = new []
                            {
                                new
                                {
                                    columnSpan = 12,
                                    fields     = form.Fields.Select(x => new
                                    {
                                        id = GuidHelper.GetString(x.Id)
                                    })
                                }
                            }
                        }
                    },
                    formId       = GuidHelper.GetString(form.Id),
                    autopopulate = true
                });
                if (isNew)
                {
                    // Create new layout.
                    var layoutId = Guid.NewGuid();
                    var layout   = new Layout()
                    {
                        KindId = GuidHelper.GetGuid(app.Constants.Layouts.LayoutBasic.Id),
                        Id     = layoutId,
                        Path   = new[] { GuidHelper.GetGuid(LayoutConstants.Id), layoutId },
                        Name   = layoutNamePrefix + request.Name + layoutNameSuffix,
                        Alias  = layoutAliasPrefix + request.Alias + layoutAliasSuffix,
                        Data   = autoLayoutData
                    };


                    // Persist layout.
                    LayoutPersistence.Persist(layout);


                    // Create a new form configuration.
                    var plainJsTemplateId = GuidHelper.GetGuid("f3fb1485c1d14806b4190d7abde39530");
                    var template          = Config.Templates.FirstOrDefault(x => x.Id == plainJsTemplateId)
                                            ?? Config.Templates.FirstOrDefault();
                    var configId       = Guid.NewGuid();
                    var configuredForm = new ConfiguredForm()
                    {
                        Id         = configId,
                        Path       = path.Concat(new[] { configId }).ToArray(),
                        Name       = request.Name,
                        TemplateId = template?.Id,
                        LayoutId   = layoutId
                    };


                    // Persist form configuration.
                    ConFormPersistence.Persist(configuredForm);
                }


                // Get existing layouts that should autopopulate.
                var layouts = GetFormLayouts(null)
                              .Select(x => new
                {
                    Layout        = x,
                    Configuration = x.DeserializeConfiguration() as LayoutBasicConfiguration
                })
                              .Where(x => x.Configuration != null)
                              .Where(x => x.Configuration.FormId.HasValue && x.Configuration.FormId.Value == formId)
                              .Where(x => x.Configuration.Autopopulate);


                //: Autopopulate the layouts.
                foreach (var existingLayout in layouts)
                {
                    existingLayout.Layout.Data = autoLayoutData;
                    var layoutName  = existingLayout.Layout.Name ?? string.Empty;
                    var layoutAlias = existingLayout.Layout.Alias ?? string.Empty;
                    if (layoutName.StartsWith(layoutNamePrefix) && layoutName.EndsWith(layoutNameSuffix))
                    {
                        existingLayout.Layout.Name = layoutNamePrefix + form.Name + layoutNameSuffix;
                    }
                    if (layoutAlias.StartsWith(layoutAliasPrefix) && layoutAlias.EndsWith(layoutAliasSuffix))
                    {
                        existingLayout.Layout.Alias = layoutAliasPrefix + form.Name + layoutAliasSuffix;
                    }
                    LayoutPersistence.Persist(existingLayout.Layout);
                }


                // Success.
                result = new
                {
                    Success = true,
                    FormId  = GuidHelper.GetString(formId)
                };
            }
            catch (Exception ex)
            {
                // Error.
                Logger.Error <FormsController>(ex, PersistFormError);
                result = new
                {
                    Success = false,
                    Reason  = UnhandledError
                };
            }


            // Return the result.
            return(result);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 public HandlersController(FormHandlerTypeCollection formHandlerTypeCollection)
 {
     FormHandlerTypeCollection = formHandlerTypeCollection;
 }