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;
     }
 }
Beispiel #3
0
        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;
                }
            }
        }