private void display(RecordStats stats)
 {
     timeTotalValueLbl.Text            = new TimeSpanVM(stats.MinutesTotal).ToString();
     daysTotalValueLbl.Text            = stats.DaysTotal.ToString();
     activeDaysTotalValueLbl.Text      = stats.ActiveDaysTotal.ToString();
     activeDaysPercentValueLbl.Text    = stats.ActiveDaysPercent.ToString("n2") + " %";
     minutesPerDaysValueLbl.Text       = stats.MinutesPerDays.ToString("n2");
     minutesPerActiveDaysValueLbl.Text = stats.MinutesPerActiveDays.ToString("n2");
     display(stats.TypesStats);
 }
        public RecordStats Count(IList <Record> records, DateTime?dateFrom, DateTime?dateTo)
        {
            if (records == null || records.Count == 0)
            {
                var statsTmp = new RecordStats();
                if (dateFrom.HasValue && dateTo.HasValue)
                {
                    statsTmp.DaysTotal = getDaysDiff(dateFrom.Value, dateTo.Value);
                }
                return(new RecordStats());
            }
            var minutesTotal    = 0;
            var activeDaysTotal = 0;
            var realDateFrom    = dateFrom.HasValue
                                ? dateFrom.Value
                                : getMin(records);
            var realDateTo = dateTo.HasValue
                                ? dateTo.Value
                                : getMax(records);
            var daysTotal  = getDaysDiff(realDateFrom, realDateTo);
            var activeDays = new HashSet <DateTime>();

            foreach (var record in records)
            {
                minutesTotal += record.MinutesTotal;
                if (!activeDays.Contains(record.Start.Date))
                {
                    activeDays.Add(record.Start.Date);
                    activeDaysTotal++;
                }
            }
            var stats = new RecordStats();

            stats.DaysTotal       = daysTotal;
            stats.ActiveDaysTotal = activeDaysTotal;
            stats.MinutesTotal    = minutesTotal;
            stats.MinutesPerDays  = daysTotal > 0
                                ? minutesTotal / (double)daysTotal
                                : 0.0;
            stats.MinutesPerActiveDays = activeDaysTotal > 0
                                ? minutesTotal / (double)activeDaysTotal
                                : 0.0;
            stats.ActiveDaysPercent = daysTotal > 0
                                ? activeDaysTotal / (double)daysTotal * 100
                                : 0.0;
            stats.TypesStats = count(records);
            return(stats);
        }
 public StatisticsForm(RecordStats stats)
 {
     InitializeComponent();
     display(stats);
 }