예제 #1
0
        /// <summary>
        ///     Process an event asynchronously.
        /// </summary>
        /// <param name="e">event to process</param>
        /// <returns>
        ///     Task to wait on.
        /// </returns>
        public async Task HandleAsync(ReportAddedToIncident e)
        {
            if (e.Incident.ReportCount != 1)
            {
                var tags = await _repository.GetTagsAsync(e.Incident.Id);

                if (tags.Count > 0)
                {
                    return;
                }
            }

            _logger.Debug("Checking tags..");
            var ctx = new TagIdentifierContext(e.Report);
            var identifierProvider = new IdentifierProvider();
            var identifiers        = identifierProvider.GetIdentifiers(ctx);

            foreach (var identifier in identifiers)
            {
                identifier.Identify(ctx);
            }

            ExtractTagsFromCollections(e, ctx);

            _logger.Debug("done..");

            await _repository.AddAsync(e.Incident.Id, ctx.Tags.ToArray());
        }
        /// <inheritdoc />
        public async Task HandleAsync(IMessageContext context, IncidentReOpened e)
        {
            var tags = await _repository.GetIncidentTagsAsync(e.IncidentId);

            if (tags.Any(x => x.Name == "incident-reopened"))
            {
                return;
            }

            await _repository.AddAsync(e.IncidentId, new[] { new Tag("incident-reopened", 1) });
        }
예제 #3
0
        public async Task <TagsResponse> SaveAsync(Tags tags)
        {
            try
            {
                await _tagsRepository.AddAsync(tags);

                await _unitOfWork.CompleteAsync();

                return(new TagsResponse(tags));
            }
            catch (Exception ex)
            {
                return(new TagsResponse($"An error occured when saving the tag: {ex.Message}"));
            }
        }
        // Add tags in a graph to the database
        public async Task AddTags(Graph g, String keywords, Dataset dataset)
        {
            String[]           keywordsList = keywords.Split(",");
            IEnumerable <Tags> existingTags = await _tagsRepository.ListAsync();

            foreach (String keyword in keywordsList)
            {
                Tags existingTag = null;
                foreach (Tags tag in existingTags)
                {
                    if (tag.Name.ToLower().Equals(keyword.ToLower()))
                    {
                        existingTag = tag;
                        break;
                    }
                }
                if (existingTag != null)
                {
                    DatasetTags datasetTag = new DatasetTags {
                        Dataset = dataset, Tags = existingTag
                    };
                    dataset.DatasetTags.Add(datasetTag);
                }
                else
                {
                    Tags tag = new Tags {
                        Name = keyword
                    };
                    await _tagsRepository.AddAsync(tag);

                    await _unitOfWork.CompleteAsync();

                    DatasetTags datasetTag = new DatasetTags {
                        Dataset = dataset, Tags = tag
                    };
                    dataset.DatasetTags.Add(datasetTag);
                    await _unitOfWork.CompleteAsync();
                }
            }
        }
예제 #5
0
        /// <summary>
        ///     Process an event asynchronously.
        /// </summary>
        /// <param name="e">event to process</param>
        /// <returns>
        ///     Task to wait on.
        /// </returns>
        public async Task HandleAsync(IMessageContext context, ReportAddedToIncident e)
        {
            _logger.Debug("Checking tags..");
            var tags = await _repository.GetIncidentTagsAsync(e.Incident.Id);

            var ctx         = new TagIdentifierContext(e.Report, tags);
            var identifiers = _tagIdentifierProvider.GetIdentifiers(ctx);

            foreach (var identifier in identifiers)
            {
                identifier.Identify(ctx);
            }

            ExtractTagsFromCollections(e, ctx);

            _logger.DebugFormat("Done, identified {0} new tags", ctx.NewTags);

            if (ctx.NewTags.Count == 0)
            {
                return;
            }

            await _repository.AddAsync(e.Incident.Id, ctx.NewTags.ToArray());
        }
 /// <inheritdoc />
 public async Task HandleAsync(IncidentReOpened e)
 {
     await _repository.AddAsync(e.IncidentId, new[] { new Tag("incident-reopened", 1) });
 }