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; } } }