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); }
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; }
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) { } } }