public bool RecordNewIncident(CreateIncidentInput incidentRequest)
        {
            var incident = _objectMapper.Map <Incident>(incidentRequest);

            incident.PositivitySentimentScore = _languageAnalysys.GetSentimentScore(incident.Description);

            var phrases      = _languageAnalysys.GetKeyPrases(incident.Description);
            var incidentTags = (from phrase in phrases
                                let databasePhrase = _tagRepository.GetAll().FirstOrDefault(tag => tag.Name == phrase)
                                                     select databasePhrase == null
                    ? _tagRepository.InsertAndGetId(new Tag {
                Name = phrase
            })
                    : databasePhrase.Id).ToList();

            var imageTags = _imageAnalysisService.AnalyzeImage(incidentRequest.ImageBytes).Result.Description.Tags;

            incidentTags.AddRange((from imageTag in imageTags
                                   let databasePhrase = _tagRepository.GetAll().FirstOrDefault(tag => tag.Name == imageTag)
                                                        select databasePhrase == null
                    ? _tagRepository.InsertAndGetId(new Tag {
                Name = imageTag
            })
                    : databasePhrase.Id).ToList());

            incident.ImageId = _imageRepository.InsertAndGetId(new Image {
                ImagePath = incidentRequest.ImageName
            });
            var incidentId = _incidentRepository.InsertAndGetId(incident);

            foreach (var incidentTag in incidentTags)
            {
                _incidentTagRepository.Insert(new IncidentTag {
                    IncidentId = incidentId, TagId = incidentTag
                });
            }
            return(true);
        }
예제 #2
0
 public IActionResult Test(string description)
 => Ok(_languageAnalysys.GetSentimentScore(description));