public int Compare(OLVGroup x, OLVGroup y) { EnsureGroupTag(x); EnsureGroupTag(y); TransactionAggregates xt = (TransactionAggregates)x.Tag, yt = (TransactionAggregates)y.Tag; return(yt.MaxPositiveNegativeTotalAbsolute.CompareTo(xt.MaxPositiveNegativeTotalAbsolute)); }
private static void EnsureGroupTag(OLVGroup listViewGroup) { if (listViewGroup.Tag == null) { var groupStats = new TransactionAggregates(listViewGroup.Items.Select(i => (Transaction)i.RowObject)); listViewGroup.Tag = groupStats; } }
public async Task <decimal> GetAvgExpenseDeviation() { using (var session = _unitOfWorkFactory.GetSession()) { var expenseAggregates = await session.GetRepository <IExpenseRepository>().GetExpenseAggregates(); var budgetExpenseAggregates = (await session.GetRepository <IBudgetExpenseRepository>().GetExpenseAggregates()).ToDictionary(a => $"{a.Year}-{a.Month}"); var deviations = new List <decimal>(); foreach (var aggr in expenseAggregates) { TransactionAggregates budgetAggr = null; if (budgetExpenseAggregates.TryGetValue($"{aggr.Year}-{aggr.Month}", out budgetAggr)) { deviations.Add(100 * (budgetAggr.Sum - aggr.Sum) / budgetAggr.Sum); } } return(deviations.Any() ? deviations.Average() : 0); } }
private void txnListView_AboutToCreateGroups(object sender, CreateGroupsEventArgs e) { if (e.Parameters.GroupByColumn == olvColumnCategory) { var grandAggregate = new TransactionAggregates(); foreach (var group in e.Groups) { EnsureGroupTag(group); var groupAggregates = (TransactionAggregates)group.Tag; grandAggregate.Add(groupAggregates); groupAggregates.SaveRunningAggregate(grandAggregate); var totalsText = groupAggregates.GetTotalsByReasonDisplayText(); var count = groupAggregates.Count; group.Header = "{0} - {1} {2}".FormatEx((string)group.Key, count, totalsText); group.Footer = groupAggregates.GetRunningAggregateDisplayText(); group.Subtitle = " "; //group.Collapsed = true; } } }