public override void OnFinish(object sender, EventArgs e)
        {
            var token = (FormFolderEntityToken)EntityToken;

            var name = GetBinding <string>("Name");
            var type = GetBinding <string>("SubmitHandlerType");

            var definition  = DefinitionsFacade.GetDefinition(token.FormName);
            var handlerType = Type.GetType(type);
            var instance    = (FormSubmitHandler)Activator.CreateInstance(handlerType);

            instance.Name = name;

            definition.SubmitHandlers.Add(instance);

            DefinitionsFacade.Save(definition);

            CreateSpecificTreeRefresher().PostRefreshMessages(token);

            var editWorkFlowAttribute = handlerType.GetCustomAttribute <EditWorkflowAttribute>();

            if (editWorkFlowAttribute != null)
            {
                var workflowToken = new WorkflowActionToken(editWorkFlowAttribute.EditWorkflowType);

                ExecuteAction(new FormSubmitHandlerEntityToken(handlerType, token.FormName, name), workflowToken);
            }
        }
Ejemplo n.º 2
0
        public override void OnFinish(object sender, EventArgs e)
        {
            var name = GetBinding <string>("Name");
            var includeAttachments = GetBinding <bool>("IncludeAttachments");

            var from            = GetBinding <string>("From");
            var to              = GetBinding <string>("To");
            var cc              = GetBinding <string>("Cc");
            var bcc             = GetBinding <string>("Bcc");
            var subject         = GetBinding <string>("Subject");
            var body            = GetBinding <string>("Body");
            var encryptMessage  = GetBinding <bool>("EncryptMessage");
            var encryptPassword = GetBinding <string>("EncryptPassword");

            var definition      = GetDefinition();
            var handler         = GetHandler();
            var existingHandler = definition.SubmitHandlers.Single(h => h.Name == handler.Name);

            handler.Name = name;
            handler.IncludeAttachments = includeAttachments;

            using (var data = new DataConnection())
            {
                var templateKey = definition.Name + "." + handler.Name;
                var template    = data.Get <IMailTemplate>().SingleOrDefault(t => t.Key == templateKey) ?? data.CreateNew <IMailTemplate>();

                template.Key             = templateKey;
                template.From            = from;
                template.To              = to;
                template.Cc              = cc;
                template.Bcc             = bcc;
                template.EncryptMessage  = encryptMessage;
                template.EncryptPassword = encryptPassword;

                if (template.DataSourceId.ExistsInStore)
                {
                    data.Update(template);
                }
                else
                {
                    data.Add(template);
                }

                var templateContent = template.GetContent();

                templateContent.Subject = subject;
                templateContent.Body    = body;

                data.Update(templateContent);
            }

            definition.SubmitHandlers.Remove(existingHandler);
            definition.SubmitHandlers.Add(handler);

            DefinitionsFacade.Save(definition);

            CreateSpecificTreeRefresher().PostRefreshMessages(EntityToken);
            SetSaveStatus(true);
        }
        protected void Save(IDynamicDefinition definition)
        {
            SaveExtraSettings(definition);

            var token          = GetBinding <DataEntityToken>("BoundToken");
            var modelReference = (IModelReference)token.Data;

            var name = GetBinding <string>("Name");

            var introText       = GetBinding <string>("IntroText");
            var successResponse = GetBinding <string>("SuccessResponse");

            using (var writer = ResourceFacade.GetResourceWriter())
            {
                writer.AddResource(GetKey("IntroText"), introText);
                writer.AddResource(GetKey("SuccessResponse"), successResponse);
            }

            var isNewName = name != modelReference.Name;

            if (isNewName)
            {
                LocalizationsFacade.RenameNamespace(Localization.KeyPrefix + "." + modelReference.Name, Localization.KeyPrefix + "." + name, Localization.ResourceSet);

                DefinitionsFacade.Copy(definition, name);
                DefinitionsFacade.Delete(definition);

                modelReference = ModelReferenceFacade.GetModelReference(name);
                token          = modelReference.GetDataEntityToken();

                UpdateBinding("BoundToken", token);
                SetSaveStatus(true, token);
            }
            else
            {
                DefinitionsFacade.Save(definition);

                SetSaveStatus(true);
            }

            CreateParentTreeRefresher().PostRefreshMessages(EntityToken);
        }