public async Task <IHttpActionResult> Post(Model.ShopItem shopItem) { var model = this.entityStore.Create <Model.ShopItem>(); model.Id = System.Guid.NewGuid(); var regex = System.Text.RegularExpressions.Regex.Match( shopItem.SerializedImage, @"data:(?<type>.+?);base64,(?<data>.+)"); var base64Data = regex.Groups["data"].Value; var byteData = System.Convert.FromBase64String(base64Data); var request = new HttpClient(); request.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey); string requestParameters = "visualFeatures=Categories,Tags,Description"; string uri = uriBase + "?" + requestParameters; using (ByteArrayContent content = new ByteArrayContent(byteData)) { content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); try { var response = await request.PostAsync(uri, content); string contentString = await response.Content.ReadAsStringAsync(); model.CognitiveAnalysis = Model.CognitiveAnalysis.FromJson(contentString); } catch (System.Exception e) { this.logger.LogException(e); } } model.Brand = shopItem.Brand; model.Name = shopItem.Name; model.SerializedImage = shopItem.SerializedImage; model.Version = shopItem.Version; if (null != shopItem.Opinions && shopItem.Opinions.Any()) { var modelOpinions = shopItem .Opinions .Select(o => { var repository = this.entityStore.Create <Model.ShopItemOpinion>(); repository.Comment = o.Comment; repository.Note = o.Note; repository.ShopItemId = model.Id; return(repository); }); model.Opinions = model.Opinions ?? new List <Model.ShopItemOpinion>(); model.Opinions.AddRange(modelOpinions); } this.entityStore.SaveChanges(); return(Ok(model)); }
public System.Web.Mvc.ActionResult Item(string id) { var shopItem = new Model.ShopItem() { Id = System.Guid.Parse(id), }; return(View(shopItem)); }