Example #1
0
        public SimplifiedSiteModel GetSiteBySerialNumber(string siteId, string serialNumber)
        {
            var site = _siteRepository.Get(siteId);

            if (site != null)
            {
                if (site.SerialNumber != serialNumber)
                {
                    throw new LynexException(string.Format("Site {0} serial number does not match", siteId));
                }
                else
                {
                    var model = new SimplifiedSiteModel(site);

                    foreach (var @switch in site.Switches)
                    {
                        model.SwitchViewModels.Add(new SimplifiedSwitchModel(@switch));
                    }

                    return(model);
                }
            }
            throw new LynexException(string.Format("Site {0} does not exist", siteId));
        }
        private async Task ProcessWSMessage(AspNetWebSocketContext context)
        {
            var socket = context.WebSocket;


            while (true)
            {
                var buffer = new ArraySegment <byte>(new byte[1024]);
                var result = await socket.ReceiveAsync(
                    buffer, CancellationToken.None);

                if (socket.State == WebSocketState.Open)
                {
                    var userMessage = Encoding.UTF8.GetString(
                        buffer.Array, 0, result.Count);

                    try
                    {
                        var model = JsonConvert.DeserializeObject <SwitchEnquireModel>(userMessage);

                        using (var dbContext = new LynexDbContext())
                        {
                            var site = await dbContext.Set <Site>().FindAsync(model.SiteId);

                            var decryptedSerialNumber = _cryptoService.Decrypt(model.EncryptedSerialNumber, site.Secret);

                            if (decryptedSerialNumber == site.SerialNumber)
                            {
                                var siteModel = new SimplifiedSiteModel(site);

                                foreach (var @switch in site.Switches)
                                {
                                    siteModel.SwitchViewModels.Add(new SimplifiedSwitchModel(@switch));
                                }

                                userMessage = JsonConvert.SerializeObject(siteModel);
                            }
                            else
                            {
                                userMessage = "Serial Number does not match";
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        userMessage = "Does not support";
                    }



                    buffer = new ArraySegment <byte>(
                        Encoding.UTF8.GetBytes(userMessage));
                    await socket.SendAsync(
                        buffer, WebSocketMessageType.Text, true, CancellationToken.None);
                }
                else
                {
                    break;
                }
            }
        }