예제 #1
0
        public ConfigurationServiceResponse InstallFromStorage(string source)
        {
            var response = new ConfigurationServiceResponse();

            try {
                if (!CheckLicense(source))
                {
                    throw new LicException();
                }
                bool canExecuteOperation = GetInstallPackageRights();
                if (!canExecuteOperation)
                {
                    throw new SecurityException(
                              string.Format(
                                  new LocalizableString("Terrasoft.Core", "DBSecurityEngine.Exception.Admin.UnitCannotExecuteAdminOperation"),
                                  "CanManageSolution"));
                }
                InstallStorage(source);
                WorkspaceBuilder        workspaceBuilder = WorkspaceBuilderUtility.CreateWorkspaceBuilder(UserConnection.AppConnection);
                CompilerErrorCollection compilerErrors   = workspaceBuilder.Build(UserConnection.Workspace);
                if (GetIsError(compilerErrors))
                {
                    throw new Exception(new LocalizableString("Terrasoft.WebApp", "CompilationErrors.Caption"));
                }
                WorkspaceUtilities.ForceGetCustomPackageUId(UserConnection);
            } catch (Exception exception) {
                response.Exception = exception;
            }
            return(response);
        }
예제 #2
0
 public CompilationResult CompileWorkspace(bool compileModified = false)
 {
     if (UserConnection.DBSecurityEngine.GetCanExecuteOperation("CanManageSolution"))
     {
         WorkspaceBuilder        workspaceBuilder = WorkspaceBuilderUtility.CreateWorkspaceBuilder(AppConnection);
         CompilerErrorCollection compilerErrors   = workspaceBuilder.Rebuild(AppConnection.Workspace,
                                                                             out var buildResultType);
         var configurationBuilder = ClassFactory.Get <IAppConfigurationBuilder>();
         if (compileModified)
         {
             configurationBuilder.BuildChanged();
         }
         else
         {
             configurationBuilder.BuildAll();
         }
         return(new CompilationResult {
             Status = buildResultType,
             CompilerErrors = compilerErrors
         });
     }
     else
     {
         throw new Exception("You don't have permission for operation CanManageSolution");
     }
 }
예제 #3
0
        private ResponceApplyChanges ApplyDbChanges(ResponceApplyChanges response, EntitySchema entitySchema, bool isBild = false)
        {
            try {
                DBMetaScript           dbMetaScript = UserConnection.DBMetaScript;
                DBMetaActionCollection actions      = GetDbMetaActions(entitySchema);
                dbMetaScript.CheckActions(actions);
                DBMetaScriptValidationMessageCollection validationMessages = dbMetaScript.ValidationMessages;
                if (validationMessages.HasErrors())
                {
                    response.Code    = "Error.DbMetaActions.Get";
                    response.success = false;
                    return(response);
                }
                dbMetaScript.ExecuteActions(actions);
                if (validationMessages.HasErrors())
                {
                    response.Code    = "Error.DbMetaActions.Execute";
                    response.success = false;
                    return(response);
                }
            } catch (Exception e) {
                response.success = false;
                response.Code    = "Error.DbMetaActions.Apply";
                response.Message = e.Message;
                return(response);
            }
            if (response.success && isBild)
            {
                try {
#if !NETSTANDARD2_0 // TODO CRM-46783
                    var workspaceBuilder = WorkspaceBuilderUtility.CreateWorkspaceBuilder(AppConnection);
                    CompilerErrorCollection compilerErrors = workspaceBuilder.Build(AppConnection.Workspace);
                    if (compilerErrors.HasErrors)
                    {
                        response.success = false;
                        response.Code    = "Error.DbMetaActions.BuildError";
                        return(response);
                    }
#endif
                } catch (Exception) {
                    response.success = false;
                    response.Code    = "Error.DbMetaActions.Build";
                    return(response);
                }
            }
            return(response);
        }