Пример #1
0
        public async Task StopTracking(string code)
        {
            Guid sessionId;

            // Get current user id
            var userId = HttpContextHelper.GetCurrentUserId();
        }
Пример #2
0
        public async Task StartTracking(string code)
        {
            // Get current user id
            var userId = HttpContextHelper.GetCurrentUserId();

            // Get vehicle by code
            var getUserVehicleQuery = _serviceProvider.GetRequiredService <GetUserVehicleQuery>();
            var vehicle             = await getUserVehicleQuery.Execute(new GetUserVehicleViewModel()
            {
                UserId = userId,
                Code   = code
            });

            var command = new CreateSessionCommand()
            {
                Id        = Guid.NewGuid(),
                UserId    = vehicle.UserId,
                VehicleId = vehicle.Id
            };

            // Create new session
            var createSessionCommandHandler = _serviceProvider.GetRequiredService <CreateSessionCommandHandler>();
            await createSessionCommandHandler.Handle(command);

            // Store this session to cache
            await _cacheService.Store <TrackingSession>(Schema.SESSION_SCHEMA, $"{vehicle.UserId.ToString()}_{vehicle.Code}",
                                                        new TrackingSession()
            {
                SessionId = command.Id,
                VehicleId = command.VehicleId
            });
        }
 /// <summary>
 /// Try to retrieve user id from httpcontext
 /// </summary>
 /// <returns></returns>
 private Guid GetCurrentUserId()
 {
     try
     {
         return(HttpContextHelper.GetCurrentUserId());
     }
     catch
     {
         return(Guid.Empty);
     }
 }
Пример #4
0
        public async Task ResignVehicle(ResignVehicleCommand command)
        {
            // Get current user id
            var userId = HttpContextHelper.GetCurrentUserId();

            // Set user id
            command.UserId = userId;

            var resignVehicleCommandHandler = _serviceProvider.GetRequiredService <ResignVehicleCommandHandler>();
            await resignVehicleCommandHandler.Handle(command);
        }
        public async Task <VehicleViewModel> GetVehicleByCode(string code)
        {
            // Get current user id
            var userId = HttpContextHelper.GetCurrentUserId();

            // Get vehicle by code
            var getVehicleByCodeQuery = _serviceProvider.GetRequiredService <GetUserVehicleQuery>();

            return(await getVehicleByCodeQuery.Execute(new GetUserVehicleViewModel()
            {
                UserId = userId,
                Code = code
            }));
        }
Пример #6
0
        public async Task StopTracking(string code)
        {
            Guid sessionId;

            // Get current user id
            var userId = HttpContextHelper.GetCurrentUserId();

            // Remove this session from Redis cache
            var trackingSession = await _cacheService.GetAndRemove <TrackingSession>(Schema.SESSION_SCHEMA, $"{userId.ToString()}_{code}");

            if (trackingSession != null)
            {
                // Session id
                sessionId = trackingSession.SessionId;
            }
            else
            {
                // Get vehicle by code
                var getUserVehicleQuery = _serviceProvider.GetRequiredService <GetUserVehicleQuery>();
                var vehicle             = await getUserVehicleQuery.Execute(new GetUserVehicleViewModel()
                {
                    UserId = userId,
                    Code   = code
                });

                // Get session by vehicle id
                var getSesssionByVehicleIdQuery = _serviceProvider.GetRequiredService <GetSesssionByVehicleIdQuery>();
                var session = await getSesssionByVehicleIdQuery.Execute(vehicle.Id);

                // Session id
                sessionId = session.Id;
            }

            if (sessionId != Guid.Empty)
            {
                // Stop session
                var stopSessionCommandHandler = _serviceProvider.GetRequiredService <StopSessionCommandHandler>();
                await stopSessionCommandHandler.Handle(sessionId);
            }
        }
Пример #7
0
        public async Task UpdateLocation(UpdateLocationModel model)
        {
            // Get current user id
            var userId = HttpContextHelper.GetCurrentUserId();

            // Get tracking session from Redis cache
            var session = await _cacheService.Get <TrackingSession>(Schema.SESSION_SCHEMA, $"{userId.ToString()}_{model.Code}");

            if (session == null)
            {
                throw new CustomException(ErrorCodes.EC_Session_002, model.Code);
            }

            // Update location
            var updateLocationCommandHandler = _serviceProvider.GetRequiredService <UpdateLocationCommandHandler>();
            await updateLocationCommandHandler.Handle(new UpdateLocationCommand()
            {
                SessionId = session.SessionId,
                Longitude = model.Longitude,
                Latitude  = model.Latitude
            });
        }