Cześć,
przechowuję w tabeli w DB informację o akcjach wykonanych przez usera, wygląda to w ten sposób (usunąłem zbędne kolumny):
I teraz próbuję na potrzeby raportowe (do wykresu) wyciągnąć te dane pogrupowane po dacie co do dnia, a później dla danego typu w tej dacie wyciągnąć ilość wpisów.
Czyli docelowo chciałbym uzyskać taki efekt:
"data": [
{
"date": "2022-11-17",
"actions": {
"DepositoryEdit": 13,
"DepositoryAdd": 7,
"DepositoryAddComment": 2,
}
},
{
"date": "2022-11-18",
"actions": {
"DepositoryEdit": 15,
"DepositoryAdd": 25,
"DepositoryAddComment": 6,
}
},
{
"date": "2022-11-19"
"actions": {
"DepositoryEdit": 99,
"DepositoryAdd": 5,
"DepositoryAddComment": 11,
}
}
]
Udało mi się pogrupowac typie, ale nie potrafię wprowadzić tego dodatkowego elementu jakim jest podział na daty. Aktualnie otrzymuję coś takiego:
Mój kod:
var allActions = dbx.DepositoryActionLogs.Where(z =>
z.Success && z.CreatedDate.Date >= dto.DateFrom && z.CreatedDate.Date <= dto.DateTo &&
(dto.UserGuid == null || z.UserId == userId))
.GroupBy(x => new { x.CreatedDate.Date, Type = x.HistoryType })
.Select(z => new
{
CreatedDate = z.Key.Date,
z.Key.Type,
Count = z.Count()
}).ToList();
dynamic expando = new ExpandoObject();
foreach (var action in allActions)
{
DynamicallyHelpers.AddProperty(expando, action.Type.ToString(), (ulong)action.Count);
}
Prośba o wsparcie.
EF Core + Postgres + .NET 6