Ejemplo n.º 1
0
        public object GetProductPurchasedWithData(HttpRequest request, HotcakesApplication hccApp)
        {
            var productId = request.Params["productId"];
            var period    = (SalesPeriod)Enum.Parse(typeof(SalesPeriod), request.Params["period"]);

            var products = hccApp.CatalogServices.Products.GetMostPurchasedWith(productId, period, 4);

            var results = new List <ProductPurchasedWithInfo>();

            foreach (var product in products)
            {
                var reportingService = Factory.CreateService <ReportingService>();
                var performanceInfo  = reportingService.GetPurchasedWithProductPerformance(product.Bvin, period);

                var result = new ProductPurchasedWithInfo(hccApp, product);

                result.QuantitySold = performanceInfo.QuantitySold;
                result.Revenue      = performanceInfo.Revenue.ToString("C");

                result.IsQuantitySoldGrowing = performanceInfo.QuantitySold >= performanceInfo.QuantitySoldPrev;
                result.IsRevenueGrowing      = performanceInfo.Revenue >= performanceInfo.RevenuePrev;

                var periodString = LocalizationUtils.GetSalesPeriodLower(period);
                var lessThan     = Localization.GetFormattedString("LessSinceLast", periodString);
                var moreThan     = Localization.GetFormattedString("MoreSinceLast", periodString);

                result.QuantitySoldComparison = result.IsQuantitySoldGrowing ? moreThan : lessThan;
                result.RevenueComparison      = result.IsRevenueGrowing ? moreThan : lessThan;

                var quantitySoldPercentageChange = 1D;
                if (performanceInfo.QuantitySoldPrev != 0)
                {
                    quantitySoldPercentageChange = (performanceInfo.QuantitySold - performanceInfo.QuantitySoldPrev) /
                                                   performanceInfo.QuantitySoldPrev / 100.0;
                }
                result.QuantitySoldPercentageChange = quantitySoldPercentageChange.ToString("p0");

                var revenuePercentageChange = 1D;
                if (performanceInfo.RevenuePrev != 0)
                {
                    revenuePercentageChange =
                        (double)
                        ((performanceInfo.Revenue - performanceInfo.RevenuePrev) / performanceInfo.RevenuePrev / 100);
                }
                result.RevenuePercentageChange = revenuePercentageChange.ToString("p0");

                results.Add(result);
            }

            return(results);
        }
Ejemplo n.º 2
0
        public PerformanceInfoJson(PerformanceInfo performanceInfo, SalesPeriod period, ILocalizationHelper localization)
        {
            BouncedName   = localization.GetString("Bounced");
            AbandonedName = localization.GetString("Abandoned");
            PurchasedName = localization.GetString("Purchased");

            BouncedData   = performanceInfo.BouncedData;
            AbandonedData = performanceInfo.AbandonedData;
            PurchasedData = performanceInfo.PurchasedData;

            ChartLabels = performanceInfo.ChartLabels;
            Events      = performanceInfo.Events;

            Views      = performanceInfo.Views.ToString("N0");
            AddsToCart = performanceInfo.AddsToCart.ToString("N0");
            Purchases  = performanceInfo.Purchases.ToString("N0");

            var bouncesPercentageChange = 0D;

            if (performanceInfo.ViewsPrev != 0)
            {
                bouncesPercentageChange = Math.Abs(performanceInfo.Views - performanceInfo.ViewsPrev) /
                                          (double)performanceInfo.ViewsPrev;
            }
            else if (performanceInfo.Views != 0)
            {
                bouncesPercentageChange = 1;
            }
            bouncesPercentageChange = Math.Round(bouncesPercentageChange, 2);
            ViewsPercentageChange   = bouncesPercentageChange.ToString("p0");

            var abandomentsPercentageChange = 0D;

            if (performanceInfo.AddsToCartPrev != 0)
            {
                abandomentsPercentageChange = Math.Abs(performanceInfo.AddsToCart - performanceInfo.AddsToCartPrev) /
                                              (double)performanceInfo.AddsToCartPrev;
            }
            else if (performanceInfo.AddsToCart != 0)
            {
                abandomentsPercentageChange = 1;
            }
            abandomentsPercentageChange = Math.Round(abandomentsPercentageChange, 2);
            AddsToCartPercentageChange  = abandomentsPercentageChange.ToString("p0");

            var purchasesPercentageChange = 0D;

            if (performanceInfo.PurchasesPrev != 0)
            {
                purchasesPercentageChange = Math.Abs(performanceInfo.Purchases - performanceInfo.PurchasesPrev) /
                                            (double)performanceInfo.PurchasesPrev;
            }
            else if (performanceInfo.Purchases != 0)
            {
                purchasesPercentageChange = 1;
            }
            purchasesPercentageChange = Math.Round(purchasesPercentageChange, 2);
            PurchasesPercentageChange = purchasesPercentageChange.ToString("p0");

            var periodString = LocalizationUtils.GetSalesPeriodLower(period);
            var noChange     = localization.GetFormattedString("NoChangeSinceLast", periodString);
            var lessThan     = localization.GetFormattedString("LessSinceLast", periodString);
            var moreThan     = localization.GetFormattedString("MoreSinceLast", periodString);

            ViewsComparison = noChange;
            if (Math.Abs(bouncesPercentageChange) >= 0.01)
            {
                IsViewsGrowing  = performanceInfo.Views >= performanceInfo.ViewsPrev;
                ViewsComparison = IsViewsGrowing.Value ? moreThan : lessThan;
            }

            AddsToCartComparison = noChange;
            if (Math.Abs(abandomentsPercentageChange) >= 0.01)
            {
                IsAddsToCartGrowing  = performanceInfo.AddsToCart >= performanceInfo.AddsToCartPrev;
                AddsToCartComparison = IsAddsToCartGrowing.Value ? moreThan : lessThan;
            }

            PurchasesComparison = noChange;
            if (Math.Abs(purchasesPercentageChange) >= 0.01)
            {
                IsPurchasesGrowing  = performanceInfo.Purchases >= performanceInfo.PurchasesPrev;
                PurchasesComparison = IsPurchasesGrowing.Value ? moreThan : lessThan;
            }
        }