Exemple #1
0
        public ActionResult Campaigns(bool?isError, string result)
        {
            var model       = new CampaignsViewModel();
            var user        = _wca.GetContext().CurrentUser;
            var teeyootUser = (TeeyootUserPart)user.ContentItem.Get(typeof(TeeyootUserPart));

            model.CurrencyCode = teeyootUser.CurrencyRecord == null ? "USD" : teeyootUser.CurrencyRecord.Code;

            var campaignsQuery = _campaignService.GetCampaignsOfUser(user.Id).Where(aa => aa.IsApproved);

            var campaignList = new List <CampaignRecord>();

            foreach (var campaign in campaignsQuery)
            {
                _campaignService.CalculateCampaignProfit(campaign.Id, true);

                if (campaign.ProductMinimumGoal <= campaign.ProductCountSold && campaign.Products != null && campaign.Products.Count > 0)
                {
                    campaignList.Add(campaign);
                }
            }

            var productsOrderedQueryWithMinimum = _orderService.GetProductsOrderedOfCampaigns(campaignList.Select(c => c.Id).ToArray());

            FillCampaigns(model, campaignsQuery);
            FillOverviews(model, campaignsQuery);

            return(View(model));
        }
 public CampaignsPage(AdminCustomerData adminCustomerData)
 {
     NavigationPage.SetBackButtonTitle(this, "");
     InitializeComponent();
     _adminCustomerData = adminCustomerData;
     BindingContext     = _campaignsViewModel = new CampaignsViewModel(Navigation);
     _campaignsViewModel.Initialize(_adminCustomerData);
 }
Exemple #3
0
        private void FillCampaigns(CampaignsViewModel model, IQueryable <CampaignRecord> campaignsQuery)
        {
            var user        = _wca.GetContext().CurrentUser;
            var teeyootUser = (TeeyootUserPart)user.ContentItem.Get(typeof(TeeyootUserPart));

            var    campaignProducts = _campaignService.GetAllCampaignProducts();
            var    orderedProducts  = _orderService.GetAllOrderedProducts();
            double x = 0;
            var    campaignSummaries = campaignsQuery
                                       .Select(c => new CampaignSummary
            {
                Alias      = c.Alias,
                EndDate    = c.EndDate,
                Goal       = c.ProductCountGoal,
                Id         = c.Id,
                Name       = c.Title,
                Sold       = c.ProductCountSold,
                Minimum    = c.ProductMinimumGoal,
                StartDate  = c.StartDate,
                Status     = c.CampaignStatusRecord,
                IsActive   = c.IsActive,
                IsArchived = c.IsArchived,
                ShowBack   = c.BackSideByDefault,
                IsPrivate  = c.IsPrivate
            })
                                       .OrderBy(c => c.StartDate)
                                       .ToArray();

            foreach (var c in campaignSummaries)
            {
                var cam = campaignsQuery.FirstOrDefault(aa => aa.Id == c.Id);
                c.FirstProductId = (campaignsQuery.FirstOrDefault(aa => aa.Id == c.Id).Products[0].Id);
                // c.Profit = double.TryParse(c.CampaignProfit, out x) ? double.Parse(c.CampaignProfit) : 0;
                c.SummaryCurrency = "USD";
                if (c.SummaryCurrency == cam.CurrencyRecord.Code)
                {
                    c.Profit = double.Parse(cam.CampaignProfit);
                }
                else
                {
                    c.Profit = _priceConversionService.ConvertPrice(double.Parse(cam.CampaignProfit), cam.CurrencyRecord, teeyootUser.CurrencyRecord.Code).Value;
                }
            }
            campaignSummaries = campaignSummaries.Where(c => c.FirstProductId > 0).ToArray();

            model.Campaigns = campaignSummaries;
        }
Exemple #4
0
        private void FillOverviews(CampaignsViewModel model,
                                   IQueryable <CampaignRecord> campaignsQuery)
        {
            // Today
            var today   = DateTime.UtcNow.Date;
            var nextDay = today.AddDays(1);

            var yesterday = today.AddDays(-1);
            //return
            //query.Where(p => p.OrderRecord.Created.Date >= yesterday && p.OrderRecord.Created.Date < today);

            var campaingIndexes = model.Campaigns.Select(aa => aa.Id);

            var todayOrders = _orderService.GetAllOrders().Where(aa =>
                                                                 aa.IsActive == true &&
                                                                 aa.Created >= today &&
                                                                 aa.Created.Date < nextDay &&
                                                                 aa.OrderStatusRecord.Id != int.Parse(OrderStatus.Cancelled.ToString("d")) &&
                                                                 aa.OrderStatusRecord.Id != int.Parse(OrderStatus.Pending.ToString("d")) &&
                                                                 aa.OrderStatusRecord.Id != int.Parse(OrderStatus.Refunded.ToString("d")) &&
                                                                 aa.Campaign.ProductCountSold >= aa.Campaign.ProductMinimumGoal); //.Select(aa => aa.TotalSold).Sum();
            double tmptodayProfit       = 0;
            var    todayProductsOrdered = 0;                                                                                      ///todayOrders.Select(aa => aa.TotalSold).ToArray().Sum();


            foreach (var order in todayOrders)
            {
                if (!campaingIndexes.Contains(order.Campaign.Id))
                {
                    continue;
                }
                foreach (var p in order.Products)
                {
                    if (p.OrderRecord.Email == null || p.OrderRecord.IsActive != true)
                    {
                        continue;
                    }
                    // todayProductsOrdered += p.Count;
                    tmptodayProfit += _priceConversionService.ConvertPrice(p.Count *
                                                                           (p.CampaignProductRecord.Price - CalculateVersion2(p.CampaignProductRecord.CampaignRecord_Id, p.CampaignProductRecord.Id, order.Campaign.ProductCountSold)), order.Campaign.CurrencyRecord, Module.Services.ExchangeRateFor.Seller).Value;
                    todayProductsOrdered += p.Count;
                }
            }

            var todayProfit = Math.Round(tmptodayProfit, 2);

            var todayCampaignsOverview = new CampaignsOverview
            {
                Type            = OverviewType.Today,
                ProductsOrdered = todayProductsOrdered,
                Profit          = todayProfit,
                ToBeAllPaid     = 0
            };

            model.Overviews.Add(todayCampaignsOverview);

            // Yesterday

            var yesterDayOrders = _orderService.GetAllOrders().Where(
                aa => aa.IsActive == true &&
                aa.Created.Date >= yesterday &&
                aa.Created.Date < today &&
                aa.OrderStatusRecord.Id != int.Parse(OrderStatus.Cancelled.ToString("d")) &&
                aa.OrderStatusRecord.Id != int.Parse(OrderStatus.Pending.ToString("d")) &&
                aa.OrderStatusRecord.Id != int.Parse(OrderStatus.Refunded.ToString("d")) &&
                aa.Campaign.ProductCountSold >= aa.Campaign.ProductMinimumGoal);
            double tmpyesterdayProfit       = 0;
            var    yesterdayProductsOrdered = 0; // yesterDayOrders.Select(aa => aa.TotalSold).ToArray().Sum();


            foreach (var order in yesterDayOrders)
            {
                if (!campaingIndexes.Contains(order.Campaign.Id))
                {
                    continue;
                }
                foreach (var p in order.Products)
                {
                    tmpyesterdayProfit
                        +=
                            _priceConversionService.ConvertPrice
                                (p.Count * (p.CampaignProductRecord.Price - CalculateVersion2(p.CampaignProductRecord.CampaignRecord_Id, p.CampaignProductRecord.Id, order.Campaign.ProductCountSold)), order.Campaign.CurrencyRecord, Module.Services.ExchangeRateFor.Seller).Value;
                    yesterdayProductsOrdered += p.Count;
                }
            }

            var yesterdayCampaignsOverview = new CampaignsOverview
            {
                Type            = OverviewType.Yesterday,
                ProductsOrdered = yesterdayProductsOrdered,
                Profit          = Math.Round(tmpyesterdayProfit, 2),
                ToBeAllPaid     = 0
            };

            model.Overviews.Add(yesterdayCampaignsOverview);

            // Active

            double activeProfit          = 0;
            double tmpactiveProfit       = 0;
            var    activeProductsOrdered = 0; //activeOrderes.Select(aa => aa.TotalSold).Sum();



            foreach (var campaign in model.Campaigns)
            {
                if (!campaign.IsActive)
                {
                    continue;
                }

                activeProductsOrdered += campaign.Sold;
                tmpactiveProfit       += campaign.Profit;
            }

            activeProfit = Math.Round(tmpactiveProfit, 2);

            var activeCampaignsOverview = new CampaignsOverview
            {
                Type            = OverviewType.Active,
                ProductsOrdered = activeProductsOrdered,
                Profit          = activeProfit,
                ToBeAllPaid     = 0
            };

            model.Overviews.Add(activeCampaignsOverview);

            // AllTime
            double allTimeProfit          = 0;
            double tmpallTimeProfit       = 0;
            var    allTimeProductsOrdered = 0;

            foreach (var campaign in model.Campaigns)
            {
                var campaginRecod = _campaignService.GetCampaignById(campaign.Id);
                if (campaginRecod.ProductCountSold >= campaginRecod.ProductMinimumGoal)
                {
                    tmpallTimeProfit       += campaign.Profit;
                    allTimeProductsOrdered += campaign.Sold;
                }
            }

            allTimeProfit = Math.Round(tmpallTimeProfit, 2);

            var allTimeCampaignsOverview = new CampaignsOverview
            {
                Type            = OverviewType.AllTime,
                ProductsOrdered = allTimeProductsOrdered,
                Profit          = allTimeProfit,
                ToBeAllPaid     = 0
            };

            model.Overviews.Add(allTimeCampaignsOverview);

            foreach (var item in model.Overviews)
            {
                item.Profit = item.Profit;// -item.ToBeAllPaid;
                if (item.Profit < 0)
                {
                }
            }
        }