예제 #1
0
        public IActionResult Edit(SocketEditViewModel model)
        {
            bool isDeviceIdExist = _socketRepository.Sockets.Any(s => s.DeviceId == model.DeviceId &&
                                                                 s.SocketId != model.SocketId);

            if (isDeviceIdExist)
            {
                ModelState.AddModelError("", "This device id is already asigned!");
                return(View(model));
            }

            result = new Dictionary <string, bool?>
            {
                { model.DeviceId, null }
            };

            _mqttAppClient.SubscribeToMany(new string[] { "sockets/" + model.DeviceId });
            _mqttAppClient.Client.MqttMsgPublishReceived += AckReceived;
            _mqttAppClient.Publish(model.DeviceId, "Check");

            System.Threading.Thread.Sleep(1000);

            if (result[model.DeviceId] == null)
            {
                ModelState.AddModelError("", "Failed connection attempt, make shure that socket is connected!");
                return(View(model));
            }

            Socket socket = _mapper.Map <Socket>(model);

            _socketRepository.EditSocket(socket);
            _socketRepository.Savechanges();

            return(RedirectToAction("Index", "Socket"));
        }