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