예제 #1
0
        public LearnerPeriodStatsBoxToken GetLearnerPeriodCouponStats(AdminDashboardFiltersToken filter)
        {
            try
            {
                var reportPeriod   = PeriodSelection2DateRange(filter.period);
                var previousPeriod = Period2Previous(filter.period);

                using (var context = new lfeAuthorEntities())
                {
                    var totals   = context.tvf_FACT_DASH_GetLearnerPeriodCouponStats(filter.currencyId, reportPeriod.from, reportPeriod.to).FirstOrDefault();
                    var currency = ActiveCurrencies.FirstOrDefault(x => x.CurrencyId == filter.currencyId);

                    if (totals == null || currency == null)
                    {
                        return(new LearnerPeriodStatsBoxToken());
                    }

                    var previousTotals = context.tvf_FACT_DASH_GetLearnerPeriodCouponStats(filter.currencyId, previousPeriod.from, previousPeriod.to).FirstOrDefault();

                    var couponValue = ReportEnums.eStatsTypes.LearnerCouponsClaimedValue.Type2LearnerPeriodStatsBoxToken(1, totals.TotalDiscount.FormatDecimal(2), previousTotals != null ? previousTotals.TotalDiscount.FormatDecimal(2) : 0);

                    couponValue.DisplayedValue = String.Format("{0}{1}", currency.Symbol, totals.TotalDiscount.FormatDecimal(2));

                    var box = ReportEnums.eStatsTypes.LearnerCouponsClaimed.Type2LearnerPeriodStatsBoxToken(1, totals.TotalCouponsClaimed, previousTotals != null ? previousTotals.TotalCouponsClaimed : 0, couponValue);

                    return(box);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Get Admin Dashboard learner period coupon stats", ex, CommonEnums.LoggerObjectTypes.Reports);
                return(new LearnerPeriodStatsBoxToken());
            }
        }
예제 #2
0
        private void AdjustTopSellers(TopSellersToken token)
        {
            if (token.Top_EUR.Count < 5)
            {
                var currency = ActiveCurrencies.FirstOrDefault(x => x.CurrencyId == EUR_CURRENCY_ID);

                var toAdd = 5 - token.Top_EUR.Count;

                for (var i = 0; i < toAdd; i++)
                {
                    token.Top_EUR.Add(new AuthorPayoutToken {
                        Currency = currency
                    });
                }
            }

            if (token.Top_USD.Count < 5)
            {
                var currency = ActiveCurrencies.FirstOrDefault(x => x.CurrencyId == USD_CURRENCY_ID);

                var toAdd = 5 - token.Top_USD.Count;

                for (var i = 0; i < toAdd; i++)
                {
                    token.Top_USD.Add(new AuthorPayoutToken {
                        Currency = currency
                    });
                }
            }
        }
예제 #3
0
 public GeoServices()
 {
     if (_activeCountries.Any())
     {
         return;
     }
     _activeCurrencies = ActiveCurrencies.Select(x => x.ToBaseCurrencyDto()).ToList();
 }
예제 #4
0
        public List <DashboardPayoutToken> GetNextPayout(int userId)
        {
            try
            {
                var now      = DateTime.Now;
                var previous = now.AddMonths(-1);

                using (var context = new lfeAuthorEntities())
                {
                    var currentPayout = context.sp_PO_GetMonthlyPayoutReport(now.Year, now.Month, LFE_COMMISSION_PERCENT, userId, null).Select(x => x.Entity2DashboardPayoutToken()).ToList();

                    if (currentPayout.Count.Equals(0))
                    {
                        return new List <DashboardPayoutToken>
                               {
                                   new DashboardPayoutToken
                                   {
                                       Sales  = 0
                                       , Fees = 0
                                       , Mbg  = 0
                                                // ,TotalPayout = 0
                                       , Currency = ActiveCurrencies.FirstOrDefault(x => x.CurrencyId == DEFAULT_CURRENCY_ID)
                                   }
                               }
                    }
                    ;

                    var previousPayout = context.sp_PO_GetMonthlyPayoutReport(previous.Year, previous.Month, LFE_COMMISSION_PERCENT, userId, null).Select(x => x.Entity2DashboardPayoutToken()).ToList();

                    foreach (var token in currentPayout)
                    {
                        var t = token;

                        var previousToken = previousPayout.FirstOrDefault(x => x.Currency.CurrencyId == t.Currency.CurrencyId);

                        token.IsUp = previousToken == null || previousToken.TotalPayout <= t.TotalPayout;
                    }


                    return(currentPayout);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("GetNextPayout", ex, CommonEnums.LoggerObjectTypes.Dashboard);

                return(new List <DashboardPayoutToken>());
            }
        }
예제 #5
0
        public DashboardSaleBoxTokenLists GetSales(FiltersToken filter, int userId)
        {
            var token = new DashboardSaleBoxTokenLists
            {
                Currency      = ActiveCurrencies.FirstOrDefault(x => x.CurrencyId == filter.CurrencyId),
                CompareToList = new List <DashboardSaleBoxToken>(),
                Filters       = filter
            };

            try
            {
                var period = Utils.ParseEnum <ReportEnums.ePeriodSelectionKinds>(filter.PeriodTypeId.ToString());

                var dates = PeriodKindToDateRange(period, false);

                var mainList = getDashboardSaleStats(dates, userId, filter.CurrencyId, filter.StoreId);

                var secondDates = PeriodKindToDateRange(period, true);

                var secondList = getDashboardSaleStats(secondDates, userId, filter.CurrencyId, filter.StoreId);

                setSalesBoxesComparsion(mainList, secondList);

                token.List = mainList;

                if (!filter.IsCompareMode)
                {
                    return(token);
                }

                var thirdDates = PreviousRangeFromRange(secondDates);

                var thirdList = getDashboardSaleStats(thirdDates, userId, filter.CurrencyId, filter.StoreId);

                setSalesBoxesComparsion(secondList, thirdList);

                token.CompareToList = secondList;

                return(token);
            }
            catch (Exception ex)
            {
                Logger.Error("get sales statistic for dashboard", CurrentUserId, ex, CommonEnums.LoggerObjectTypes.Dashboard);
                return(token);
            }
        }
예제 #6
0
        public List <SalesTotalsBoxToken> GetSalesTotals(AdminDashboardFiltersToken filter)
        {
            try
            {
                var reportPeriod = PeriodSelection2DateRange(filter.period);

                var previousPeriod = Period2Previous(filter.period);

                using (var context = new lfeAuthorEntities())
                {
                    var totals = context.tvf_FACT_DASH_GetPeriodSalesTotals(filter.currencyId, reportPeriod.from, reportPeriod.to).FirstOrDefault();

                    if (totals == null)
                    {
                        return(new List <SalesTotalsBoxToken>());
                    }

                    var rows         = context.tvf_FACT_DASH_GetPeriodSalesStats(filter.currencyId, reportPeriod.from, reportPeriod.to).FirstOrDefault();
                    var previousRows = context.tvf_FACT_DASH_GetPeriodSalesStats(filter.currencyId, previousPeriod.from, previousPeriod.to).FirstOrDefault();
                    var currency     = ActiveCurrencies.FirstOrDefault(x => x.CurrencyId == filter.currencyId);


                    var list = new List <SalesTotalsBoxToken>
                    {
                        ReportEnums.eStatsTypes.OneTimeSales.Type2SalesTotalsBoxToken(currency, 1, totals.total_onetime_sales, rows != null ? rows.total_onetime_qty  : 0, previousRows != null ? previousRows.total_onetime_qty  : 0),
                        ReportEnums.eStatsTypes.Subscription.Type2SalesTotalsBoxToken(currency, 2, totals.total_subscription_sales, rows != null ? rows.total_subscription_qty  : 0, previousRows != null ? previousRows.total_subscription_qty  : 0),
                        ReportEnums.eStatsTypes.Rental.Type2SalesTotalsBoxToken(currency, 3, totals.total_rental_sales, rows != null ? rows.total_rental_qty  : 0, previousRows != null ? previousRows.total_rental_qty  : 0),
                        ReportEnums.eStatsTypes.Free.Type2SalesTotalsBoxToken(currency, 4, 0, rows != null ? rows.total_free_qty  : 0, previousRows != null ? previousRows.total_free_qty  : 0),
                        ReportEnums.eStatsTypes.MBG.Type2SalesTotalsBoxToken(currency, 5, 0, rows != null ? rows.total_mbg_qty  : 0, previousRows != null ? previousRows.total_mbg_qty  : 0)
                    };

                    return(list);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Get sales totals stats for admin dashboard", ex, CommonEnums.LoggerObjectTypes.Reports);
                return(new List <SalesTotalsBoxToken>());
            }
        }