private void AddSmc(SmcDto smc)
        {
            var topicAddress = AddDeviceToTopicList(smc.Serial, CommandDeviceType.Smc);
            var topic        = MakeTopicObject(topicAddress);

            _commandsMqttClient.Subscribe(topic);
        }
Ejemplo n.º 2
0
        public SmcTicketThread(SmcDto smcDto, ClientSettings clientSettings,
                               BrokerSettings brokerSettings, IMqttClientConfiguration mqttClientConfiguration,
                               IMqttClientMethods mqttClientMethods, Topic topic,
                               CommandRules commandRules, IEventService eventService, IForwarderSenderService forwarderSenderService)
        {
            Smc                             = smcDto;
            _eventService                   = eventService;
            _forwarderSenderService         = forwarderSenderService;
            Tickets                         = new ConcurrentPriorityQueue <TicketThreadObject>();
            _executingCommandSemaphore      = new SemaphoreSlim(1, 1);
            _waitingCommandMessageSemaphore = new SemaphoreSlim(1, 1);
            _answerSemaphore                = new SemaphoreSlim(1, 1);

            var localClientSettings = new ClientSettings
            {
                ClientId = clientSettings.ClientId, ClientName = clientSettings.ClientName
            };

            localClientSettings.ClientId   = localClientSettings.ClientId.Replace("serial", smcDto.Serial);
            localClientSettings.ClientName = localClientSettings.ClientName.Replace("serial", smcDto.Serial);
            localClientSettings.DebugMode  = clientSettings.DebugMode;
            localClientSettings.AutoReconnectDelayInSeconds = clientSettings.AutoReconnectDelayInSeconds;
            var localTopic = new Topic {
                Address = topic.Address, QoS = topic.QoS
            };

            localTopic.Address = localTopic.Address
                                 .Replace("{smc-or-meter}", CommandDeviceType.Smc.ToString().ToLower())
                                 .Replace("{serial}", smcDto.Serial);
            _mqttClient = new IoGMqttClient(localClientSettings, brokerSettings, mqttClientConfiguration,
                                            mqttClientMethods);
            _mqttClient.Subscribe(localTopic);
            _mqttClient.MessageReceivedHandler += ReceivedUpdate;
            _commandRules = commandRules;
        }
Ejemplo n.º 3
0
        public ForwarderMessage MakeSmcDeletionPackageForForwarder(SmcDto smcDto)
        {
            var forwarderMessage = new ForwarderMessage
            {
                MessageContent = "", //todo
                Uri            = _middlewares.EletraSmc.BaseUrl + _middlewares.EletraSmc.Smc.SubRoute + "?serial=" + smcDto.Serial
            };

            return(forwarderMessage);
        }
Ejemplo n.º 4
0
        public ForwarderMessage MakeSmcCreationPackageForForwarder(SmcDto smcDto)
        {
            var forwarderMessage = new ForwarderMessage
            {
                MessageContent = JsonConvert.SerializeObject(
                    new EletraSmcModels.SmcWithMeter {
                    SmcDto = _mapper.Map <SmcDto, EletraSmcModels.SmcDto>(smcDto)
                }),
                Uri = _middlewares.EletraSmc.BaseUrl + _middlewares.EletraSmc.Smc.SubRoute
            };

            return(forwarderMessage);
        }
Ejemplo n.º 5
0
        public SmcDto Update(SmcDto smcDto)
        {
            var smc      = _mapper.Map <SmcDto, Smc>(smcDto);
            var savedSmc = GetExistingSmc(smcDto.Serial);
            var smcModel = _smcModelService.GetExistingSmcModel(smcDto.SmcModel.Name);

            smc.SmcModel = smcModel;
            savedSmc.UpdateFields(smc);
            return(_mapper
                   .Map <Smc, SmcDto>(
                       _smcRepository.Update(savedSmc)
                       ));
        }
Ejemplo n.º 6
0
        public IActionResult GetBySerial([FromRoute] string serial)
        {
            SmcDto savedSmcDto = _smcService.GetBySerial(serial);

            if (savedSmcDto == null)
            {
                return(new NotFoundResult());
            }
            else
            {
                return(new OkObjectResult(savedSmcDto));
            }
        }
Ejemplo n.º 7
0
        private Smc CreateSmc(SmcDto smc, KeysDto keysDto)
        {
            smc.KeysDto  = keysDto;
            smc.SmcModel = _smcModelService.GetByName(smc.SmcModel.Name);
            var status = _smcForwarderService.ForwardCreation(smc);

            if (!status.IsSuccessStatusCode)
            {
                throw new BadRequestException(JsonConvert
                                              .DeserializeObject <ErrorMessageDto>(status.Content.ReadAsStringAsync().Result).ErrorMessage);
            }
            _smcService.Save(smc);
            return(_smcService.GetExistingSmc(smc.Serial));
        }
Ejemplo n.º 8
0
        public IActionResult Save(SmcDto smcDto)
        {
            SmcDto savedSmcDto = _smcService.Save(smcDto);

            _eventService.ASmcWasSavedEvent(this, new IoGServicedEventArgs <SmcDto>(savedSmcDto));
            return(new CreatedResult(
                       _servicesUtils
                       .CreateUri(
                           Request,
                           Url.RouteUrl(
                               "GetBySerialSmcRoute",
                               new { serial = savedSmcDto.Serial })),
                       savedSmcDto));
        }
Ejemplo n.º 9
0
 public HttpResponseMessage ForwardDeletion(SmcDto smcDto)
 {
     try
     {
         var middlewareService =
             _middlewareProviderService.GetSmcMiddlewareServiceByManufacturerName(smcDto.SmcModel.Manufacturer.Name);
         var convertedMessage = middlewareService.MakeSmcDeletionPackageForForwarder(smcDto);
         return(_forwarderSenderService.SendDelete(convertedMessage));
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         throw;
     }
 }
Ejemplo n.º 10
0
 public HttpResponseMessage ForwardCreation(SmcDto t)
 {
     try
     {
         var middlewareService =
             _middlewareProviderService.GetSmcMiddlewareServiceByManufacturerName(t.SmcModel.Manufacturer.Name);
         var convertedMessage = middlewareService.MakeSmcCreationPackageForForwarder(t);
         return(_forwarderSenderService.SendPost(convertedMessage).Result);
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         throw;
     }
 }
Ejemplo n.º 11
0
        public SmcDto Save(SmcDto smcDto)
        {
            var savedSmc = _smcRepository.GetBySerial(smcDto.Serial);
            var smc      = _mapper.Map <SmcDto, Smc>(smcDto);

            smc.SmcModel = _smcModelService.GetExistingSmcModel(smc.SmcModel.Name);
            if (savedSmc == null)
            {
                return(_mapper.Map <Smc, SmcDto>(_smcRepository.Save(smc)));
            }

            if (savedSmc.Active)
            {
                throw new ExistentEntityException("O smc de serial " + savedSmc.Serial + " já existe");
            }

            savedSmc.UpdateFields(smc);
            savedSmc.Active = true;
            return(_mapper.Map <Smc, SmcDto>(_smcRepository.Update(savedSmc)));
        }
Ejemplo n.º 12
0
 public async Task UpdateForAll(SmcDto smcDto)
 {
     await Clients.All.SendAsync("UpdateForAll", smcDto);
 }
Ejemplo n.º 13
0
 public SmcCommandManager(SmcDto smcDto)
 {
     _commandThreads = new List <CommandThread>();
     SmcDto          = smcDto;
 }
Ejemplo n.º 14
0
 public ForwarderMessage MakeSmcDeletionPackageForForwarder(SmcDto smcDto)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 15
0
        public IActionResult Update(SmcDto smcDto)
        {
            SmcDto updatedSmcDto = _smcService.Update(smcDto);

            return(new OkObjectResult(updatedSmcDto));
        }