Ejemplo n.º 1
0
        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));
        }