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