public async Task <IActionResult> Statistics(int projectId, [FromQuery] DateTime start, [FromQuery] DateTime?end, [FromQuery] List <string> groupBy) { var project = await _projects.GetProjectAsync(projectId); if (project == null) { return(NotFound()); } if (!await _authorizationService.AuthorizeAsync(User, project, "IsOwner")) { return(NotFound()); } TimeZoneInfo timeZone = _projects.GetTimeZone(project); var timers = _timers.GetTimersInInterval(project, start, end); IQueryable grouped = null; if (groupBy.Count != 0) { TimersGroupFlags groupByFlag = TimersGroupFlags.none; if (groupBy.Contains("day")) { groupByFlag |= TimersGroupFlags.day; } if (groupBy.Contains("month")) { groupByFlag |= TimersGroupFlags.month; } grouped = _timers.GroupTimers(timers, groupByFlag); } return(new OkObjectResult(grouped ?? timers)); }