Пример #1
0
        public async Task <Label> CreateAsync(string decodedString, LabelType type)
        {
            var factory = LabelFactory.Create(type);
            var label   = await factory.CreateAsync(decodedString);

            _context.Labels.Add(label);
            await _context.SaveChangesAsync();

            return(label);
        }
Пример #2
0
        public ActionResult <IEnumerable <LabelView> > SaveOrUpdateLabels(long topicId, string imageId, [FromBody] IEnumerable <LabelView> labelViews)
        {
            return(Execute(topicId, (topic) =>
            {
                #region validation

                CheckMandatoryParameter(nameof(imageId), imageId);
                CheckMandatoryParameter(nameof(labelViews), labelViews);

                if (!ImageService.ExistsImage(topic, imageId))
                {
                    return NotFound(Messages.ImageNotFound(imageId));
                }

                // check referenced objectclass ids
                var objectClasses = ObjectClassService.GetObjectClasses(topic);
                foreach (var labelView in labelViews)
                {
                    if (!objectClasses.Any(o => o.Id == labelView.ObjectClassId))
                    {
                        return NotFound(Messages.ObjectClassNotFound(labelView.ObjectClassId));
                    }
                }

                ImageLabel image = ImageService.GetImageLabel(topic, imageId);
                if (labelViews.Any(o => o.Right > image.Width || o.Bottom > image.Height))
                {
                    return BadRequest(Messages.LabelCoordinatesOutsideOfImage(image.Width, image.Height));
                }

                #endregion

                // convert labelview to labels
                List <Label> labels = new List <Label>();
                foreach (LabelView labelView in labelViews)
                {
                    var label = LabelFactory.Create(labelView);
                    label.ObjectClass = objectClasses.Single(o => o.Id == label.ObjectClassId);
                    labels.Add(label);
                }

                // save labels
                IEnumerable <Label> savedLabels = LabelService.SaveLabels(topic, image, labels);

                // convert result to labelviews
                List <LabelView> savedLabelViews = new List <LabelView>();
                foreach (Label label in savedLabels)
                {
                    savedLabelViews.Add(LabelFactory.CreateView(label));
                }

                return Ok(savedLabelViews);
            }));
        }