public override WebSocketMessage ProcessMessage(WebSocketMessage model) { using (var dbContext = new LynexDbContext()) { var site = dbContext.Set <Site>().Find(SiteId); if (site != null) { var switches = new List <SimplifiedSwitchModel>(); foreach (var @switch in site.Switches.OrderBy(q => q.Order)) { var switchModel = new SimplifiedSwitchModel(@switch); foreach (var schedule in @switch.Schedules) { switchModel.ScheduleViewModels.Add(new ScheduleViewModel(schedule)); } switches.Add(switchModel); } model.Message = switches; model.BroadcastType = WebSocketBroadcastType.All; } else { model.Type = WebSocketMessageType.Error; model.Message = "Site does not exist"; model.BroadcastType = WebSocketBroadcastType.Pi; } } return(model); }
protected override string ProcessMessage(SiteStatusModel model) { var result = new WebSocketResultViewModel(); using (var dbContext = new LynexDbContext()) { var site = dbContext.Set <Site>().Find(SiteId); if (site != null) { result.StatusCode = 110; result.Message = "Success"; var switches = new List <SimplifiedSwitchModel>(); foreach (var @switch in site.Switches.OrderBy(q => q.Order)) { switches.Add(new SimplifiedSwitchModel(@switch)); } result.Result = switches; } else { result.StatusCode = 500; result.Message = "Site does not exist"; } } return(JsonConvert.SerializeObject(result)); }
public override WebSocketMessage ProcessMessage(WebSocketMessage model) { if (model.Message != null) { using (var dbContext = new LynexDbContext()) { foreach (var switchModel in model.Message) { var @switch = dbContext.Set <Switch>().Find(switchModel.Id.ToString()); if (@switch != null) { @switch.Live = (bool)switchModel.Live; dbContext.Entry(@switch).State = EntityState.Modified; dbContext.Set <Switch>().Attach(@switch); dbContext.Entry(@switch).Property("Live").IsModified = true; model.BroadcastType = WebSocketBroadcastType.Web; } } dbContext.SaveChanges(); model.BroadcastType = WebSocketBroadcastType.Web; } } else { model.Type = WebSocketMessageType.Error; model.Message = "Live switches is null"; model.BroadcastType = WebSocketBroadcastType.Pi; } return(model); }
protected override string ProcessMessage(SwitchUpdatedModel model) { var result = new WebSocketResultViewModel(); if (model.ChipId != null) { using (var dbContext = new LynexDbContext()) { var site = dbContext.Set <Site>().Find(SiteId); if (site != null) { var items = dbContext.Set <SwitchEvent>() .Where( q => q.SiteId == site.Id && q.Switch.ChipId == model.ChipId && q.Status == model.Status).ToList(); dbContext.Set <SwitchEvent>().RemoveRange(items); var @switch = dbContext .Set <Switch>().FirstOrDefault(q => q.ChipId == model.ChipId && q.SiteId == site.Id); if (@switch != null) { @switch.Status = model.Status; dbContext.Entry(@switch).State = EntityState.Modified; dbContext.Set <Switch>().Attach(@switch); dbContext.Entry(@switch).Property("Status").IsModified = true; result.Message = "Success"; result.StatusCode = 200; result.Result = new SimplifiedSwitchModel(@switch); dbContext.SaveChanges(); } else { result.StatusCode = 500; result.Message = "Switch does not exist"; } } else { result.StatusCode = 500; result.Message = "Site does not exist"; } } } else { result.StatusCode = 600; result.Message = "Invalid Request"; } return(JsonConvert.SerializeObject(result)); }
protected override string ProcessMessage(PiAuthenticationModel model) { var result = new WebSocketResultViewModel(); if (model.SiteId == null || model.AuthType == null || model.RequestType == null || model.Rnd == null) { result.StatusCode = 600; result.Message = "Invalid Request"; } else if (model.RequestType != "auth") { result.StatusCode = 601; result.Message = "Not authenticated yet"; } else { using (var dbContext = new LynexDbContext()) { var site = dbContext.Set <Site>().Find(model.SiteId); if (site != null) { var queryStr = "authType=" + model.AuthType + "&requestType=" + model.RequestType + "&rnd=" + model.Rnd + "&siteId=" + model.SiteId + "&key=" + site.Secret; if (model.AuthType == "md5") { var calculatedMd5 = queryStr.GetMD5(); if (string.Equals(model.Code, calculatedMd5, StringComparison.CurrentCultureIgnoreCase)) { IsAuthenticated = true; result.StatusCode = 101; result.Message = "Success"; } else { result.StatusCode = 300; result.Message = "Authentication Failed"; } } else { result.StatusCode = 400; result.Message = "Unsupported authentication"; } } else { result.StatusCode = 500; result.Message = "Site does not exist"; } } } return(JsonConvert.SerializeObject(result)); }
public override WebSocketMessage ProcessMessage(WebSocketMessage model) { if (model.Message.SiteId == null || model.Message.AuthType == null || model.Message.RequestType == null || model.Message.Rnd == null) { model.Type = WebSocketMessageType.Error; model.Message = "Invalid Request"; } else if (model.Message.RequestType.ToString() != "auth") { model.Type = WebSocketMessageType.Error; model.Message = "Not authenticated yet"; } else { using (var dbContext = new LynexDbContext()) { string siteId = model.Message.SiteId.ToString(); var site = dbContext.Set <Site>().Find(siteId); if (site != null) { string queryStr = "authType=" + model.Message.AuthType + "&requestType=" + model.Message.RequestType + "&rnd=" + model.Message.Rnd + "&siteId=" + model.Message.SiteId + "&key=" + site.Secret; if (model.Message.AuthType.ToString() == "md5") { var calculatedMd5 = queryStr.GetMD5(); if (string.Equals(model.Message.Code.ToString(), calculatedMd5, StringComparison.CurrentCultureIgnoreCase)) { IsAuthenticated = true; model.Type = WebSocketMessageType.PiAuthentication; model.Message = "Success"; } else { model.Type = WebSocketMessageType.Error; model.Message = "Authentication Failed"; } } else { model.Type = WebSocketMessageType.Error; model.Message = "Unsupported authentication"; } } else { model.Type = WebSocketMessageType.Error; model.Message = "Site does not exist"; } } } return(model); }
public override WebSocketMessage ProcessMessage(WebSocketMessage model) { var updatingModel = model.Message; using (var dbContext = new LynexDbContext()) { var switchRepository = new SwtichRepository(dbContext); switchRepository.UpdateOrder(_userId, updatingModel.id.ToString(), (int)updatingModel.order); } model.BroadcastType = WebSocketBroadcastType.All; return(model); }
public override WebSocketMessage ProcessMessage(WebSocketMessage model) { var updatingSwitch = model.Message; using (var dbcontext = new LynexDbContext()) { var @switch = dbcontext.Set <Switch>().Find(updatingSwitch.id.ToString()); if (@switch != null) { @switch.Status = (bool)updatingSwitch.status; dbcontext.Entry(@switch).State = EntityState.Modified; dbcontext.Set <Switch>().Attach(@switch); dbcontext.Entry(@switch).Property("Status").IsModified = true; dbcontext.SaveChanges(); model.BroadcastType = WebSocketBroadcastType.All; } } return(model); }
public override WebSocketMessage ProcessMessage(WebSocketMessage model) { if (model.Message.SwitchId != null) { using (var dbContext = new LynexDbContext()) { var @switch = dbContext.Set <Switch>().Find(model.Message.SwitchId.ToString()); if (@switch != null) { @switch.Live = (bool)model.Message.Live; dbContext.Entry(@switch).State = EntityState.Modified; dbContext.Set <Switch>().Attach(@switch); dbContext.Entry(@switch).Property("Live").IsModified = true; dbContext.SaveChanges(); model.BroadcastType = WebSocketBroadcastType.Web; } else { model.Type = WebSocketMessageType.Error; model.Message = "Can not find Switch Id " + model.Message.SwitchId; model.BroadcastType = WebSocketBroadcastType.Pi; } } } else { model.Type = WebSocketMessageType.Error; model.Message = "Switch id cannot be null"; model.BroadcastType = WebSocketBroadcastType.Pi; } return(model); }
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; } } }
public override WebSocketMessage ProcessMessage(WebSocketMessage model) { if (model.Message.ChipId != null) { using (var dbContext = new LynexDbContext()) { var site = dbContext.Set<Site>().Find(SiteId); if (site != null) { var status = (bool)model.Message.Status; string chipId = model.Message.ChipId.ToString(); var items = dbContext.Set<SwitchEvent>() .Where( q => q.SiteId == site.Id && q.Switch.ChipId == chipId && q.Status == status).ToList(); dbContext.Set<SwitchEvent>().RemoveRange(items); var @switch = dbContext .Set<Switch>().FirstOrDefault(q => q.ChipId == chipId && q.SiteId == site.Id); if (@switch != null) { @switch.Status = status; dbContext.Entry(@switch).State = EntityState.Modified; dbContext.Set<Switch>().Attach(@switch); dbContext.Entry(@switch).Property("Status").IsModified = true; model.Message = new SimplifiedSwitchModel(@switch); model.BroadcastType = WebSocketBroadcastType.All; dbContext.SaveChanges(); } else { model.Type = WebSocketMessageType.Error; model.BroadcastType = WebSocketBroadcastType.Pi; model.Message = "Switch does not exist"; } } else { model.Type = WebSocketMessageType.Error; model.BroadcastType = WebSocketBroadcastType.Pi; model.Message = "Site does not exist"; } } } else { model.Type = WebSocketMessageType.Error; model.BroadcastType = WebSocketBroadcastType.Pi; model.Message = "Invalid Request"; } return model; }