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); }
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); }
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); }
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); }
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; }
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; }
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; }
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); }
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); } }
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; }
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); }