Example #1
0
        public async Task <bool> HandlePropertyItemTypesChangedAction(TenantInformation tenant, ActionMessage actionMessage, IBaseRepository baseRepository, IWorkflowMessagingProcessor workflowMessagingProcessor)
        {
            var message    = (PropertyItemTypesChangedMessage)actionMessage;
            var repository = (IPropertyItemTypesChangedRepository)baseRepository;

            var revisionId    = message.RevisionId;
            var isInstance    = message.IsStandard;
            var itemTypes     = message.ItemTypeIds?.ToList();
            var propertyTypes = message.PropertyTypeIds?.ToList();

            var artifactIds = new List <int>();

            if (itemTypes != null && itemTypes.Any())
            {
                Logger.Log("Getting affected artifact IDs for item types", message, tenant);
                var affectedArtifacts = await repository.GetAffectedArtifactIdsForItemTypes(itemTypes, isInstance, revisionId);

                Logger.Log($"Received {affectedArtifacts.Count} affected artifact IDs for item types", message, tenant);
                artifactIds.AddRange(affectedArtifacts);
            }

            if (propertyTypes != null && propertyTypes.Any())
            {
                Logger.Log("Getting affected artifact IDs for property types", message, tenant);
                var affectedArtifacts = await repository.GetAffectedArtifactIdsForPropertyTypes(propertyTypes, isInstance, revisionId);

                Logger.Log($"Received {affectedArtifacts.Count} affected artifact IDs for property types", message, tenant);
                artifactIds.AddRange(affectedArtifacts);
            }

            await ArtifactsChangedMessageSender.Send(artifactIds, tenant, actionMessage, workflowMessagingProcessor);

            return(true);
        }
        public async Task <bool> HandleWorkflowsChangedAction(TenantInformation tenant, ActionMessage actionMessage, IBaseRepository baseRepository, IWorkflowMessagingProcessor workflowMessagingProcessor)
        {
            var message    = (WorkflowsChangedMessage)actionMessage;
            var repository = (IWorkflowsChangedRepository)baseRepository;

            Logger.Log("Getting affected artifact IDs", message, tenant);
            var workflowIds = new[]
            {
                message.WorkflowId
            };
            var artifactIds = await repository.GetAffectedArtifactIds(workflowIds, message.RevisionId);

            await ArtifactsChangedMessageSender.Send(artifactIds, tenant, actionMessage, workflowMessagingProcessor);

            return(true);
        }
        public async Task <bool> HandleUsersGroupsChangedAction(TenantInformation tenant, ActionMessage actionMessage, IBaseRepository baseRepository, IWorkflowMessagingProcessor workflowMessagingProcessor)
        {
            var message    = (UsersGroupsChangedMessage)actionMessage;
            var repository = (IUsersGroupsChangedRepository)baseRepository;

            Logger.Log($"Handling Users Groups Changed Message for change type {message.ChangeType}", message, tenant);

            if (message.ChangeType == UsersGroupsChangedType.Create)
            {
                Logger.Log("No need to send Artifacts Changed Messages when Creating Users or Groups", message, tenant);
                return(true);
            }

            Logger.Log("Getting affected artifact IDs", message, tenant);
            var artifactIds = await repository.GetAffectedArtifactIds(message.UserIds, message.GroupIds, message.RevisionId);

            await ArtifactsChangedMessageSender.Send(artifactIds, tenant, actionMessage, workflowMessagingProcessor);

            return(true);
        }