Exemple #1
0
        public static Blog ToShopifyModel(this StorefrontModel.Blog blog, Storefront.Model.Language language)
        {
            var retVal = new Blog();

            retVal.InjectFrom <NullableAndEnumValueInjecter>(blog);
            retVal.Handle = blog.Name;
            if (blog.Articles != null)
            {
                retVal.Articles = new MutablePagedList <Article>((pageNumber, pageSize) =>
                {
                    var articlesForLanguage = blog.Articles.Where(x => x.Language == language || x.Language.IsInvariant).GroupBy(x => x.Name).Select(x => x.OrderByDescending(y => y.Language).FirstOrDefault());
                    return(new PagedList <Article>(articlesForLanguage.Select(x => x.ToShopifyModel()), pageNumber, pageSize));
                }, blog.Articles.PageNumber, blog.Articles.PageSize);
            }
            return(retVal);
        }
Exemple #2
0
 public MetafieldsCollection(string scope, Storefront.Model.Language language, ICollection <DynamicProperty> dynamicProperties)
 {
     this.Namespace = scope;
     if (dynamicProperties != null)
     {
         foreach (var dynamicProperty in dynamicProperties)
         {
             if (dynamicProperty.IsDictionary || dynamicProperty.IsArray)
             {
                 this.Add(dynamicProperty.Name, dynamicProperty.Values.GetLocalizedStringsForLanguage(language).Select(x => x.Value));
             }
             else
             {
                 this.Add(dynamicProperty.Name, dynamicProperty.Values.GetLocalizedStringsForLanguage(language).Select(x => x.Value).FirstOrDefault());
             }
         }
     }
 }
Exemple #3
0
        public virtual Blog ToLiquidBlog(StorefrontModel.Blog blog, Storefront.Model.Language language)
        {
            var retVal = new Blog();

            retVal.Title = blog.Title;
            retVal.Url   = blog.Url;

            if (blog.Articles != null)
            {
                retVal.Articles = new MutablePagedList <Article>((pageNumber, pageSize, sortInfos) =>
                {
                    //var articlesForLanguage = blog.Articles.Where(x => x.Language == language || x.Language.IsInvariant).GroupBy(x => x.Name).Select(x => x.OrderByDescending(y => y.Language).FirstOrDefault());
                    // ordering generating exception
                    var articlesForLanguage = blog.Articles.GroupBy(x => x.Name).Select(x => x.FindWithLanguage(language)).Where(x => x != null && x.IsPublished);
                    return(new PagedList <Article>(articlesForLanguage.Select(x => x.ToShopifyModel()).OrderByDescending(x => x.CreatedAt).AsQueryable(), pageNumber, pageSize));
                }, blog.Articles.PageNumber, blog.Articles.PageSize);
            }

            retVal.Handle     = blog.Name.Replace(" ", "-").ToLower();
            retVal.Categories = blog.Categories;

            return(retVal);
        }
        public static Blog ToShopifyModel(this StorefrontModel.Blog blog, Storefront.Model.Language language)
        {
            var retVal = new Blog();

            retVal.InjectFrom <NullableAndEnumValueInjecter>(blog);
            retVal.Handle = blog.Name;

            if (blog.Articles != null)
            {
                retVal.Articles = new MutablePagedList <Article>((pageNumber, pageSize, sortInfos) =>
                {
                    //var articlesForLanguage = blog.Articles.Where(x => x.Language == language || x.Language.IsInvariant).GroupBy(x => x.Name).Select(x => x.OrderByDescending(y => y.Language).FirstOrDefault());
                    // ordering generating exception
                    var articlesForLanguage = blog.Articles.GroupBy(x => x.Name).Select(x => x.FindWithLanguage(language)).Where(x => x != null && x.PublicationStatus != Storefront.Model.StaticContent.ContentPublicationStatus.Private);
                    return(new PagedList <Article>(articlesForLanguage.Select(x => x.ToShopifyModel()).OrderByDescending(x => x.CreatedAt), pageNumber, pageSize));
                }, blog.Articles.PageNumber, blog.Articles.PageSize);
            }

            retVal.Handle     = blog.Name.Replace(" ", "-").ToLower();
            retVal.Categories = blog.Categories;

            return(retVal);
        }
        public virtual Blog ToLiquidBlog(StorefrontModel.Blog blog, Storefront.Model.Language language)
        {
            var factory = ServiceLocator.Current.GetInstance <ShopifyModelFactory>();
            var retVal  = factory.CreateBlog();

            retVal.InjectFrom <NullableAndEnumValueInjecter>(blog);
            retVal.Handle = blog.Name;

            if (blog.Articles != null)
            {
                retVal.Articles = new MutablePagedList <Article>((pageNumber, pageSize, sortInfos) =>
                {
                    //var articlesForLanguage = blog.Articles.Where(x => x.Language == language || x.Language.IsInvariant).GroupBy(x => x.Name).Select(x => x.OrderByDescending(y => y.Language).FirstOrDefault());
                    // ordering generating exception
                    var articlesForLanguage = blog.Articles.GroupBy(x => x.Name).Select(x => x.FindWithLanguage(language)).Where(x => x != null && x.IsPublished);
                    return(new PagedList <Article>(articlesForLanguage.Select(x => x.ToShopifyModel()).OrderByDescending(x => x.CreatedAt), pageNumber, pageSize));
                }, blog.Articles.PageNumber, blog.Articles.PageSize);
            }

            retVal.Handle     = blog.Name.Replace(" ", "-").ToLower();
            retVal.Categories = blog.Categories;

            return(retVal);
        }
        public static Blog ToShopifyModel(this StorefrontModel.Blog blog, Storefront.Model.Language language)
        {
            var converter = ServiceLocator.Current.GetInstance <ShopifyModelConverter>();

            return(converter.ToLiquidBlog(blog, language));
        }
Exemple #7
0
        public static Blog ToShopifyModel(this StorefrontModel.Blog blog, Storefront.Model.Language language)
        {
            var converter = new ShopifyModelConverter();

            return(converter.ToLiquidBlog(blog, language));
        }
        public virtual Order ToLiquidOrder(CustomerOrder order, Storefront.Model.Language language, IStorefrontUrlBuilder urlBuilder)
        {
            var result = new Order();

            result.InjectFrom <NullableAndEnumValueInjecter>(order);

            result.Cancelled         = order.IsCancelled == true;
            result.CancelledAt       = order.CancelledDate;
            result.CancelReason      = order.CancelReason;
            result.CancelReasonLabel = order.CancelReason;
            result.CreatedAt         = order.CreatedDate ?? DateTime.MinValue;
            result.Name         = order.Number;
            result.OrderNumber  = order.Number;
            result.CurrencyCode = order.Currency.Code;
            result.CustomerUrl  = urlBuilder.ToAppAbsolute("/account/order/" + order.Number);

            if (order.Addresses != null)
            {
                var shippingAddress = order.Addresses
                                      .FirstOrDefault(a => (a.Type & AddressType.Shipping) == AddressType.Shipping);

                if (shippingAddress != null)
                {
                    result.ShippingAddress = ToLiquidAddress(shippingAddress);
                }

                var billingAddress = order.Addresses
                                     .FirstOrDefault(a => (a.Type & AddressType.Billing) == AddressType.Billing);

                if (billingAddress != null)
                {
                    result.BillingAddress = ToLiquidAddress(billingAddress);
                }
                else if (shippingAddress != null)
                {
                    result.BillingAddress = ToLiquidAddress(shippingAddress);
                }

                result.Email = order.Addresses
                               .Where(a => !string.IsNullOrEmpty(a.Email))
                               .Select(a => a.Email)
                               .FirstOrDefault();
            }


            var discountTotal = order.DiscountTotal;
            var discounts     = new List <Discount>();

            if (order.Discount != null)
            {
                discounts.Add(ToLiquidDiscount(order.Discount));
            }

            var taxLines = new List <Objects.TaxLine>();

            if (order.InPayments != null)
            {
                var inPayment = order.InPayments.OrderByDescending(p => p.CreatedDate)
                                .FirstOrDefault();

                if (inPayment != null)
                {
                    if (string.IsNullOrEmpty(inPayment.Status))
                    {
                        result.FinancialStatus      = inPayment.IsApproved == true ? "Paid" : "Pending";
                        result.FinancialStatusLabel = inPayment.IsApproved == true ? "Paid" : "Pending";
                    }
                    else
                    {
                        result.FinancialStatus      = inPayment.Status;
                        result.FinancialStatusLabel = inPayment.Status;
                    }
                }
            }

            if (order.Shipments != null)
            {
                result.ShippingMethods      = order.Shipments.Select(s => ToLiquidShippingMethod(s)).ToArray();
                result.ShippingPrice        = result.ShippingMethods.Sum(s => s.Price);
                result.ShippingPriceWithTax = result.ShippingMethods.Sum(s => s.PriceWithTax);

                var orderShipment = order.Shipments.FirstOrDefault();

                if (orderShipment != null)
                {
                    if (string.IsNullOrEmpty(orderShipment.Status))
                    {
                        result.FulfillmentStatus      = orderShipment.IsApproved == true ? "Sent" : "Not sent";
                        result.FulfillmentStatusLabel = orderShipment.IsApproved == true ? "Sent" : "Not sent";
                    }
                    else
                    {
                        result.FulfillmentStatus      = orderShipment.Status;
                        result.FulfillmentStatusLabel = orderShipment.Status;
                    }
                }

                if (order.ShippingTaxTotal.Amount > 0)
                {
                    taxLines.Add(new Objects.TaxLine
                    {
                        Title = "Shipping",
                        Price = order.ShippingTaxTotal.Amount * 100,
                        Rate  = order.Shipments.Average(s => s.TaxPercentRate)
                    });
                }
                if (order.ShippingDiscountTotal.Amount > 0)
                {
                    discounts.Add(new Discount
                    {
                        Type   = "ShippingDiscount",
                        Code   = "Shipping",
                        Amount = order.ShippingDiscountTotal.Amount * 100,
                    });
                }
            }

            if (order.Items != null)
            {
                result.LineItems            = order.Items.Select(i => ToLiquidLineItem(i, language, urlBuilder)).ToArray();
                result.SubtotalPrice        = order.SubTotal.Amount * 100;
                result.SubtotalPriceWithTax = order.SubTotalWithTax.Amount * 100;

                if (order.SubTotalTaxTotal.Amount > 0)
                {
                    taxLines.Add(new Objects.TaxLine
                    {
                        Title = "Line items",
                        Price = order.SubTotalTaxTotal.Amount * 100,
                        Rate  = order.Items.Average(i => i.TaxPercentRate)
                    });
                }
            }


            if (order.DiscountAmount.Amount > 0)
            {
                discounts.Add(new Discount
                {
                    Type   = "Order subtotal",
                    Code   = "Order",
                    Amount = order.DiscountAmount.Amount * 100
                });
            }

            if (!order.InPayments.IsNullOrEmpty())
            {
                result.Transactions = order.InPayments.Select(x => ToLiquidTransaction(x)).ToArray();
            }

            result.TaxLines = taxLines.ToArray();
            result.TaxPrice = taxLines.Sum(t => t.Price);

            result.Discounts = discounts.ToArray();

            result.TotalPrice = order.Total.Amount * 100;

            return(result);
        }
        public static Order ToShopifyModel(this CustomerOrder order, Storefront.Model.Language language, IStorefrontUrlBuilder urlBuilder)
        {
            var converter = ServiceLocator.Current.GetInstance <ShopifyModelConverter>();

            return(converter.ToLiquidOrder(order, language, urlBuilder));
        }
        public static Order ToShopifyModel(this CustomerOrder order, Storefront.Model.Language language, IStorefrontUrlBuilder urlBuilder)
        {
            var converter = new ShopifyModelConverter();

            return(converter.ToLiquidOrder(order, language, urlBuilder));
        }