Пример #1
0
        public async Task <JsonResult> GetPositionByDate(string vehicleId, DateTime start, DateTime?end)
        {
            var id = Guid.Parse(vehicleId);
            // var endPeriod = DateTime.Now;
            var endPeriod = end?.ToUniversalTime() ?? start.Date.AddDays(1).AddTicks(-1).ToUniversalTime();
            var vehicle   = await ObjectContext.Vehicles.FindAsync(id).ConfigureAwait(false);

            var user = await ObjectContext.UserAccounts
                       .FirstOrDefaultAsync(x => x.UserName == User.Identity.Name).ConfigureAwait(false);

            var positions = await _positionService
                            .GetVehiclePositionsByPeriodAsync(id, start.ToUniversalTime(), endPeriod, user?.TimeZoneInfo)
                            .ConfigureAwait(false);

            if (!positions.Any())
            {
                return(Json(new List <TargetViewModel>(), JsonRequestBehavior.AllowGet));
            }
            var gpsCollection = positions.OrderBy(x => x.Timestamp)
                                .Select(x => new { Latitude = x.Lat, Longitude = x.Long, GpsStatement = x.Timestamp.ToString("O") });
            var positionReport = new ActivitiesReport();
            var result         = positionReport.BuildDailyReport(positions.OrderBy(x => x.Timestamp).ToList(), start,
                                                                 vehicle.VehicleName);
            var distance = result.Where(x => x.MotionStatus == "Moving").Sum(x => x.Distance);

            return(Json(
                       new
            {
                Vehiclename = vehicle?.VehicleName, Distance = Math.Round(distance, 2), Periods = result,
                GpsCollection = gpsCollection.Distinct()
            }, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="vehicleId"></param>
        /// <returns></returns>
        public async Task <JsonResult> GetCurrentDayPosition(string vehicleId)
        {
            var id = Guid.Parse(vehicleId);
            //var start =
            var endPeriod   = DateTime.Now.ToUniversalTime();
            var startPeriod = DateTime.Now.Date.ToUniversalTime();
            var vehicle     = await _vehicleService.GetVehicleByIdAsync(id).ConfigureAwait(false);

            var positions = await _positionService.GetVehiclePositionsByPeriodAsync(id, startPeriod, endPeriod).ConfigureAwait(false);

            if (!positions.Any())
            {
                return(Json(new List <TargetViewModel>(), JsonRequestBehavior.AllowGet));
            }
            var gpsCollection = positions.Select(x =>
                                                 new { Latitude = x.Lat, Longitude = x.Long, GpsStatement = x.Timestamp.ToString("O") });
            var positionReport = new ActivitiesReport();

            return(Json(new { Periods = positionReport.BuildDailyReport(positions, startPeriod, vehicle.VehicleName), GpsCollection = gpsCollection }, JsonRequestBehavior.AllowGet));
        }