private async Task <EnterExitRanges> GetRangesOf(string username, List <int> enters, List <int> exits, DateTime start, DateTime end) { var result = new EnterExitRanges { EnterTimers = await GetRangeEnterTimers(username, enters, start, end), ExitTimers = await GetRangeExitTimers(username, exits, start, end) }; return(result); }
private ChartSerie <List <long?> > GetMonthlyTimesSerie(EnterExitRanges timers) { var dict = new Dictionary <int, List <DateTime?> >(); for (var i = 1; i < _timeBuilder.GetMonths(); i++) { dict.Add(i, new List <DateTime?> { null, null }); } foreach (var timer in timers.EnterTimers) { dict[timer.Date.Day][0] = _timeBuilder.UpdateTime(_timeGetter.Now, timer.Time); } foreach (var timer in timers.ExitTimers) { dict[timer.Date.Day][1] = _timeBuilder.UpdateTime(_timeGetter.Now, timer.Time); } var chartSerie = new ChartSerie <List <long?> >(); for (var i = 1; i < _timeBuilder.GetMonths(); i++) { var inst = dict[i]; var extremes = CalculateExtremes(inst); if (extremes.Item1.HasValue && extremes.Item2.HasValue) { chartSerie.data.Add(new List <long?>() { _timeBuilder.ToJavascriptTicks(extremes.Item1.Value, _timeZoneInfo), _timeBuilder.ToJavascriptTicks(extremes.Item2.Value, _timeZoneInfo) }); } else { chartSerie.data.Add(new List <long?> { null, null }); } } return(chartSerie); }
private ChartSerie <double?> GetMonthlyLunchTotalsSerie(EnterExitRanges timers) { var enterExitsLunch = new Dictionary <int, List <DateTime?> >(); for (var i = 1; i < _timeBuilder.GetMonths(); i++) { enterExitsLunch.Add(i, new List <DateTime?>() { null, null }); } foreach (var timer in timers.EnterTimers) { enterExitsLunch[timer.Date.Day][0] = _timeBuilder.UpdateTime(_timeGetter.Now, timer.Time); } foreach (var timer in timers.ExitTimers) { enterExitsLunch[timer.Date.Day][1] = _timeBuilder.UpdateTime(_timeGetter.Now, timer.Time); } var chartSerie = new ChartSerie <double?>(); for (var i = 1; i < _timeBuilder.GetMonths(); i++) { var enterExitLunch = enterExitsLunch[i]; var enterExitLunchExtremes = CalculateExtremes(enterExitLunch); if (enterExitLunchExtremes.Item1.HasValue && enterExitLunchExtremes.Item2.HasValue) { var enterExitLunchDiff = (enterExitLunchExtremes.Item2.Value - enterExitLunchExtremes.Item1.Value); chartSerie.data.Add(enterExitLunchDiff.Hours + (enterExitLunchDiff.Minutes / 100d)); } else { chartSerie.data.Add(null); } } return(chartSerie); }
private ChartSerie <List <long?> > GetWeeklyTimesSerie(EnterExitRanges timers) { var dict = _timeBuilder.GetDayOfWeeks() .ToDictionary(dayOfWeek => dayOfWeek, dayOfWeek => new List <DateTime?> { null, null }); foreach (var timer in timers.EnterTimers) { dict[timer.Date.DayOfWeek][0] = _timeBuilder.UpdateTime(_timeGetter.Now, timer.Time); } foreach (var timer in timers.ExitTimers) { dict[timer.Date.DayOfWeek][1] = _timeBuilder.UpdateTime(_timeGetter.Now, timer.Time); } var chartSerie = new ChartSerie <List <long?> >(); foreach (var dayOfWeek in _timeBuilder.GetDayOfWeeks()) { var inst = dict[dayOfWeek]; var extremes = CalculateExtremes(inst); if (extremes.Item1.HasValue && extremes.Item2.HasValue) { chartSerie.data.Add(new List <long?>() { _timeBuilder.ToJavascriptTicks(extremes.Item1.Value, _timeZoneInfo), _timeBuilder.ToJavascriptTicks(extremes.Item2.Value, _timeZoneInfo) }); } else { chartSerie.data.Add(new List <long?> { null, null }); } } return(chartSerie); }
private ChartSerie <double?> GetWeeklyLunchTotalsSerie(EnterExitRanges timers) { var enterExitsLunch = _timeBuilder.GetDayOfWeeks().ToDictionary(dayOfweek => dayOfweek, dayOfweek => new List <DateTime?>() { null, null }); foreach (var timer in timers.EnterTimers) { enterExitsLunch[timer.Date.DayOfWeek][0] = _timeBuilder.UpdateTime(_timeGetter.Now, timer.Time); } foreach (var timer in timers.ExitTimers) { enterExitsLunch[timer.Date.DayOfWeek][1] = _timeBuilder.UpdateTime(_timeGetter.Now, timer.Time); } var chartSerie = new ChartSerie <double?>(); foreach (var dayOfWeek in _timeBuilder.GetDayOfWeeks()) { var enterExitLunch = enterExitsLunch[dayOfWeek]; var enterExitLunchExtremes = CalculateExtremes(enterExitLunch); if (enterExitLunchExtremes.Item1.HasValue && enterExitLunchExtremes.Item2.HasValue) { var enterExitLunchDiff = (enterExitLunchExtremes.Item2.Value - enterExitLunchExtremes.Item1.Value); chartSerie.data.Add(enterExitLunchDiff.Hours + (enterExitLunchDiff.Minutes / 100d)); } else { chartSerie.data.Add(null); } } return(chartSerie); }