Exemple #1
0
        public async Task <JsonResult> GetPlanedRouteTrainsTable([FromBody] TimeRangeRequest timeRange)
        {
            await CheckPermission();

            var service = new ScheludePlanedService(_logger, _mapper);
            var result  = await service.PlanedRouteTrainsTable(timeRange.StartTime, timeRange.EndTime);

            result = result.OrderBy(x => int.Parse("0" + Regex.Match(x.Route.Name, "(\\d+)").Value))
                     .ThenBy(x => string.Join("_", x.RouteDays.Select(d => ((int)d).ToString()))).ToList();
            return(Json(result));
        }
        public async Task <IEnumerable <TimeRangeResponse> > TimeRangeQuery(TimeRangeRequest request)
        {
            return(await GetData("dbo.[TimeRangeQuery]",
                                 new List <SqlParameter>
            {
                new SqlParameter("@DateType", SqlDbType.VarChar)
                {
                    Value = request.DateType.ToString()
                },
                new SqlParameter("@FromDate", SqlDbType.VarChar)
                {
                    Value = request.FromDate.ToString(DateFormat)
                },
                new SqlParameter("@ToDate", SqlDbType.VarChar)
                {
                    Value = request.ToDate.ToString(DateFormat)
                },
                new SqlParameter("@DimensionType", SqlDbType.VarChar)
                {
                    Value = request.DimensionType.ToString()
                },
                new SqlParameter("@DimensionTypeValue", SqlDbType.Int)
                {
                    Value = request.DimensionTypeValue
                },
                new SqlParameter("@AggregateType", SqlDbType.VarChar)
                {
                    Value = request.AggregateType.ToString()
                },
                new SqlParameter("@DataPointType", SqlDbType.VarChar)
                {
                    Value = request.DataPointType.DataPointToField()
                }
            },
                                 reader =>
            {
                var mapped = new List <TimeRangeResponse>();
                while (reader.Read())
                {
                    mapped.Add(new TimeRangeResponse
                    {
                        DateType = (int)reader["DateType"],
                        DataPoint = (decimal)reader["DataPoint"]
                    });
                }

                return mapped;
            }
                                 ));
        }
Exemple #3
0
 public async Task <IActionResult> GetTimeRange(TimeRangeRequest request)
 {
     return(request.IsValid() ? (IActionResult)Json(await _dataContext.TimeRangeQuery(request)) : BadRequest());
 }
Exemple #4
0
        public async Task <IActionResult> GetActivityStatistics([FromRoute] string groupId, [FromQuery] TimeRangeRequest timeRangeRequest)
        {
            Result <List <TimeRangeStatisticsModel> > result = await _groupAdminDashboardService.GetActivityStatistics(
                groupId,
                timeRangeRequest);

            return(result.ToApiResult());
        }
Exemple #5
0
        public async Task <Result <List <TimeRangeStatisticsModel> > > GetRegistrationStatistics(string groupId, TimeRangeRequest timeRangeRequest)
        {
            ValidationResult validationResult = _timeRangeRequestValidator.Validate(timeRangeRequest);

            if (!validationResult.IsValid)
            {
                _logger.LogError($"Invalid {typeof(TimeRangeRequest).Name} model");
                return(Result.Fail <List <TimeRangeStatisticsModel> >(validationResult.ToResultError()));
            }

            IBaseSpecification <GroupUserEntity, DateTimeOffset> specification = SpecificationBuilder
                                                                                 .Create <GroupUserEntity>()
                                                                                 .Where(x => x.User._CreatedDate != null)
                                                                                 .Where(x => x.User._CreatedDate >= timeRangeRequest.From)
                                                                                 .Where(x => x.User._CreatedDate < timeRangeRequest.To)
                                                                                 .Where(x => x.GroupId == groupId)
                                                                                 .Select(x => x.User._CreatedDate.Value)
                                                                                 .Build();

            List <DateTimeOffset> dateTimes = await _groupUserStore.Get(specification);

            List <TimeRangeStatisticsModel> viewModel = dateTimes
                                                        .GroupBy(x => new { x.UtcDateTime.Year, x.UtcDateTime.Month, x.UtcDateTime.Day })
                                                        .Select(x => new TimeRangeStatisticsModel(
                                                                    dateTime: new DateTime(x.Key.Year, x.Key.Month, x.Key.Day, 0, 0, 0, DateTimeKind.Utc),
                                                                    value: x.Count()))
                                                        .ToList();

            DateTime dateTime = new DateTime(
                timeRangeRequest.From.UtcDateTime.Year,
                timeRangeRequest.From.UtcDateTime.Month,
                timeRangeRequest.From.UtcDateTime.Day,
                0,
                0,
                0,
                DateTimeKind.Utc);

            for (; dateTime < timeRangeRequest.To; dateTime = dateTime.AddDays(1))
            {
                bool exists = viewModel
                              .Where(x => x.DateTime == dateTime)
                              .Any();

                if (!exists)
                {
                    viewModel.Add(new TimeRangeStatisticsModel(
                                      dateTime: dateTime,
                                      value: 0));
                }
            }

            viewModel = viewModel
                        .OrderBy(x => x.DateTime)
                        .ToList();

            return(Result.Ok(viewModel));
        }