Skip to content

Commit 9f57bfa

Browse files
Fix for TotalSummary
1 parent 7268941 commit 9f57bfa

File tree

1 file changed

+36
-4
lines changed

1 file changed

+36
-4
lines changed

Core.Arango.DevExtreme/ArangoTransform.cs

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,53 @@ public async Task<DxLoadResult> ExecuteAsync<T>(IArangoContext arango,
106106

107107
var query = queryBuilder.ToString();
108108

109-
109+
110110
if (HasGrouping)
111111
{
112112
var res = await arango.Query.ExecuteAsync<JObject>(handle, query, Parameter,
113113
cancellationToken: cancellationToken);
114114

115115
var groupData = BuildGrouping(this, res);
116-
117-
return new DxLoadResult
116+
117+
var dxRes = new DxLoadResult
118118
{
119119
Data = groupData,
120-
// Experimental
121120
TotalCount = _loadOption.RequireTotalCount ? groupData.Sum(x=> x.Count ?? 0) : -1,
122121
GroupCount = _loadOption.RequireGroupCount ? groupData.Count : -1,
123122
};
123+
124+
if (_loadOption.TotalSummary?.Any() == true)
125+
{
126+
dxRes.Summary = Summaries.Select((x, idx) =>
127+
{
128+
try
129+
{
130+
131+
if (x.StartsWith("SUM") || x.StartsWith("COUNT"))
132+
return groupData.Sum(y => y.Summary[idx] ?? 0m);
133+
if (x.StartsWith("MAX"))
134+
return groupData.Max(y => y.Summary[idx] ?? 0m);
135+
if (x.StartsWith("MIN"))
136+
return groupData.Min(y => y.Summary[idx] ?? 0m);
137+
if (x.StartsWith("AVG"))
138+
{
139+
return groupData.Average(y => (y.Summary[idx] ?? 0m));
140+
}
141+
142+
143+
return 0m;
144+
}
145+
catch (Exception)
146+
{
147+
return (decimal?) 0m;
148+
}
149+
}).ToArray();
150+
151+
152+
}
153+
154+
155+
return dxRes;
124156
}
125157
else
126158
{

0 commit comments

Comments
 (0)