예제 #1
0
 public TeltonikaHandler()
 {
     _semaphore               = new SemaphoreSlim(1, 4);
     DbContextScopeFactory    = DependencyRegistrar.ResolveDbContextScopeFactory();
     _reverseGeoCodingService = DependencyRegistrar.ResolveGeoCodeService();
     InitMapper();
 }
예제 #2
0
        public async Task Consume(ConsumeContext <TLGpsDataEvents> context)
        {
            if (SignalRHubManager.Clients == null)
            {
                return;
            }

            using (var dbContextScopeFactory = SignalRHubManager.DbContextScopeFactory.Create())
            {
                foreach (var @event in context.Message.Events)
                {
                    // get current gps device
                    var vehicleDto = await GetSenderBoxAsync(@event.Imei, dbContextScopeFactory).ConfigureAwait(false);

                    if (vehicleDto != null)
                    {
                        // set position
                        var lasPosition = await GetLastPositionAsync(vehicleDto.Id, dbContextScopeFactory).ConfigureAwait(false);

                        var position = new PositionViewModel(@event, vehicleDto, lasPosition);
                        if (string.IsNullOrEmpty(position.CustomerName))
                        {
                            return;
                        }
                        var reverseGeoCodingService = new ReverseGeoCodingService();
                        position.Address = await reverseGeoCodingService.ReverseGeocodeAsync(position.Latitude, position.Longitude).ConfigureAwait(false);

                        await SignalRHubManager.Clients.Group(position.CustomerName).receiveGpsStatements(position);
                    }
                }
            }
        }
예제 #3
0
 public DenormalizerHandler()
 {
     _geoCodingService      = new ReverseGeoCodingService();
     _dbContextScopeFactory = DependencyRegistrar.ResolveDbContextScopeFactory();
     _streamLock            = new ConcurrentDictionary <String, Semaphore>();
     _redisCache            = DependencyRegistrar.ResolveRedisCache();
 }
예제 #4
0
 public Program()
 {
     _bus = MassTransitConfig.ConfigureSenderBus();
     _reverseGeoCodingService = new ReverseGeoCodingService();
     _endpoint = _bus.GetSendEndpoint(new Uri(
                                          "rabbitmq://*****:*****@eagle.rmq.cloudamqp.com/zcckffbw/Teltonika.endpoint"));
 }
예제 #5
0
 public TeltonikaHandler(IMediator mediator, IMapper mapper, ReverseGeoCodingService reverseGeoCodingService)
 {
     _dbContext               = new ApplicationContext(ConfigHelper.DbContextOptionsBuilder.Options);
     this.mediator            = mediator;
     _mapper                  = mapper;
     _reverseGeoCodingService = reverseGeoCodingService;
     _semaphore               = new SemaphoreSlim(1, 1);
 }
예제 #6
0
        public Server()
        {
            _reverseGeoCodingService = new ReverseGeoCodingService();
            _bus = MassTransitConfig.ConfigureSenderBus();
            var connextion = ConfigurationManager.AppSettings["RabbitMqConnectionString"];

            _endpoint      = _bus.GetSendEndpoint(new Uri(connextion));
            _devicesParser = new DevicesParser();
        }
예제 #7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="positionRepository"></param>
 /// <param name="geoCodingService"></param>
 /// <param name="objectContext"></param>
 /// <param name="gpsDeviceRepository"></param>
 /// <param name="vehicleRepository"></param>
 public PositionService(IRepository <Position> positionRepository,
                        ReverseGeoCodingService geoCodingService,
                        SmartFleetObjectContext objectContext,
                        IRepository <Box> gpsDeviceRepository,
                        IRepository <Vehicle> vehicleRepository)
 {
     _positionRepository  = positionRepository;
     _geoCodingService    = geoCodingService;
     _objectContext       = objectContext;
     _gpsDeviceRepository = gpsDeviceRepository;
     _vehicleRepository   = vehicleRepository;
 }
예제 #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task Consume(ConsumeContext <CreateTk103Gps> context)
        {
            if (SignalRHubManager.Clients == null)
            {
                return;
            }
            var reverseGeoCodingService = new ReverseGeoCodingService();
            await reverseGeoCodingService.ReverseGeoCoding(context.Message);

            using (var dbContextScopeFactory = SignalRHubManager.DbContextScopeFactory.Create())
            {
                // get current gps device
                var box = await GetSenderBox(context.Message, dbContextScopeFactory);

                if (box != null)
                {
                    // set position
                    var position = new PositionViewModel(context.Message, box.Vehicle);
                    await SignalRHubManager.Clients.Group(position.CustomerName).receiveGpsStatements(position);
                }
            }
        }
예제 #9
0
 public DenormalizerHandler()
 {
     _semaphore             = new SemaphoreSlim(1, 1);
     _geoCodingService      = new ReverseGeoCodingService();
     _dbContextScopeFactory = DependencyRegistrar.ResolveDbContextScopeFactory();
 }
예제 #10
0
 public TeltonikaServer(IBusControl bus, ReverseGeoCodingService reverseGeoCodingService)
 {
     _bus = bus;
     _reverseGeoCodingService = reverseGeoCodingService;
     _endpoint = _bus.GetSendEndpoint(new Uri("rabbitmq://*****:*****@eagle.rmq.cloudamqp.com/zcckffbw/Teltonika.endpoint"));
 }
예제 #11
0
 public Tk103Handler()
 {
     _dbContextScopeFactory = Program.ResolveDbContextScopeFactory();
     _geoCodingService      = new ReverseGeoCodingService();
 }
예제 #12
0
 public TeltonikaedgeHandler()
 {
     _dbContextScopeFactory = Program.ResolveDbContextScopeFactory();
     _geoCodingService      = new ReverseGeoCodingService();
     Semaphore = new Semaphore(3, 3);
 }
예제 #13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="positionRepository"></param>
 /// <param name="geoCodingService"></param>
 /// <param name="objectContext"></param>
 /// <param name="gpsDeviceRepository"></param>
 /// <param name="vehicleRepository"></param>
 /// <param name="dbContextScopeFactory"></param>
 public PositionService(ReverseGeoCodingService geoCodingService, IDbContextScopeFactory dbContextScopeFactory)
 {
     _geoCodingService      = geoCodingService;
     _dbContextScopeFactory = dbContextScopeFactory;
 }
예제 #14
0
 public TeltonikaHandler()
 {
     DbContextScopeFactory    = DependencyRegistrar.ResolveDbContextScopeFactory();
     _reverseGeoCodingService = DependencyRegistrar.ResolveGeoCodeService();
     InitMapper();
 }
예제 #15
0
 public TeltonikaTcpServer(IBusControl bus, ReverseGeoCodingService reverseGeoCodingService)
 {
     _bus = bus;
 }