private void FillOverviews(CampaignsViewModel model, IQueryable<LinkOrderCampaignProductRecord> productsOrderedQueryWithMinimum, IQueryable<LinkOrderCampaignProductRecord> productsOrderedQuery, IQueryable<CampaignRecord> campaignsQuery) { model.Overviews.Add(new CampaignsOverview { Type = OverviewType.Today, ProductsOrdered = productsOrderedQuery .FilterByType(OverviewType.Today) .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved") .Sum(p => (int?)p.Count) ?? 0, MYProfit = Math.Round(productsOrderedQueryWithMinimum .FilterByType(OverviewType.Today) .Where(p => p.OrderRecord.OrderStatusRecord.Id != int.Parse(OrderStatus.Cancelled.ToString("d")) && p.OrderRecord.OrderStatusRecord.Id != int.Parse(OrderStatus.Unapproved.ToString("d"))) .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), SGProfit = Math.Round(productsOrderedQueryWithMinimum .FilterByType(OverviewType.Today) .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved" && p.OrderRecord.CurrencyRecord.CurrencyCulture == "en-SG") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), IDProfit = Math.Round(productsOrderedQueryWithMinimum .FilterByType(OverviewType.Today) .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved" && p.OrderRecord.CurrencyRecord.CurrencyCulture == "id-ID") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), //MYToBePaid = Math.Round(_payoutService.GetAllPayouts() // .Where(p => p.IsPlus == true && p.IsProfitPaid != null && p.IsProfitPaid == false && p.Status != "Pending" && p.UserId == _workContextAccessor.GetContext().CurrentUser.Id && p.Date.Day == DateTime.Now.Day && p.IsCampiaign != null && p.IsCampiaign) // .Select(p => new { Amount = p.Amount }) // .Sum(entry => (double?)entry.Amount) ?? 0, 2), //MYToBeAllPaid = Math.Round(_payoutService.GetAllPayouts() // .Where(p => p.IsProfitPaid != null && p.IsProfitPaid && p.Status != "Pending" && p.UserId == _workContextAccessor.GetContext().CurrentUser.Id && p.Date.Day == DateTime.Now.Day) // .Select(p => new { Amount = p.Amount }) // .Sum(entry => (double?)entry.Amount) ?? 0, 2) //, //ToBePaid = productsOrderedQuery // .FilterByType(OverviewType.Today) // .Where(p => !p.OrderRecord.Reserved.HasValue) // .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) // .Sum(entry => entry.Profit) MYToBeAllPaid = 0 }); model.Overviews.Add(new CampaignsOverview { Type = OverviewType.Yesterday, ProductsOrdered = productsOrderedQuery .FilterByType(OverviewType.Yesterday) .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved") .Sum(p => (int?)p.Count) ?? 0, MYProfit = Math.Round(productsOrderedQueryWithMinimum .FilterByType(OverviewType.Yesterday) .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), SGProfit = Math.Round(productsOrderedQueryWithMinimum .FilterByType(OverviewType.Yesterday) .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved" && p.OrderRecord.CurrencyRecord.CurrencyCulture == "en-SG") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), IDProfit = Math.Round(productsOrderedQueryWithMinimum .FilterByType(OverviewType.Yesterday) .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved" && p.OrderRecord.CurrencyRecord.CurrencyCulture == "id-ID") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), //MYToBeAllPaid = Math.Round(_payoutService.GetAllPayouts() // .Where(p => p.IsProfitPaid != null && p.IsProfitPaid && p.Status != "Pending" && p.UserId == _workContextAccessor.GetContext().CurrentUser.Id && p.Date.Day == DateTime.Now.AddDays(-1).Day) // .Select(p => new { Amount = p.Amount }) // .Sum(entry => (double?)entry.Amount) ?? 0, 2) //, //ToBePaid = productsOrderedQuery // .FilterByType(OverviewType.Yesterday) // .Where(p => !p.OrderRecord.Reserved.HasValue) // .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) // .Sum(entry => entry.Profit) MYToBeAllPaid = 0 }); model.Overviews.Add(new CampaignsOverview { Type = OverviewType.Active, ProductsOrdered = productsOrderedQuery .FilterByType(OverviewType.Active, campaignsQuery) .Where(p => p.OrderRecord.OrderStatusRecord.Id != int.Parse(OrderStatus.Cancelled.ToString("d")) && p.OrderRecord.OrderStatusRecord.Id != int.Parse(OrderStatus.Unapproved.ToString("d")) && p.OrderRecord.IsActive) .Sum(p => (int?)p.Count) ?? 0, MYProfit = Math.Round(productsOrderedQueryWithMinimum .Where(p => p.OrderRecord.OrderStatusRecord.Id != int.Parse(OrderStatus.Cancelled.ToString("d")) && p.OrderRecord.OrderStatusRecord.Id != int.Parse(OrderStatus.Unapproved.ToString("d")) && p.OrderRecord.IsActive) .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), SGProfit = Math.Round(productsOrderedQueryWithMinimum .FilterByType(OverviewType.Active, campaignsQuery) .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved" && p.OrderRecord.CurrencyRecord.CurrencyCulture == "en-SG") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), IDProfit = Math.Round(productsOrderedQueryWithMinimum .FilterByType(OverviewType.Active, campaignsQuery) .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved" && p.OrderRecord.CurrencyRecord.CurrencyCulture == "id-ID") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), MYToBeAllPaid = Math.Round(_payoutService.GetAllPayouts() .Where(p => p.IsProfitPaid != null && p.IsProfitPaid && p.Status != "Pending" && p.UserId == _workContextAccessor.GetContext().CurrentUser.Id) .Select(p => new { Amount = p.Amount }) .Sum(entry => (double?)entry.Amount) ?? 0, 2) }); model.Overviews.Add(new CampaignsOverview { Type = OverviewType.AllTime, ProductsOrdered = productsOrderedQuery .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved") .Sum(p => (int?)p.Count) ?? 0, MYProfit = Math.Round(productsOrderedQueryWithMinimum .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), SGProfit = Math.Round(productsOrderedQueryWithMinimum .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved" && p.OrderRecord.CurrencyRecord.CurrencyCulture == "en-SG") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), IDProfit = Math.Round(productsOrderedQueryWithMinimum .Where(p => p.OrderRecord.OrderStatusRecord.Name != "Cancelled" && p.OrderRecord.OrderStatusRecord.Name != "Unapproved" && p.OrderRecord.CurrencyRecord.CurrencyCulture == "id-ID") .Select(p => new { Profit = p.Count * (p.CampaignProductRecord.Price - p.CampaignProductRecord.BaseCost) }) .Sum(entry => (double?)entry.Profit) ?? 0, 2), //MYToBeAllPaid = Math.Round(_payoutService.GetAllPayouts() // .Where(p => (p.IsPlus == false && p.UserId == _workContextAccessor.GetContext().CurrentUser.Id && p.Status == "Pending") || (p.IsProfitPaid != null && p.IsProfitPaid && p.Status != "Pending" && p.UserId == _workContextAccessor.GetContext().CurrentUser.Id)) // .Select(p => new { Amount = p.Amount }) // .Sum(entry => (double?)entry.Amount) ?? 0, 2) MYToBeAllPaid = 0 }); foreach (var item in model.Overviews) { item.MYProfit = item.MYProfit - item.MYToBeAllPaid; if (item.MYProfit < 0) item.MYProfit = item.MYProfit * -1; } }