protected override dynamic GetData() { string url = string.Format("/{0}", this.requestHandler.HttpContext.GetRouteValue("url")); SerializedProduct serializedProduct = this.requestHandler.Storage.GetRepository <ISerializedProductRepository>().WithUrl(url); if (serializedProduct == null) { throw new HttpException(404, "Not found."); } IEnumerable <SerializedAttribute> serializedAttributes = JsonConvert.DeserializeObject <IEnumerable <SerializedAttribute> >(serializedProduct.SerializedAttributes); IEnumerable <SerializedPhoto> serializedPhotos = JsonConvert.DeserializeObject <IEnumerable <SerializedPhoto> >(serializedProduct.SerializedPhotos); SerializedPhoto serializedCoverPhoto = serializedPhotos.FirstOrDefault(sph => sph.IsCover); return(new ExpandoObjectBuilder() .AddProperty("Id", serializedProduct.ProductId) .AddProperty("Code", serializedProduct.Code) .AddProperty("Name", serializedProduct.Name) .AddProperty("Description", serializedProduct.Description) .AddProperty("Price", serializedProduct.Price) .AddProperty("Title", serializedProduct.Title) .AddProperty("MetaDescription", serializedProduct.MetaDescription) .AddProperty("MetaKeywords", serializedProduct.MetaKeywords) .AddProperty("Attributes", serializedAttributes.OrderBy(sa => sa.Feature.Position).Select(sa => this.CreateAttributeViewModel(sa))) .AddProperty("CoverPhoto", this.CreatePhotoViewModel(serializedCoverPhoto)) .AddProperty("Photos", serializedPhotos.OrderBy(sph => sph.Position).Select(sph => this.CreatePhotoViewModel(sph))) .Build()); }
public void SerializeProduct(Product product) { foreach (Culture culture in this.requestHandler.GetService <ICultureManager>().GetNotNeutralCultures()) { SerializedProduct serializedProduct = this.requestHandler.Storage.GetRepository <ISerializedProductRepository>().WithKey(culture.Id, product.Id); if (serializedProduct == null) { this.requestHandler.Storage.GetRepository <ISerializedProductRepository>().Create(this.SerializeProduct(culture, product)); } else { SerializedProduct temp = this.SerializeProduct(culture, product); serializedProduct.CategoryId = temp.CategoryId; serializedProduct.Url = temp.Url; serializedProduct.Code = temp.Code; serializedProduct.Name = temp.Name; serializedProduct.Description = temp.Description; serializedProduct.Title = temp.Title; serializedProduct.Price = temp.Price; serializedProduct.MetaDescription = temp.MetaDescription; serializedProduct.MetaKeywords = temp.MetaKeywords; serializedProduct.SerializedAttributes = temp.SerializedAttributes; serializedProduct.SerializedPhotos = temp.SerializedPhotos; this.requestHandler.Storage.GetRepository <ISerializedProductRepository>().Edit(serializedProduct); } } this.requestHandler.Storage.Save(); }
private dynamic CreateProductViewModel(SerializedProduct serializedProduct) { IEnumerable <SerializedPhoto> serializedPhotos = JsonConvert.DeserializeObject <IEnumerable <SerializedPhoto> >(serializedProduct.SerializedPhotos); SerializedPhoto serializedCoverPhoto = serializedPhotos.FirstOrDefault(sph => sph.IsCover); return(new ExpandoObjectBuilder() .AddProperty("Id", serializedProduct.ProductId) .AddProperty("Url", serializedProduct.Url) .AddProperty("Code", serializedProduct.Code) .AddProperty("Name", serializedProduct.Name) .AddProperty("Price", serializedProduct.Price) .AddProperty("CoverPhoto", this.CreatePhotoViewModel(serializedCoverPhoto)) .Build()); }
private SerializedProduct SerializeProduct(Culture culture, Product product) { List <SerializedProduct.Attribute> serializedAttributes = new List <SerializedProduct.Attribute>(); foreach (ProductAttribute productAttribute in this.requestHandler.Storage.GetRepository <IProductAttributeRepository>().FilteredByProductId(product.Id)) { Attribute attribute = this.requestHandler.Storage.GetRepository <IAttributeRepository>().WithKey(productAttribute.AttributeId); serializedAttributes.Add(this.SerializeAttribute(culture, attribute)); } List <SerializedProduct.Photo> serializedPhotos = new List <SerializedProduct.Photo>(); foreach (Photo photo in this.requestHandler.Storage.GetRepository <IPhotoRepository>().FilteredByProductId(product.Id)) { serializedPhotos.Add(this.SerializePhoto(culture, photo)); } SerializedProduct serializedProduct = new SerializedProduct(); serializedProduct.CultureId = culture.Id; serializedProduct.ProductId = product.Id; serializedProduct.CategoryId = product.CategoryId; serializedProduct.Url = product.Url; serializedProduct.Code = product.Code; serializedProduct.Name = this.requestHandler.GetLocalizationValue(product.NameId); serializedProduct.Description = this.requestHandler.GetLocalizationValue(product.DescriptionId); serializedProduct.Price = product.Price; serializedProduct.Title = this.requestHandler.GetLocalizationValue(product.TitleId); serializedProduct.MetaDescription = this.requestHandler.GetLocalizationValue(product.MetaDescriptionId); serializedProduct.MetaKeywords = this.requestHandler.GetLocalizationValue(product.MetaKeywordsId); if (serializedAttributes.Count != 0) { serializedProduct.SerializedAttributes = this.SerializeObject(serializedAttributes); } if (serializedPhotos.Count != 0) { serializedProduct.SerializedPhotos = this.SerializeObject(serializedPhotos); } return(serializedProduct); }