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();
        }
Beispiel #3
0
        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);
        }