Ejemplo n.º 1
0
 public ExportWorkerJob(Int32 agentId, IAgentHelper agentHelper, ISqlQueryHelper sqlQueryHelper, DateTime processedOnDateTime, IEnumerable <Int32> resourceGroupIds, IAPILog logger, IArtifactQueries artifactQueries, APIOptions rsapiApiOptions, IRsapiRepositoryGroup rsapiRepositoryGroup, IAuthenticationHelper authenticationHelper, ISerializationHelper serializationHelper)
 {
     TableRowId            = 0;
     WorkspaceArtifactId   = -1;
     AgentId               = agentId;
     AgentHelper           = agentHelper;
     SqlQueryHelper        = sqlQueryHelper;
     QueueTable            = Constant.Tables.ExportWorkerQueue;
     ProcessedOnDateTime   = processedOnDateTime;
     AgentResourceGroupIds = resourceGroupIds;
     Logger               = logger;
     ArtifactQueries      = artifactQueries;
     RsapiApiOptions      = rsapiApiOptions;
     RsapiRepositoryGroup = rsapiRepositoryGroup;
     AuthenticationHelper = authenticationHelper;
     SerializationHelper  = serializationHelper;
 }
 public RunAgentCreate(IDBContext eddsDbContext, IEnvironmentHelper environment, ICreateAgent createAgent, List <AgentsDesired> agentsDesired, List <SpotsPerServer> spotsPerServer, IAPILog logger)
 {
     _eddsDbContext  = eddsDbContext;
     _environment    = environment;
     _createAgent    = createAgent;
     _agentsDesired  = agentsDesired;
     _spotsPerServer = spotsPerServer;
     _logger         = logger;
 }
 private void LoadVariables()
 {
     Logger         = GetLoggerAsync().Result;
     DbContextEdds  = Helper.GetDBContext(-1);
     PostInstallJob = new PostInstallSetupJob(DbContextEdds, SqlQueryHelper, Logger);
 }
Ejemplo n.º 4
0
 public TestLogFactory(IAPILog loggerToUse)
 {
     this._Logger = loggerToUse;
 }
        public override Response Execute()
        {
            _logger = this.Helper.GetLoggerFactory().GetLogger().ForContext <PreSaveEventHandlerComment>();
            Response retVal = new Response();

            retVal.Success = true;
            retVal.Message = string.Empty;



            // Console.WriteLine(output);

            //string output = null;
            try
            {
                String comment = (String)this.ActiveArtifact.Fields[COMMENT_FIEL_GUID.ToString()].Value.Value;
                string user    = (String)this.ActiveArtifact.Fields[SYSTEM_CREATED_BY_FIELD.ToString()].Value.Value;



                if (!(ActiveArtifact.Fields[RELATED_COMMENT_FIELD.ToString()] == null))
                {
                    using (kCura.Relativity.Client.IRSAPIClient client =
                               this.Helper.GetServicesManager().CreateProxy <kCura.Relativity.Client.IRSAPIClient>(Relativity.API.ExecutionIdentity.System))
                    {
                        client.APIOptions.WorkspaceID = this.Helper.GetActiveCaseID();
                        Service.RSAPIService.CommentRSAPIService commentRSAPIService = new Service.RSAPIService.CommentRSAPIService(client);
                        Service.SqlService.CommentSqlService     commentSqlService   = new Service.SqlService.CommentSqlService(this.Helper.GetDBContext(Helper.GetActiveCaseID()));
                        int parentCommentId = (int)this.ActiveArtifact.Fields[RELATED_COMMENT_FIELD.ToString()].Value.Value;
                        Data.Entities.Comment parentComment = new Data.Entities.Comment(parentCommentId);
                        parentComment = commentRSAPIService.Get(parentCommentId);
                        List <Data.Entities.Comment> commentsChild = commentSqlService.GetCommentsChild(parentComment.ArtifactId);
                        parentComment.CommentChilds = commentsChild;
                        int user1 = parentComment.CreatedBy.ArtifactId;
                        int user2 = this.Helper.GetAuthenticationManager().UserInfo.ArtifactID;

                        if (commentsChild.Count.Equals(0))
                        {
                            if (user1.Equals(user2))
                            {
                                throw new StartConversation();
                            }
                        }
                    }
                }



                if (String.IsNullOrWhiteSpace(comment))
                {
                    _logger.LogError($"the comment field was not fill up ");
                    throw new FieldMissingException("Comment");
                }
                if (!ActiveArtifact.IsNew)
                {
                    using (kCura.Relativity.Client.IRSAPIClient client =
                               this.Helper.GetServicesManager().CreateProxy <kCura.Relativity.Client.IRSAPIClient>(ExecutionIdentity.System))
                    {
                        client.APIOptions.WorkspaceID = this.Helper.GetActiveCaseID();
                        Service.RSAPIService.CommentRSAPIService commentRSAPIService = new Service.RSAPIService.CommentRSAPIService(client);
                        Data.Entities.Comment currentComment = new Data.Entities.Comment(ActiveArtifact.ArtifactID);
                        currentComment = commentRSAPIService.Get(ActiveArtifact.ArtifactID);
                        int commentUserId = currentComment.CreatedBy.ArtifactId;
                        int currentUserId = this.Helper.GetAuthenticationManager().UserInfo.ArtifactID;

                        if (!commentUserId.Equals(currentUserId))
                        {
                            throw new DontEditAnotherComment();
                        }
                    }
                }


                Boolean          typeSelected = false;
                ChoiceCollection typeField    = (ChoiceCollection)this.ActiveArtifact.Fields[TYPE_FIELD_GUID.ToString()].Value.Value;

                foreach (Choice typeChoice in typeField)
                {
                    if (typeChoice.IsSelected)
                    {
                        typeSelected = true;
                        break;
                    }
                }

                if (!typeSelected)
                {
                    throw new FieldMissingException("Comment Type");
                }
            }
            catch (FieldMissingException fielMissingEx)
            {
                retVal.Success = false;
                retVal.Message = fielMissingEx.Message;
            }


            catch (Exception e)
            {
                retVal.Success = false;
                retVal.Message = e.Message;
            }
            return(retVal);
        }
Ejemplo n.º 6
0
        public async static Task <int> GetFieldArtifactID(string fieldName, IEHHelper helper, IAPILog logger)
        {
            int fieldArtifactId = 0;

            using (IObjectManager objectManager = helper.GetServicesManager().CreateProxy <IObjectManager>(ExecutionIdentity.System))
            {
                var queryRequest = new QueryRequest()
                {
                    ObjectType = new ObjectTypeRef()
                    {
                        Name = "Field"
                    },
                    Condition = $"'Name' == '{fieldName}' AND 'Object Type' == 'Document'"
                };

                var queryResult = await objectManager.QuerySlimAsync(helper.GetActiveCaseID(), queryRequest, 0, 1);

                if (queryResult.TotalCount > 0)
                {
                    fieldArtifactId = queryResult.Objects.Select(x => x.ArtifactID).FirstOrDefault();
                    logger.LogVerbose("Alert field artifactID: {fieldArtifactID}", fieldArtifactId);
                }
            }

            return(fieldArtifactId);
        }
Ejemplo n.º 7
0
        public static bool FindFieldOnLayout(IDBContext context, int fieldArtifactID, int layoutArtifactID, IAPILog logger)
        {
            string sql =
                @"SELECT COUNT(1)
            FROM LayoutField
            WHERE FieldArtifactID = @fieldArtifactID
                AND LayoutArtifactID = @layoutArtifactID";

            SqlParameter fieldArtifact  = new SqlParameter("@fieldArtifactID", SqlDbType.Int);
            SqlParameter layoutArtifact = new SqlParameter("@layoutArtifactID", SqlDbType.Int);

            fieldArtifact.Value  = fieldArtifactID;
            layoutArtifact.Value = layoutArtifactID;

            logger.LogDebug("Querying for field {fieldArtifactID} on layout {layoutArtifactID}", fieldArtifactID, layoutArtifactID);
            var count = context.ExecuteSqlStatementAsScalar <int>(sql, new SqlParameter[] { fieldArtifact, layoutArtifact });

            logger.LogDebug("Count returned from LayoutField: {count}", count);

            if (count > 0)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 8
0
 public ExportJob(IServicesMgr svcMgr, IArtifactQueries artifactQueries, Int32 workspaceArtifactId, ExecutionIdentity identity, Int32 activeArtifactId, IAPILog logger)
 {
     SvcManager          = svcMgr;
     ArtifactQueries     = artifactQueries;
     IdentityCurrentUser = identity;
     WorkspaceArtifactId = workspaceArtifactId;
     ActiveArtifactId    = activeArtifactId;
     Logger = logger;
 }
Ejemplo n.º 9
0
 public ExportJob(IServicesMgr svcMgr, ISqlQueryHelper sqlQueryHelper, IArtifactQueries artifactQueries, Int32 workspaceArtifactId, ExecutionIdentity identity, IDBContext dbContext, string tempJobErrorsTableName, IAPILog logger)
 {
     SvcManager          = svcMgr;
     SqlQueryHelper      = sqlQueryHelper;
     ArtifactQueries     = artifactQueries;
     IdentityCurrentUser = identity;
     WorkspaceArtifactId = workspaceArtifactId;
     DbContext           = dbContext;
     TempTableName       = tempJobErrorsTableName;
     Logger = logger;
 }
Ejemplo n.º 10
0
 public ExportJob(IServicesMgr svcMgr, IArtifactQueries artifactQueries, IDBContext dbContext, ISqlQueryHelper sqlQueryHelper, Int32 workspaceArtifactId, ExecutionIdentity identity, Artifact activeArtifact, IAPILog logger)
 {
     SvcManager          = svcMgr;
     ArtifactQueries     = artifactQueries;
     DbContext           = dbContext;
     SqlQueryHelper      = sqlQueryHelper;
     WorkspaceArtifactId = workspaceArtifactId;
     IdentityCurrentUser = identity;
     ActiveArtifact      = activeArtifact;
     Logger = logger;
 }
Ejemplo n.º 11
0
        public override Response PopulateScriptBlocks()
        {
            Response retVal = new Response()
            {
                Success = true,
                Message = string.Empty
            };

            int currentWorkspaceArtifactID = Helper.GetActiveCaseID();
            int currentLayoutArtifactID    = this.ActiveLayout.ArtifactID;
            int currentDocumentArtifactID  = this.ActiveArtifact.ArtifactID;

            IAPILog logger = Helper.GetLoggerFactory().GetLogger();

            int fieldArtifactID = RelativityAlertPIEH.Helper.GetFieldArtifactID(_fieldName, Helper, logger).GetAwaiter().GetResult();

            if (fieldArtifactID < 1)
            {
                logger.LogDebug("Alert field {fieldName} not found in workspace {caseArtifactID}",
                                _fieldName, currentWorkspaceArtifactID);
                return(retVal);
            }

            IDBContext workspaceDbContext = this.Helper.GetDBContext(currentWorkspaceArtifactID);
            bool       fieldExists        = RelativityAlertPIEH.Helper.FindFieldOnLayout(workspaceDbContext, fieldArtifactID, currentLayoutArtifactID, logger);

            if (!fieldExists)
            {
                logger.LogVerbose("Alert NOT fired because {fieldName} field not present on workspace {caseArtifactID}, layout {layoutArtifactID}",
                                  _fieldName, currentWorkspaceArtifactID, currentLayoutArtifactID);
                return(retVal);
            }

            string alertFieldText = "";

            if (!this.ActiveArtifact.Fields[_fieldName].Value.IsNull)
            {
                alertFieldText = RelativityAlertPIEH.Helper.SanitizeAlertText(this.ActiveArtifact.Fields[_fieldName].Value.Value.ToString());
            }

            if (!String.IsNullOrEmpty(alertFieldText))
            {
                string alert = $"<script type=\"text/javascript\"> alert(\"{ alertFieldText }\"); </script>";
                this.RegisterClientScriptBlock(new ScriptBlock()
                {
                    Key = "alertKey", Script = alert
                });
                logger.LogDebug("Alert fired on workspace {caseArtifactID}, layout {layoutArtifactID}, and document {documentArtifactID}",
                                currentWorkspaceArtifactID, currentLayoutArtifactID, currentDocumentArtifactID);
            }
            else
            {
                logger.LogVerbose("Alert NOT fired on workspace {caseArtifactID}, layout {layoutArtifactID}, and document {documentArtifactID}",
                                  currentWorkspaceArtifactID, currentLayoutArtifactID, currentDocumentArtifactID);
            }

            logger.LogVerbose("Alert text detected: {alertFieldText}",
                              alertFieldText);

            return(retVal);
        }
Ejemplo n.º 12
0
        public override void Execute()
        {
            IAPILog logger = Helper.GetLoggerFactory().GetLogger();

            try
            {
                /* Adding message so time of last check-in updates */
                RaiseMessage("Managing the agents.", 10);

                /* Resource Pool ArtifactID is hard coded for now (Default pool)
                 * Will eventually make this accessible in the UI */
                int poolId = 1015040;

                /* Agent Server Adjustment factor.
                 * Will eventually make this accessible in the UI */
                int adjFactor = 10;

                /* This switch tells Agent Agent to not create any agents on a server containing the dtSearch search agent.
                 * Will eventually make this accessible in the UI*/
                bool ignoreSearchServer = true;

                /*Use API to create/delete agents instead of manually creating in SQL*/
                bool useApiCreate = true;
                bool useApiDelete = true;

                /* Making stuff */
                logger.LogVerbose("Creating new {objectName}", "Agent Helper");
                IAgentHelper agentHelper = Helper;

                logger.LogVerbose("Creating new {objectName}", "EDDS DB Context");
                IDBContext eddsDbContext = agentHelper.GetDBContext(-1);

                logger.LogVerbose("Creating new {objectName}", "Environment Helper");
                EnvironmentHelper environment = new EnvironmentHelper(eddsDbContext);

                logger.LogVerbose("Creating new {objectName}", "Desired Agents List");
                List <AgentsDesired> desiredAgentsList = new GetAgentsDesiredList(agentHelper, environment, poolId, IsOffHours()).AgentsPerServerObjectList;

                logger.LogVerbose("Creating new {objectName}", "Compared List");
                List <AgentsDesired> comparedList = new CompareDesiredAgentsToExisting(desiredAgentsList, poolId, environment, logger).Compare();

                logger.LogVerbose("Creating new {objectName}", "List Helper");
                AgentsDesiredListHelper listHelper = new AgentsDesiredListHelper(comparedList);

                logger.LogVerbose("Creating new {objectName}", "Create List");
                List <AgentsDesired> createList = listHelper.GetAgentCreateList();

                logger.LogVerbose("Creating new {objectName}", "Delete List");
                List <AgentsDesired> deleteList = listHelper.GetAgentDeleteList();

                logger.LogVerbose("Creating new {objectName}", "Spots Per Server List");
                List <SpotsPerServer> spotsPerServerList = new GetSpotsPerServerList(eddsDbContext, environment, adjFactor, poolId, ignoreSearchServer).SpotsPerServerList;

                logger.LogVerbose("Creating {objectName}", "Agent Create");
                ICreateAgent createAgent = new CreateAgentSql(eddsDbContext, environment);
                if (useApiCreate)
                {
                    createAgent = new CreateAgentApi(eddsDbContext, environment, agentHelper);
                }

                logger.LogVerbose("Creating {objectName}", "Agent Delete");
                IDeleteAgent deleteAgent = new DeleteAgent(eddsDbContext);
                if (useApiDelete)
                {
                    deleteAgent = new DeleteAgentApi(eddsDbContext, agentHelper);
                }


                /* Log createList, deleteList, and spotsPerServerList contents */
                string createListString         = "";
                string deleteListString         = "";
                string spotsPerServerListString = "";

                foreach (AgentsDesired cL in createList)
                {
                    createListString += string.Format("{0} - {1} - {2}\r\n", cL.Guid, cL.Count, cL.RespectsResourcePool);
                }

                foreach (AgentsDesired dL in deleteList)
                {
                    deleteListString += string.Format("{0} - {1} - {2}\r\n", dL.Guid, dL.Count, dL.RespectsResourcePool);
                }

                foreach (SpotsPerServer sP in spotsPerServerList)
                {
                    spotsPerServerListString += string.Format("{0} - {1}\r\n", sP.AgentServerArtifactId, sP.Spots);
                }

                logger.LogDebug("Delete List : {deleteList}", deleteListString);
                logger.LogDebug("Create List: {createList}", createListString);
                logger.LogDebug("Spots Per Server List = {spotsPerServerList}", spotsPerServerListString);


                /* Create */
                RunAgentCreate agentCreate = new RunAgentCreate(eddsDbContext, environment, createAgent, createList, spotsPerServerList, logger);
                logger.LogVerbose("Running {objectName}", "Agent Create");
                agentCreate.Run();
                logger.LogVerbose("Completed {objectName}", "Agent Create");


                /* Delete */
                RunAgentDelete agentDelete = new RunAgentDelete(eddsDbContext, environment, deleteAgent, poolId, deleteList, logger);
                logger.LogVerbose("Running {objectName}", "Agent Delete");
                agentDelete.Run();
                logger.LogVerbose("Completed {objectName}", "Agent Delete");
            }
            catch (Exception ex)
            {
                RaiseError(ex.Message, ex.StackTrace);
                logger.LogError("Exception during agent Execute(): {ex}", ex);
                RaiseMessage("There has been an error. See log for more details", 1);
            }
        }
Ejemplo n.º 13
0
 public ExportConsoleJob(IServicesMgr svcManager, IDBContext dbContextEdds, IDBContext dbContext, ExecutionIdentity currentUserIdentity, ExecutionIdentity systemIdentity, IArtifactQueries artifactQueries, ISqlQueryHelper sqlQueryHelper, IAPILog logger, int workspaceArtifactId, int currentArtifactId, string buttonName, string selectedObjectType, int priority)
 {
     SvcManager          = svcManager;
     DbContextEdds       = dbContextEdds;
     DbContext           = dbContext;
     IdentityCurrentUser = currentUserIdentity;
     IdentitySystem      = systemIdentity;
     ArtifactQueries     = artifactQueries;
     SqlQueryHelper      = sqlQueryHelper;
     WorkspaceArtifactId = workspaceArtifactId;
     CurrentArtifactId   = currentArtifactId;
     ButtonName          = buttonName;
     SelectedObjectType  = selectedObjectType;
     Logger   = logger;
     Priority = priority;
 }
Ejemplo n.º 14
0
        public override Response Execute()
        {
            //Get the logger from the helper and set the ForContext to this class.
            _logger = Helper.GetLoggerFactory().GetLogger().ForContext <WorkspaceCreate>();

            // construct a response object with default values
            retVal.Message = String.Empty;
            retVal.Success = true;

            try
            {
                // get the current workspace artifact ID
                int currentWorkspaceID = Helper.GetActiveCaseID();

                // get the current workspace database context
                IDBContext workspaceDBContext = Helper.GetDBContext(currentWorkspaceID);

                // query for template workspace artifactID
                int templateWorkspaceID = GetTemplateCase(workspaceDBContext);

                using (IRSAPIClient proxy = Helper.GetServicesManager().CreateProxy <IRSAPIClient>(ExecutionIdentity.System))
                {
                    // query for template workspace
                    DTOs.Workspace template = FindWorkspaceArtifactID(templateWorkspaceID, proxy);

                    if (template != null)
                    {
                        Folder._templateRootFolder = template.RootFolderID;
                    }
                    else
                    {
                        retVal.Success = false;
                        retVal.Message = "Template workspace not found; unable to replicate folder structure.";
                        return(retVal);
                    }

                    // query for target workspace
                    DTOs.Workspace target = FindWorkspaceArtifactID(currentWorkspaceID, proxy);

                    if (target != null)
                    {
                        Folder._targetRootFolder = target.RootFolderID;
                    }
                    else
                    {
                        retVal.Success = false;
                        retVal.Message = "Target workspace not found; unable to replicate folder structure.";
                        _logger.LogError("Target workspace not found; unable to replicate folder structure.");
                        return(retVal);
                    }

                    proxy.APIOptions.WorkspaceID = templateWorkspaceID;

                    // get folders from template workspace
                    List <DTOs.Result <DTOs.Folder> > source = Program.GetSourceFolders(proxy);

                    if (source == null)
                    {
                        retVal.Success = false;
                        retVal.Message = "Query for folders in template workspace was unsuccessful.";
                        _logger.LogError("Query for folders in template workspace was unsuccessful.");
                        return(retVal);
                    }
                    else if (source.Count == 1)
                    {
                        retVal.Success = false;
                        retVal.Message = "No folders found in template workspace.";
                        _logger.LogError("No folders found in template workspace.");
                        return(retVal);
                    }

                    proxy.APIOptions.WorkspaceID = currentWorkspaceID;

                    // create folders
                    Folder.CreateFolders(source, proxy);
                }
            }
            catch (Exception ex)
            {
                // catch an exception if it occurs, log it, and return a response with success = false.
                retVal.Success = false;
                retVal.Message = ex.ToString();
            }

            return(retVal);
        }