private static object MapToNewsTile(JObject tile, JsonSerializer serializer) { var contentId = tile.Value <int>("contentId"); var item = new UmbracoHelper(UmbracoContext.Current).TypedContent(contentId); if (item != null) { var newsTile = tile.ToObject <GridControlNewsTile>(serializer); newsTile.Title = item.GetPropertyValue <string>(NewsTileConfig.Title); newsTile.Summary = item.GetPropertyValue <string>(NewsTileConfig.Summary); newsTile.Date = item.GetPropertyValue <DateTime>(NewsTileConfig.Date); newsTile.Eyebrow = item.GetPropertyValue <string>(NewsTileConfig.Eyebrow); newsTile.Link = item.Url; newsTile.Image = item.GetPropertyValue <IPublishedContent>(NewsTileConfig.Image)?.Url; return(newsTile); } return(null); }
private static object MapToNewsTile(JObject tile) { var contentId = tile.Value <int>("contentId"); var item = new UmbracoHelper(UmbracoContext.Current).TypedContent(contentId); if (item != null) { var newsTile = new GridControlNewsTile { Title = item.GetPropertyValue <string>(NewsTileConfig.Title), Description = item.GetPropertyValue <string>(NewsTileConfig.Description), Date = item.GetPropertyValue <DateTime>(NewsTileConfig.Date), Link = item.Url, Image = item.GetPropertyValue <IPublishedContent>(NewsTileConfig.Image)?.Url }; return(newsTile); } return(null); }
public ActionResult AddProductToBasket(BasketEntry entry) { try { entry.Price = new UmbracoHelper(UmbracoContext.Current).TypedContent(entry.Id).GetPropertyValue <double>("price"); entry.DiscountPercents = new UmbracoHelper(UmbracoContext.Current).TypedContent(entry.Id).GetPropertyValue <int>("discount"); var product = new UmbracoHelper(UmbracoContext.Current).TypedContent(entry.Id); int itemsRemained = product.GetPropertyValue <int>("inStock"); if (entry.Items > itemsRemained) { throw new Exception("Not enough items in stock"); } List <BasketEntry> entries = Session["basket"] as List <BasketEntry>; if (entries == null) { Session["basket"] = new List <BasketEntry>() { entry }; } else { bool found = false; var comp = entries.Where(x => x.Name == entry.Name); foreach (var pr in comp) { bool suitable = true; if (pr.Properties.Count() != entry.Properties.Count()) { suitable = false; } if (suitable) { var entryProp = entry.Properties.OrderBy(x => x.Name).ToList(); var currProp = pr.Properties.OrderBy(x => x.Name).ToList(); for (int i = 0; i < entryProp.Count(); ++i) { if (entryProp[i].Name != currProp[i].Name || entryProp[i].Values[0] != currProp[i].Values[0]) { suitable = false; break; } } } if (suitable) { found = true; pr.Items += entry.Items; break; } } if (!found) { entries.Add(entry); } Session["basket"] = entries; } var contentService = Services.ContentService; IContent content = contentService.GetById(entry.Id); content.SetValue("inStock", itemsRemained - entry.Items); System.Threading.Tasks.Task.Run(() => Services.ContentService.SaveAndPublishWithStatus(content)); return(new HttpStatusCodeResult(HttpStatusCode.OK)); } catch (Exception e) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, e.Message)); } }