public async void ImageTagManipulation() { using (MockContext context = MockContext.Start(this.GetType().Name)) { HttpMockServer.Initialize(this.GetType().Name, "ImageTagManipulation", RecorderMode); var projectId = CreateTrainedImageClassificationProject(); ICustomVisionTrainingClient client = GetTrainingClient(); var untaggedImages = client.GetUntaggedImagesAsync(projectId).Result; Assert.Equal(0, untaggedImages.Count); var taggedImages = client.GetTaggedImagesAsync(projectId).Result; Assert.Equal(10, taggedImages.Count); var imageToBeModified = taggedImages[0].Id; var tagToBeModified = taggedImages[0].Tags[0].TagId; await client.DeleteImageTagsAsync(projectId, new string[] { imageToBeModified.ToString() }, new string[] { tagToBeModified.ToString() }); untaggedImages = client.GetUntaggedImagesAsync(projectId).Result; Assert.Equal(1, untaggedImages.Count); var imageTags = new ImageTagCreateEntry(imageToBeModified, tagToBeModified); var result = client.CreateImageTagsAsync(projectId, new ImageTagCreateBatch(new ImageTagCreateEntry[] { imageTags })).Result; Assert.Equal(1, result.Created.Count); Assert.Equal(imageToBeModified, result.Created[0].ImageId); Assert.Equal(tagToBeModified, result.Created[0].TagId); await client.DeleteProjectAsync(projectId); } }
public async Task <IActionResult> ChangeImageTag(Guid projectId, Guid imageId, ChangeImageTagViewModel changeImageTagViewModel) { if (!ModelState.IsValid) { if (changeImageTagViewModel.TagId == null) { TempData["Warning"] = "You must choose a tag for the photo."; } return(RedirectToAction(nameof(ImageController.ChangeImageTag), new { projectId, imageId })); } Image image = trainingApi.GetImagesByIds(projectId, new List <string>() { imageId.ToString() }).FirstOrDefault(); IList <string> tagsList = image.Tags?.Select(x => x.TagId.ToString()).ToList(); if (tagsList != null) { trainingApi.DeleteImageTags(projectId, new List <string>() { imageId.ToString() }, tagsList); } ImageTagCreateEntry imageTagCreateEntry = new ImageTagCreateEntry(imageId, Guid.Parse(changeImageTagViewModel.TagId)); IList <ImageTagCreateEntry> imageTagCreateEntries = new List <ImageTagCreateEntry>() { imageTagCreateEntry }; ImageTagCreateBatch createBatch = new ImageTagCreateBatch(imageTagCreateEntries); trainingApi.CreateImageTags(projectId, createBatch); return(RedirectToAction(nameof(ProjectController.Details), "Project", new { projectId })); }