Я создал метод списка, который получает общее количество проданных продуктов в моем приложении MVC/ASP.NET. Мне нужно добавить параметр DateTime к методу списка, который сообщает ему, что нужно продавать только продукты, сделанные накануне.
Назначение этого списка в том, чтобы клиент мог видеть, что он продал за предыдущий день и количество проданных товаров. Это просто статистика продаж.
Я не уверен, как создать временной интервал для метода, из которого можно получить элементы. Я думал об использовании даты и времени в качестве параметра метода списка, а затем объявлял временной интервал. Я не уверен, как подойти к этому, хотя ..
Это мой метод IList:
public IList<BestsellersReportLine> DailyBestSellersReport(int billingCountryId = 0,
int recordsToReturn = 5, int orderBy = 1, int groupBy = 1, bool showHidden = false)
{
var query1 = from opv in _opvRepository.Table
join o in _orderRepository.Table on opv.OrderId equals o.Id
join pv in _productVariantRepository.Table on opv.ProductVariantId equals pv.Id
join p in _productRepository.Table on pv.ProductId equals p.Id
select opv;
var query2 = groupBy == 1 ?
//group by product variants
from opv in query1
group opv by opv.ProductVariantId into g
select new
{
EntityId = g.Key,
TotalAmount = g.Sum(x => x.PriceExclTax),
TotalQuantity = g.Sum(x => x.Quantity),
}
:
//group by products
from opv in query1
group opv by opv.ProductVariant.ProductId into g
select new
{
EntityId = g.Key,
TotalAmount = g.Sum(x => x.PriceExclTax),
TotalQuantity = g.Sum(x => x.Quantity),
}
;
switch (orderBy)
{
case 1:
{
query2 = query2.OrderByDescending(x => x.TotalQuantity);
}
break;
case 2:
{
query2 = query2.OrderByDescending(x => x.TotalAmount);
}
break;
default:
throw new ArgumentException("Wrong orderBy parameter", "orderBy");
}
if (recordsToReturn != 0 && recordsToReturn != int.MaxValue)
query2 = query2.Take(recordsToReturn);
var result = query2.ToList().Select(x =>
{
var reportLine = new BestsellersReportLine()
{
EntityId = x.EntityId,
TotalAmount = x.TotalAmount,
TotalQuantity = x.TotalQuantity
};
return reportLine;
}).ToList();
return result;
}
Я создал эти переменные для работы, не знаю, правильно ли это?:
DateTime CurrentDay = DateTime.Now;
DateTime PreviousDay = DateTime.Now.AddDays(-1);
DateTime TimeFrame = DateTime.Parse("00:00:00 AM");
Любые идеи?
Благодарю вас!
//Крис