/// <summary> /// Gets the YAML file in the Relativity Instance and returns their ArtifactID and LastModifiedOn (essentially last uploaded date for comparisons later) /// </summary> /// <param name="serviceManager"></param> /// <param name="yamlFileName"></param> /// <returns></returns> public async Task <List <Tuple <int, DateTime?> > > QueryYamlFileArtifactIDsByNameAsync(IServicesMgr serviceManager, string yamlFileName) { List <Tuple <int, DateTime?> > retVal = new List <Tuple <int, DateTime?> >(); using (IObjectManager objectManager = serviceManager.CreateProxy <IObjectManager>(ExecutionIdentity.System)) { try { Condition condition1 = new Relativity.Services.TextCondition(PermissionFieldNames.Name, Relativity.Services.TextConditionEnum.EqualTo, yamlFileName); QueryRequest queryRequest = new QueryRequest() { ObjectType = new ObjectTypeRef() { ArtifactTypeID = Constants.ArtifactTypes.ResourceFileId }, Condition = condition1.ToQueryString(), Fields = new List <FieldRef> { new FieldRef { Name = "LastModifiedOn" } } }; QueryResult results = await objectManager.QueryAsync(Constants.Connections.WorkspaceIdAdmin, queryRequest, 1, 100); if (results.TotalCount > 0) { //retVal.AddRange(results.Results.Select(a => Tuple.Create(a.Artifact.ArtifactID, a.Artifact.Fields.Find(x => x.Name.Equals("LastModifiedOn")).ValueAsDate))); retVal.AddRange(results.Objects.Select(a => Tuple.Create(a.ArtifactID, (DateTime?)a["LastModifiedOn"].Value))); } else { _logHelper.LogError( $"DAPI - {nameof(QueryYamlFileArtifactIDsByNameAsync)} - Unable to find YAML file ({yamlFileName})"); } } catch (Exception ex) { _logHelper.LogError( $"DAPI - {nameof(QueryYamlFileArtifactIDsByNameAsync)} - Error while querying resource file ArtifactID: {ex}"); } } return(retVal); }
/// <summary> /// Gets all the User IDs in the specific group designed for DynamicAPI /// </summary> /// <param name="serviceManager"></param> /// <param name="groupName"></param> /// <returns></returns> private async Task <List <int> > GetUsersInGroupByName(IServicesMgr serviceManager, string groupName) { List <int> userIds = new List <int>(); using (IPermissionManager permissionManager = ConnectionHelper.Helper().GetServicesManager().CreateProxy <IPermissionManager>(ExecutionIdentity.System)) using (IObjectManager objectManager = ConnectionHelper.Helper().GetServicesManager() .CreateProxy <IObjectManager>(ExecutionIdentity.System)) { // Get Group id (from specified name) Condition condition1 = new Relativity.Services.TextCondition(PermissionFieldNames.Name, Relativity.Services.TextConditionEnum.EqualTo, groupName); QueryRequest queryRequest = new QueryRequest() { ObjectType = new ObjectTypeRef() { ArtifactTypeID = Constants.ArtifactTypes.GroupId }, Condition = condition1.ToQueryString() }; QueryResult results = await objectManager.QueryAsync(Constants.Connections.WorkspaceIdAdmin, queryRequest, 1, 100); if (results.TotalCount == 0) { throw new Exception( $"Group ({groupName}) is not present in the instance of relativity. Create the group and add the user to this group to access DynamicAPI"); } if (results.TotalCount > 1) { throw new Exception(Constants.Group.MultipleGroupsExist); } // Get list of users in that group GroupRef groupRef = new GroupRef(results.Objects.First().ArtifactID); List <UserRef> users = await permissionManager.GetWorkspaceGroupUsersAsync(Constants.Connections.WorkspaceIdAdmin, groupRef); if (users.Count == 0) { throw new Exception($"Not able to find any users in the group ({groupName})"); } userIds = users.Select(x => x.ArtifactID).ToList(); } return(userIds); }